Blame view

node_modules/worker-farm/lib/child/index.js 1.26 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  '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({ 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 (!$module) return $module = require(data.module)
    if (data == 'die') return process.exit(0)
    handle(data)
  })