'use strict'
|
|
|
|
let $module
|
|
|
|
/*
|
|
let contextProto = this.context;
|
|
while (contextProto = Object.getPrototypeOf(contextProto)) {
|
|
completionGroups.push(Object.getOwnPropertyNames(contextProto));
|
|
}
|
|
*/
|
|
|
|
|
|
function handle (data) {
|
|
let idx = data.idx
|
|
, child = data.child
|
|
, method = data.method
|
|
, args = data.args
|
|
, callback = function () {
|
|
let _args = Array.prototype.slice.call(arguments)
|
|
if (_args[0] instanceof Error) {
|
|
let e = _args[0]
|
|
_args[0] = {
|
|
'$error' : '$error'
|
|
, 'type' : e.constructor.name
|
|
, 'message' : e.message
|
|
, 'stack' : e.stack
|
|
}
|
|
Object.keys(e).forEach(function(key) {
|
|
_args[0][key] = e[key]
|
|
})
|
|
}
|
|
process.send({ owner: 'farm', idx: idx, child: child, args: _args })
|
|
}
|
|
, exec
|
|
|
|
if (method == null && typeof $module == 'function')
|
|
exec = $module
|
|
else if (typeof $module[method] == 'function')
|
|
exec = $module[method]
|
|
|
|
if (!exec)
|
|
return console.error('NO SUCH METHOD:', method)
|
|
|
|
exec.apply(null, args.concat([ callback ]))
|
|
}
|
|
|
|
|
|
process.on('message', function (data) {
|
|
if (data.owner !== 'farm') {
|
|
return;
|
|
}
|
|
|
|
if (!$module) return $module = require(data.module)
|
|
if (data.event == 'die') return process.exit(0)
|
|
handle(data)
|
|
})
|