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

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:413e2b061d9a
1 var zlibpool = exports,
2 spdy = require('../spdy');
3
4 //
5 // ### function Pool ()
6 // Zlib streams pool
7 //
8 function Pool() {
9 this.pool = {
10 'spdy/2': [],
11 'spdy/3': []
12 };
13 }
14
15 //
16 // ### function create ()
17 // Returns instance of Pool
18 //
19 zlibpool.create = function create() {
20 return new Pool();
21 };
22
23 var x = 0;
24 //
25 // ### function get ()
26 // Returns pair from pool or a new one
27 //
28 Pool.prototype.get = function get(version, callback) {
29 if (this.pool[version].length > 0) {
30 return this.pool[version].pop();
31 } else {
32 var id = version.split('/', 2)[1];
33
34 return {
35 version: version,
36 deflate: spdy.utils.createDeflate(id),
37 inflate: spdy.utils.createInflate(id)
38 };
39 }
40 };
41
42 //
43 // ### function put (pair)
44 // Puts pair into pool
45 //
46 Pool.prototype.put = function put(pair) {
47 var self = this,
48 waiting = 2;
49
50 spdy.utils.resetZlibStream(pair.inflate, done);
51 spdy.utils.resetZlibStream(pair.deflate, done);
52
53 function done() {
54 if (--waiting === 0) {
55 self.pool[pair.version].push(pair);
56 }
57 }
58 };

mercurial