You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*global module, process*/ var Buffer = require('safe-buffer').Buffer; var Stream = require('stream'); var util = require('util');
function DataStream(data) { this.buffer = null; this.writable = true; this.readable = true;
// No input
if (!data) { this.buffer = Buffer.alloc(0); return this; }
// Stream
if (typeof data.pipe === 'function') { this.buffer = Buffer.alloc(0); data.pipe(this); return this; }
// Buffer or String
// or Object (assumedly a passworded key)
if (data.length || typeof data === 'object') { this.buffer = data; this.writable = false; process.nextTick(function () { this.emit('end', data); this.readable = false; this.emit('close'); }.bind(this)); return this; }
throw new TypeError('Unexpected data type ('+ typeof data + ')'); } util.inherits(DataStream, Stream);
DataStream.prototype.write = function write(data) { this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]); this.emit('data', data); };
DataStream.prototype.end = function end(data) { if (data) this.write(data); this.emit('end', data); this.emit('close'); this.writable = false; this.readable = false; };
module.exports = DataStream;
|