UNPKG

1.55 kBtext/coffeescriptView Raw
1Net = require('net')
2
3Base = require('../base')
4Connector = require('./connector')
5Publisher = require('./publisher')
6
7debug = Base.logger('polyglot_relay')
8
9SOCKET_CONFIG = null
10
11
12exports.start = (socketDef) ->
13 socketOpts = socketDef.split(':')
14 type = socketOpts.shift()
15 if type == 'unix'
16 startUnixSocket(socketOpts[0])
17 else
18 startTcpSocket(socketOpts[0], socketOpts[1])
19
20startTcpSocket = (host, port) ->
21 SOCKET_CONFIG = { allowHalfOpen: true, host: host, port: port }
22 startSocket()
23
24startUnixSocket = (socketPath) ->
25 SOCKET_CONFIG = { allowHalfOpen: true, path: socketPath }
26 startSocket()
27
28startSocket = ->
29 debug('start', SOCKET_CONFIG)
30 exportsInfoJson = ''
31 client = Net.connect SOCKET_CONFIG, ->
32 debug('connected to relay')
33 client.end(JSON.stringify({ IX_DIR: Base.env.IX_DIR }))
34 client.on 'data', (info) ->
35 exportsInfoJson += info.toString()
36 client.on 'end', ->
37 exportsInfo = JSON.parse(exportsInfoJson)
38 debug('exportsInfo', exportsInfo)
39 Publisher.publishExportsAndGetProxy(exportsInfo)
40 .then (data) ->
41 Connector.connectRelayToProxy(data)
42
43exports.invoker = (callData, cb_err_data) ->
44 debug('invoker', callData)
45 errDataJson = ''
46 relay = Net.connect SOCKET_CONFIG, ->
47 relay.end(JSON.stringify(callData))
48 relay.on 'data', (data) ->
49 errDataJson += data.toString()
50 relay.on 'end', ->
51 errData = JSON.parse(errDataJson)
52 debug('errData', errData)
53 cb_err_data(errData.err, errData.data)
54 relay.on 'error', (err) ->
55 debug('error', err)
56 cb_err_data(err)