D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
etb1lp46s9ed
/
washeet.softurecs.com
/
node_modules
/
pngjs
/
lib
/
Filename :
sync-reader.js
back
Copy
"use strict"; let SyncReader = (module.exports = function (buffer) { this._buffer = buffer; this._reads = []; }); SyncReader.prototype.read = function (length, callback) { this._reads.push({ length: Math.abs(length), // if length < 0 then at most this length allowLess: length < 0, func: callback, }); }; SyncReader.prototype.process = function () { // as long as there is any data and read requests while (this._reads.length > 0 && this._buffer.length) { let read = this._reads[0]; if ( this._buffer.length && (this._buffer.length >= read.length || read.allowLess) ) { // ok there is any data so that we can satisfy this request this._reads.shift(); // == read let buf = this._buffer; this._buffer = buf.slice(read.length); read.func.call(this, buf.slice(0, read.length)); } else { break; } } if (this._reads.length > 0) { throw new Error("There are some read requests waitng on finished stream"); } if (this._buffer.length > 0) { throw new Error("unrecognised content at end of stream"); } };