sys = require('sys'); assert = require('assert'); Client = require(__dirname+"/../lib/").Client; Parser = require(__dirname+"/../lib/").Parser; EventEmitter = require('events').EventEmitter; assert.same = function(actual, expected) { for(var key in expected) { assert.equal(actual[key], expected[key]); } }; assert.empty = function(actual) { assert.length(actual, 0); }; assert.length = function(actual, expectedLength) { assert.equal(actual.length, expectedLength); }; test = function(name, action) { for(var i = 0; i < test.tabout; i++) { name = ' ' + name; } test.tabout += 2; console.log(name); action(); test.tabout -= 2; }; test.tabout = 0; stringToHex = function(string) { var b = Buffer(string,'utf8'); var result = []; for(var i = 0; i < b.length; i++) { result.push(b[i]); } return result; }; hexToString = function(hexArray) { return new Buffer(hexArray).toString('utf8'); } BufferList = function() { this.buffers = []; }; BufferList.prototype.add = function(buffer, front) { this.buffers[front ? "unshift" : "push"](buffer); return this; }; BufferList.prototype.addInt16 = function(val, front) { return this.add(Buffer([(val >>> 8),(val >>> 0)]),front); }; BufferList.prototype.getByteLength = function(initial) { return this.buffers.reduce(function(previous, current){ return previous + current.length; },initial || 0); }; BufferList.prototype.addInt32 = function(val, first) { return this.add(Buffer([ (val >>> 24), (val >>> 16), (val >>> 8), (val >>> 0) ]),first); }; BufferList.prototype.addCString = function(val) { return this.add(Buffer(val + '\0','utf8')); }; BufferList.prototype.join = function(appendLength, char) { var length = this.getByteLength(); if(appendLength) { this.addInt32(length+4, true); return this.join(false, char); } if(char) { this.buffers.unshift(Buffer(char,'utf8')); length++; } var result = Buffer(length); var index = 0; this.buffers.forEach(function(buffer) { buffer.copy(result, index, 0); index += buffer.length; }); return result; }; BufferList.concat = function() { var total = new BufferList(); for(var i = 0; i < arguments.length; i++) { total.add(arguments[i]); } return total.join(); }; MemoryStream = function() { EventEmitter.call(this); this.packets = []; }; sys.inherits(MemoryStream, EventEmitter); var p = MemoryStream.prototype; p.write = function(packet) { this.packets.push(packet); };