tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

script-change-transform-worker.js (1452B)


      1 function appendToBuffer(buffer, value) {
      2    const result = new ArrayBuffer(buffer.byteLength + 1);
      3    const byteResult = new Uint8Array(result);
      4    byteResult.set(new Uint8Array(buffer), 0);
      5    byteResult[buffer.byteLength] = value;
      6    return result;
      7 }
      8 
      9 onrtctransform = (event) => {
     10    const transformer = event.transformer;
     11 
     12    transformer.reader = transformer.readable.getReader();
     13    transformer.writer = transformer.writable.getWriter();
     14 
     15    function process(transformer)
     16    {
     17        transformer.reader.read().then(chunk => {
     18            if (chunk.done)
     19                return;
     20            if (transformer.options.name === 'sender1')
     21                chunk.value.data = appendToBuffer(chunk.value.data, 1);
     22            else if (transformer.options.name === 'sender2')
     23                chunk.value.data = appendToBuffer(chunk.value.data, 2);
     24            else {
     25                const value = new Uint8Array(chunk.value.data)[chunk.value.data.byteLength - 1];
     26                if (value !== 1 && value !== 2)
     27                    self.postMessage("unexpected value: " + value);
     28                else if (value === 2)
     29                    self.postMessage("got value 2");
     30                chunk.value.data = chunk.value.data.slice(0, chunk.value.data.byteLength - 1);
     31            }
     32            transformer.writer.write(chunk.value);
     33            process(transformer);
     34        });
     35    }
     36 
     37    process(transformer);
     38 };
     39 self.postMessage("registered");