| '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) |
| }) |