Files
tubestation/testing/xpcshell/node-spdy/lib/spdy/zlib-pool.js
2012-05-21 12:12:37 +01:00

57 lines
1.1 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
var zlibpool = exports,
spdy = require('../spdy');
//
// ### function Pool ()
// Zlib streams pool
//
function Pool() {
this.pool = [];
}
//
// ### function create ()
// Returns instance of Pool
//
zlibpool.create = function create() {
return new Pool();
};
var x = 0;
//
// ### function get ()
// Returns pair from pool or a new one
//
Pool.prototype.get = function get(callback) {
if (this.pool.length > 0) {
return this.pool.pop();
} else {
return {
deflate: spdy.utils.createDeflate(),
inflate: spdy.utils.createInflate()
};
}
};
//
// ### 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.push(pair);
}
}
};