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.
		
		
		
		
		
			
		
			
				
					56 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					56 lines
				
				1.2 KiB
			| 
											3 years ago
										 | /*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; |