async initialize
This commit is contained in:
parent
d7ea3e48bb
commit
b84c1dc178
21
bws.js
21
bws.js
|
@ -28,30 +28,35 @@ if (config.https) {
|
||||||
serverOpts.cert = fs.readFileSync(config.certificateFile || './ssl/certificate.pem');
|
serverOpts.cert = fs.readFileSync(config.certificateFile || './ssl/certificate.pem');
|
||||||
}
|
}
|
||||||
|
|
||||||
var start = function() {
|
var start = function(cb) {
|
||||||
var server;
|
var server;
|
||||||
|
|
||||||
if (config.cluster) {
|
if (config.cluster) {
|
||||||
server = sticky(clusterInstances, function() {
|
server = sticky(clusterInstances, function() {
|
||||||
var app = ExpressApp.start(config);
|
ExpressApp.start(config, function(err, app) {
|
||||||
var server = config.https ? serverModule.createServer(serverOpts, app) :
|
var server = config.https ? serverModule.createServer(serverOpts, app) :
|
||||||
serverModule.Server(app);
|
serverModule.Server(app);
|
||||||
WsApp.start(server, config);
|
WsApp.start(server, config);
|
||||||
return server;
|
return server;
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
return cb(server);
|
||||||
} else {
|
} else {
|
||||||
var app = ExpressApp.start(config);
|
ExpressApp.start(config, function(err, app) {
|
||||||
server = config.https ? serverModule.createServer(serverOpts, app) :
|
server = config.https ? serverModule.createServer(serverOpts, app) :
|
||||||
serverModule.Server(app);
|
serverModule.Server(app);
|
||||||
WsApp.start(server, config);
|
WsApp.start(server, config);
|
||||||
}
|
return cb(server);
|
||||||
server.listen(port, function(err) {
|
|
||||||
if (err) console.log('ERROR: ', err);
|
|
||||||
log.info('Bitcore Wallet Service running on port ' + port);
|
|
||||||
});
|
});
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (config.cluster && !config.lockOpts.lockerServer)
|
if (config.cluster && !config.lockOpts.lockerServer)
|
||||||
throw 'When running in cluster mode, locker server need to be configured';
|
throw 'When running in cluster mode, locker server need to be configured';
|
||||||
|
|
||||||
start();
|
start(function(server) {
|
||||||
|
server.listen(port, function(err) {
|
||||||
|
if (err) console.log('ERROR: ', err);
|
||||||
|
log.info('Bitcore Wallet Service running on port ' + port);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -22,11 +22,11 @@ var ExpressApp = function() {};
|
||||||
* @param opts.WalletService options for WalletService class
|
* @param opts.WalletService options for WalletService class
|
||||||
* @param opts.basePath
|
* @param opts.basePath
|
||||||
* @param opts.disableLogs
|
* @param opts.disableLogs
|
||||||
|
* @param {Callback} cb
|
||||||
*/
|
*/
|
||||||
ExpressApp.start = function(opts) {
|
ExpressApp.start = function(opts, cb) {
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
|
|
||||||
WalletService.initialize(opts);
|
|
||||||
var app = express();
|
var app = express();
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||||
|
@ -316,7 +316,10 @@ ExpressApp.start = function(opts) {
|
||||||
|
|
||||||
|
|
||||||
app.use(opts.basePath || '/bws/api', router);
|
app.use(opts.basePath || '/bws/api', router);
|
||||||
return app;
|
|
||||||
|
WalletService.initialize(opts, function(err) {
|
||||||
|
return cb(err,app);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = ExpressApp;
|
module.exports = ExpressApp;
|
||||||
|
|
|
@ -53,15 +53,44 @@ WalletService.onNotification = function(func) {
|
||||||
* @param {Object} opts
|
* @param {Object} opts
|
||||||
* @param {Storage} [opts.storage] - The storage provider.
|
* @param {Storage} [opts.storage] - The storage provider.
|
||||||
* @param {Storage} [opts.blockchainExplorer] - The blockchainExporer provider.
|
* @param {Storage} [opts.blockchainExplorer] - The blockchainExporer provider.
|
||||||
|
* @param {Callback} cb
|
||||||
*/
|
*/
|
||||||
WalletService.initialize = function(opts) {
|
WalletService.initialize = function(opts, cb) {
|
||||||
|
$.shouldBeFunction(cb);
|
||||||
|
|
||||||
|
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
lock = opts.lock || new Lock(opts.lockOpts);
|
lock = opts.lock || new Lock(opts.lockOpts);
|
||||||
// TODO: This method needs to be async
|
|
||||||
storage = opts.storage || new Storage().connect(opts.storageOpts, function() {});
|
|
||||||
blockchainExplorer = opts.blockchainExplorer;
|
blockchainExplorer = opts.blockchainExplorer;
|
||||||
blockchainExplorerOpts = opts.blockchainExplorerOpts;
|
blockchainExplorerOpts = opts.blockchainExplorerOpts;
|
||||||
|
|
||||||
|
if (initialized)
|
||||||
|
return cb();
|
||||||
|
|
||||||
|
if (opts.storage) {
|
||||||
|
storage = opts.storage;
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
return cb();
|
||||||
|
} else {
|
||||||
|
var newStorage = new Storage();
|
||||||
|
newStorage.connect(opts.storageOpts, function(err) {
|
||||||
|
if (err) return cb(err);
|
||||||
|
storage = newStorage;
|
||||||
|
initialized = true;
|
||||||
|
return cb();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
WalletService.shutDown = function(cb) {
|
||||||
|
if (initialized) {
|
||||||
|
storage.disconnect(function(err) {
|
||||||
|
if (err) return cb(err);
|
||||||
|
initialized = false;
|
||||||
|
return cb();
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
WalletService.getInstance = function() {
|
WalletService.getInstance = function() {
|
||||||
|
|
|
@ -29,7 +29,7 @@ Storage.prototype.connect = function(opts, cb) {
|
||||||
|
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
|
|
||||||
if (this.db) return cb();
|
if (this.db) return cb(null);
|
||||||
|
|
||||||
var config = opts.mongoDb || {};
|
var config = opts.mongoDb || {};
|
||||||
var url = 'mongodb://' + (config.host || 'localhost') + ':' + (config.port || 27017) + '/bws';
|
var url = 'mongodb://' + (config.host || 'localhost') + ':' + (config.port || 27017) + '/bws';
|
||||||
|
@ -40,6 +40,16 @@ Storage.prototype.connect = function(opts, cb) {
|
||||||
}
|
}
|
||||||
self.db = db;
|
self.db = db;
|
||||||
console.log('Connection established to ', url);
|
console.log('Connection established to ', url);
|
||||||
|
return cb(null);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Storage.prototype.disconnect = function(cb) {
|
||||||
|
var self = this;
|
||||||
|
this.db.close(true, function(err) {
|
||||||
|
if (err) return cb(err);
|
||||||
|
self.db = null;
|
||||||
return cb();
|
return cb();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -227,15 +227,6 @@ function resetDb(cb) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function closeDb(cb) {
|
|
||||||
if (!db) return cb();
|
|
||||||
db.close(true, function(err) {
|
|
||||||
should.not.exist(err);
|
|
||||||
db = null;
|
|
||||||
return cb();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
describe('Wallet service', function() {
|
describe('Wallet service', function() {
|
||||||
before(function(done) {
|
before(function(done) {
|
||||||
|
@ -249,21 +240,20 @@ describe('Wallet service', function() {
|
||||||
beforeEach(function(done) {
|
beforeEach(function(done) {
|
||||||
resetDb(function() {
|
resetDb(function() {
|
||||||
blockchainExplorer = sinon.stub();
|
blockchainExplorer = sinon.stub();
|
||||||
|
|
||||||
WalletService.initialize({
|
WalletService.initialize({
|
||||||
storage: storage,
|
storage: storage,
|
||||||
blockchainExplorer: blockchainExplorer,
|
blockchainExplorer: blockchainExplorer,
|
||||||
});
|
}, function() {
|
||||||
helpers.offset = 0;
|
helpers.offset = 0;
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
after(function(done) {
|
after(function(done) {
|
||||||
closeDb(done);
|
WalletService.shutDown(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#getInstanceWithAuth', function() {
|
describe('#getInstanceWithAuth', function() {
|
||||||
beforeEach(function() {});
|
|
||||||
|
|
||||||
it('should get server instance for existing copayer', function(done) {
|
it('should get server instance for existing copayer', function(done) {
|
||||||
|
|
||||||
|
@ -3066,21 +3056,20 @@ describe('Blockchain monitor', function() {
|
||||||
|
|
||||||
resetDb(function() {
|
resetDb(function() {
|
||||||
blockchainExplorer = sinon.stub();
|
blockchainExplorer = sinon.stub();
|
||||||
|
|
||||||
WalletService.initialize({
|
WalletService.initialize({
|
||||||
storage: storage,
|
storage: storage,
|
||||||
blockchainExplorer: blockchainExplorer,
|
blockchainExplorer: blockchainExplorer,
|
||||||
});
|
}, function() {
|
||||||
helpers.offset = 0;
|
helpers.offset = 0;
|
||||||
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
afterEach(function() {
|
afterEach(function() {
|
||||||
BlockchainMonitor.prototype._getAddressSubscriber.restore();
|
BlockchainMonitor.prototype._getAddressSubscriber.restore();
|
||||||
});
|
});
|
||||||
after(function(done) {
|
after(function(done) {
|
||||||
closeDb(done);
|
WalletService.shutDown(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should subscribe wallet', function(done) {
|
it('should subscribe wallet', function(done) {
|
||||||
|
|
Loading…
Reference in New Issue