Code files
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
'use strict'
|
||||
|
||||
const net = require('net')
|
||||
const nos = require('net-object-stream')
|
||||
const through = require('through2')
|
||||
const pump = require('pump')
|
||||
const bloomrun = require('bloomrun')
|
||||
|
||||
const { ADDERSERVICE_SERVICE_PORT } = process.env
|
||||
|
||||
module.exports = wiring
|
||||
|
||||
function wiring (service) {
|
||||
const patterns = createPatternRoutes(service)
|
||||
const matcher = createMatcherStream(patterns)
|
||||
|
||||
const server = net.createServer((socket) => {
|
||||
socket = nos(socket)
|
||||
pump(socket, matcher, socket, failure)
|
||||
})
|
||||
|
||||
server.listen(ADDERSERVICE_SERVICE_PORT, '0.0.0.0', () => {
|
||||
console.log('server listening at', ADDERSERVICE_SERVICE_PORT)
|
||||
})
|
||||
}
|
||||
|
||||
function createPatternRoutes (service) {
|
||||
const patterns = bloomrun()
|
||||
|
||||
patterns.add({role: 'adder', cmd: 'add'}, service.add)
|
||||
|
||||
return patterns
|
||||
}
|
||||
|
||||
function createMatcherStream (patterns) {
|
||||
return through.obj((object, enc, cb) => {
|
||||
const match = patterns.lookup(object)
|
||||
if (match === null) {
|
||||
cb()
|
||||
return
|
||||
}
|
||||
match(object, (err, data) => {
|
||||
if (err) {
|
||||
cb(null, {status: 'error', err: err})
|
||||
return
|
||||
}
|
||||
cb(null, data)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function failure (err) {
|
||||
if (err) console.error('Server error', err)
|
||||
else console.error('Stream pipeline ended')
|
||||
}
|
||||
Reference in New Issue
Block a user