UNPKG

@owstack/wallet-service

Version:

A service for multisignature HD wallets

46 lines (37 loc) 1.14 kB
'use strict'; var Errors = require('./errors/errordefinitions'); var LocalLock = require('./locallock'); var log = require('npmlog'); var RemoteLock = require('locker'); var $ = require('preconditions').singleton(); log.debug = log.verbose; log.disableColor(); class Lock { constructor(opts) { opts = opts || {}; if (opts.lockerServer) { this.lock = new RemoteLock(opts.lockerServer.port, opts.lockerServer.host); log.info('Using locker server:' + opts.lockerServer.host + ':' + opts.lockerServer.port); this.lock.on('reset', function() { log.debug('Locker server reset'); }); this.lock.on('error', function(error) { log.error('Locker server threw error', error); }); } else { this.lock = new LocalLock(); } } }; Lock.prototype.runLocked = function(token, cb, task) { $.shouldBeDefined(token); this.lock.locked(token, 5 * 1000, 5 * 60 * 1000, function(err, release) { if (err) return cb(Errors.WALLET_LOCKED); var _cb = function() { cb.apply(null, arguments); release(); }; task(_cb); }); }; module.exports = Lock;