pg-large-object
Version:
Large object support for PostgreSQL clients (node-postgres)
46 lines (38 loc) • 1.11 kB
JavaScript
;
var stream = require('stream');
/**
* @constructor
* @augments stream.Readable
* @exports pg-large-object/lib/ReadStream
*/
function ReadStream(largeObject, bufferSize)
{
stream.Readable.call(this, {
'highWaterMark': bufferSize || 16384,
'encoding': null,
'objectMode': false
});
this._largeObject = largeObject;
}
ReadStream.prototype = Object.create(stream.Readable.prototype);
ReadStream.prototype._read = function(length)
{
if (length <= 0)
{
throw "Illegal Argument";
}
this._largeObject.read(length, function(error, data)
{
if (error)
{
this.emit('error', error);
return;
}
this.push(data);
if (data.length < length)
{
this.push(null); // the large object has no more data left
}
}.bind(this));
};
module.exports = ReadStream;