source: Dev/trunk/src/node_modules/q/queue.js @ 484

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
2var Q = require("./q");
3
4module.exports = Queue;
5function 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.