2015-04-03 11:43:22 -07:00
|
|
|
var $ = require('preconditions').singleton();
|
2015-04-07 13:02:08 -07:00
|
|
|
var _ = require('lodash');
|
|
|
|
var LocalLock = require('./locallock');
|
|
|
|
var RemoteLock = require('locker');
|
2015-01-27 05:18:45 -08:00
|
|
|
|
2015-04-08 06:21:01 -07:00
|
|
|
function Lock(opts) {
|
|
|
|
this.lock = new LocalLock();
|
|
|
|
};
|
2015-01-27 05:18:45 -08:00
|
|
|
|
2015-04-07 13:02:08 -07:00
|
|
|
Lock.prototype.runLocked = function(token, cb, task) {
|
|
|
|
$.shouldBeDefined(token);
|
2015-01-27 05:18:45 -08:00
|
|
|
|
2015-04-08 06:21:01 -07:00
|
|
|
this.lock.locked(token, 2 * 1000, 10 * 60 * 1000, function(err, release) {
|
|
|
|
if (err) return cb(new Error('Wallet is locked'));
|
2015-04-07 13:02:08 -07:00
|
|
|
var _cb = function() {
|
|
|
|
cb.apply(null, arguments);
|
2015-04-08 06:21:01 -07:00
|
|
|
release();
|
2015-04-07 13:02:08 -07:00
|
|
|
};
|
|
|
|
task(_cb);
|
|
|
|
});
|
2015-01-27 05:18:45 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = Lock;
|