Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

62 lines
1.3 KiB
JavaScript

var zlibpool = exports,
spdy = require('../spdy');
//
// ### function Pool (compression)
// #### @compression {Boolean} whether to enable compression
// Zlib streams pool
//
function Pool(compression) {
this.compression = compression;
this.pool = {
'spdy/2': [],
'spdy/3': [],
'spdy/3.1': []
};
}
//
// ### function create (compression)
// #### @compression {Boolean} whether to enable compression
// Returns instance of Pool
//
zlibpool.create = function create(compression) {
return new Pool(compression);
};
var x = 0;
//
// ### function get ()
// Returns pair from pool or a new one
//
Pool.prototype.get = function get(version, callback) {
if (this.pool[version].length > 0) {
return this.pool[version].pop();
} else {
var id = version.split('/', 2)[1];
return {
version: version,
deflate: spdy.utils.createDeflate(id, this.compression),
inflate: spdy.utils.createInflate(id)
};
}
};
//
// ### function put (pair)
// Puts pair into pool
//
Pool.prototype.put = function put(pair) {
var self = this,
waiting = 2;
spdy.utils.resetZlibStream(pair.inflate, done);
spdy.utils.resetZlibStream(pair.deflate, done);
function done() {
if (--waiting === 0)
self.pool[pair.version].push(pair);
}
};