Blame view

node_modules/q/queue.js 941 Bytes
f7563de62   Palak Handa   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  
  var Q = require("./q");
  
  module.exports = Queue;
  function Queue() {
      var ends = Q.defer();
      var closed = Q.defer();
      return {
          put: function (value) {
              var next = Q.defer();
              ends.resolve({
                  head: value,
                  tail: next.promise
              });
              ends.resolve = next.resolve;
          },
          get: function () {
              var result = ends.promise.get("head");
              ends.promise = ends.promise.get("tail");
              return result.fail(function (error) {
                  closed.resolve(error);
                  throw error;
              });
          },
          closed: closed.promise,
          close: function (error) {
              error = error || new Error("Can't get value from closed queue");
              var end = {head: Q.reject(error)};
              end.tail = end;
              ends.resolve(end);
              return closed.promise;
          }
      };
  }