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