mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-02-18 21:30:42 +00:00
62 lines
1.3 KiB
JavaScript
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);
|
|
}
|
|
};
|