From 6f386cb159938dcf23d94a91f0ff49c7c26dfbde Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Thu, 8 Sep 2016 17:48:14 -0600 Subject: [PATCH] do less work when standalone --- master.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/master.js b/master.js index b07ea5b..d66de2b 100644 --- a/master.js +++ b/master.js @@ -26,16 +26,15 @@ function getMethods(inst, keys) { }); } -module.exports.create = function (opts) { - var PromiseA = opts.PromiseA || global.Promise || require('bluebird'); +function setup(opts) { var crypto = require('crypto'); - var inst = opts.instance; var methods = getMethods(opts.instance, opts.methods); var token = crypto.randomBytes(16).toString('hex'); var msgPrefix = 'cluster-rpc.' + opts.name; var rpcPrefix = msgPrefix + '.rpc'; var resultPrefix = msgPrefix + '.result'; var initPrefix = msgPrefix + '.init'; + var inst = opts.instance; opts.master = opts.master || require('./process/master').create(); @@ -87,9 +86,21 @@ module.exports.create = function (opts) { }); }); +} - opts._promise = PromiseA.resolve(inst); - opts._promise.addWorker = opts.master.addWorker; +module.exports.create = function (opts) { + var PromiseA = opts.PromiseA || global.Promise || require('bluebird'); + var init = false; + + opts._promise.addWorker = function (w) { + if (!init) { + init = true; + setup(); + } + return opts.master.addWorker(w); + }; + + opts._promise = PromiseA.resolve(opts.instance); return opts._promise; };