| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- /**
 
-  * @file Simple wrapper for stream.Writable, used for sending binary data
 
-  */
 
- 'use strict'
 
- var util = require('util'),
 
- 	stream = require('stream'),
 
- 	frame = require('./frame')
 
- /**
 
-  * @class Represents the writable stream for binary frames
 
-  * @param {Connection} connection
 
-  * @param {number} minSize
 
-  */
 
- function OutStream(connection, minSize) {
 
- 	var that = this
 
- 	this.connection = connection
 
- 	this.minSize = minSize
 
- 	this.buffer = Buffer.alloc(0)
 
- 	this.hasSent = false // Indicates if any frame has been sent yet
 
- 	stream.Writable.call(this)
 
- 	this.on('finish', function () {
 
- 		if (that.connection.readyState === that.connection.OPEN) {
 
- 			// Ignore if not connected anymore
 
- 			that.connection.socket.write(frame.createBinaryFrame(that.buffer, !that.connection.server, !that.hasSent, true))
 
- 		}
 
- 		that.connection.outStream = null
 
- 	})
 
- }
 
- module.exports = OutStream
 
- util.inherits(OutStream, stream.Writable)
 
- /**
 
-  * @param {Buffer} chunk
 
-  * @param {string} encoding
 
-  * @param {Function} callback
 
-  * @private
 
-  */
 
- OutStream.prototype._write = function (chunk, encoding, callback) {
 
- 	var frameBuffer
 
- 	this.buffer = Buffer.concat([this.buffer, chunk], this.buffer.length + chunk.length)
 
- 	if (this.buffer.length >= this.minSize) {
 
- 		if (this.connection.readyState === this.connection.OPEN) {
 
- 			// Ignore if not connected anymore
 
- 			frameBuffer = frame.createBinaryFrame(this.buffer, !this.connection.server, !this.hasSent, false)
 
- 			this.connection.socket.write(frameBuffer, encoding, callback)
 
- 		}
 
- 		this.buffer = Buffer.alloc(0)
 
- 		this.hasSent = true
 
- 		if (this.connection.readyState !== this.connection.OPEN) {
 
- 			callback()
 
- 		}
 
- 	} else {
 
- 		callback()
 
- 	}
 
- }
 
 
  |