michael@0: var spdy = require('../../lib/spdy'), michael@0: Buffer = require('buffer').Buffer; michael@0: michael@0: exports.createSynStream = function(host, url, callback) { michael@0: var deflate = spdy.utils.createDeflate(), michael@0: chunks = [], michael@0: chunksTotal = 0, michael@0: syn_stream; michael@0: michael@0: deflate.on('data', function(chunk) { michael@0: chunks.push(chunk); michael@0: chunksTotal += chunk.length; michael@0: }); michael@0: deflate.write(new Buffer([ 0x00, 0x02, 0x00, 0x04 ])); michael@0: deflate.write('host'); michael@0: deflate.write(new Buffer([ 0x00, host.length ])); michael@0: deflate.write(host); michael@0: deflate.write(new Buffer([ 0x00, 0x03 ])); michael@0: deflate.write('url'); michael@0: deflate.write(new Buffer([ 0x00, url.length ])); michael@0: deflate.write(url); michael@0: michael@0: deflate.flush(function() { michael@0: syn_stream = new Buffer(18 + chunksTotal); michael@0: syn_stream.writeUInt32BE(0x80020001, 0); michael@0: syn_stream.writeUInt32BE(chunksTotal + 8, 4); michael@0: syn_stream.writeUInt32BE(0x00000001, 8); michael@0: syn_stream.writeUInt32BE(0x00000000, 12); michael@0: michael@0: var offset = 18; michael@0: chunks.forEach(function(chunk) { michael@0: chunk.copy(syn_stream, offset); michael@0: offset += chunk.length; michael@0: }); michael@0: michael@0: callback(syn_stream); michael@0: }); michael@0: };