Skip to content

Commit

Permalink
Immediate callback if wait time is zero, length getter for LockQueue
Browse files Browse the repository at this point in the history
  • Loading branch information
bobrik committed Jun 14, 2012
1 parent bf303ab commit bbad2ac
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
6 changes: 5 additions & 1 deletion lib/Lock.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
return true;
}

self.queue = self.manager.getQueue(self.getName());
if (wait == 0 && self.queue.length) {
return callback(new Error("Lock already acquired for " + self.getName()));
}

self.waitTimer = setTimeout(function() {
if (!self.acquired) {
self.release();
Expand All @@ -28,7 +33,6 @@
self.waitTimer = undefined;
}, wait);

self.queue = self.manager.getQueue(self.getName());
self.queue.push(self, function(error) {
if (self.waitTimer) {
clearTimeout(self.waitTimer);
Expand Down
10 changes: 8 additions & 2 deletions lib/LockQueue.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
(function(module) {
function LockQueue(name) {
this.name = name;
this.queue = [];
var self = this;

self.name = name;
self.queue = [];

self.__defineGetter__("length", function() {
return self.queue.length;
});
};

LockQueue.prototype.getName = function() {
Expand Down

0 comments on commit bbad2ac

Please sign in to comment.