testing/xpcshell/node-spdy/lib/spdy/zlib-pool.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/testing/xpcshell/node-spdy/lib/spdy/zlib-pool.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,58 @@
     1.4 +var zlibpool = exports,
     1.5 +    spdy = require('../spdy');
     1.6 +
     1.7 +//
     1.8 +// ### function Pool ()
     1.9 +// Zlib streams pool
    1.10 +//
    1.11 +function Pool() {
    1.12 +  this.pool = {
    1.13 +    'spdy/2': [],
    1.14 +    'spdy/3': []
    1.15 +  };
    1.16 +}
    1.17 +
    1.18 +//
    1.19 +// ### function create ()
    1.20 +// Returns instance of Pool
    1.21 +//
    1.22 +zlibpool.create = function create() {
    1.23 +  return new Pool();
    1.24 +};
    1.25 +
    1.26 +var x = 0;
    1.27 +//
    1.28 +// ### function get ()
    1.29 +// Returns pair from pool or a new one
    1.30 +//
    1.31 +Pool.prototype.get = function get(version, callback) {
    1.32 +  if (this.pool[version].length > 0) {
    1.33 +    return this.pool[version].pop();
    1.34 +  } else {
    1.35 +    var id = version.split('/', 2)[1];
    1.36 +
    1.37 +    return {
    1.38 +      version: version,
    1.39 +      deflate: spdy.utils.createDeflate(id),
    1.40 +      inflate: spdy.utils.createInflate(id)
    1.41 +    };
    1.42 +  }
    1.43 +};
    1.44 +
    1.45 +//
    1.46 +// ### function put (pair)
    1.47 +// Puts pair into pool
    1.48 +//
    1.49 +Pool.prototype.put = function put(pair) {
    1.50 +  var self = this,
    1.51 +      waiting = 2;
    1.52 +
    1.53 +  spdy.utils.resetZlibStream(pair.inflate, done);
    1.54 +  spdy.utils.resetZlibStream(pair.deflate, done);
    1.55 +
    1.56 +  function done() {
    1.57 +    if (--waiting === 0) {
    1.58 +      self.pool[pair.version].push(pair);
    1.59 +    }
    1.60 +  }
    1.61 +};

mercurial