|
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 }; |