Last change
on this file since 484 was
484,
checked in by hendrikvanantwerpen, 11 years ago
|
Commit node_modules, to make checkouts and builds more deterministic.
|
File size:
941 bytes
|
Line | |
---|
1 | |
---|
2 | var Q = require("./q"); |
---|
3 | |
---|
4 | module.exports = Queue; |
---|
5 | function Queue() { |
---|
6 | var ends = Q.defer(); |
---|
7 | var closed = Q.defer(); |
---|
8 | return { |
---|
9 | put: function (value) { |
---|
10 | var next = Q.defer(); |
---|
11 | ends.resolve({ |
---|
12 | head: value, |
---|
13 | tail: next.promise |
---|
14 | }); |
---|
15 | ends.resolve = next.resolve; |
---|
16 | }, |
---|
17 | get: function () { |
---|
18 | var result = ends.promise.get("head"); |
---|
19 | ends.promise = ends.promise.get("tail"); |
---|
20 | return result.fail(function (error) { |
---|
21 | closed.resolve(error); |
---|
22 | throw error; |
---|
23 | }); |
---|
24 | }, |
---|
25 | closed: closed.promise, |
---|
26 | close: function (error) { |
---|
27 | error = error || new Error("Can't get value from closed queue"); |
---|
28 | var end = {head: Q.reject(error)}; |
---|
29 | end.tail = end; |
---|
30 | ends.resolve(end); |
---|
31 | return closed.promise; |
---|
32 | } |
---|
33 | }; |
---|
34 | } |
---|
35 | |
---|
Note: See
TracBrowser
for help on using the repository browser.