Code files

This commit is contained in:
Akhil
2017-07-31 11:33:31 +05:30
parent 073a63ebdd
commit b9ae409ec0
801 changed files with 17535 additions and 0 deletions
@@ -0,0 +1,7 @@
'use strict'
const wiring = require('./wiring')
const service = require('./service')()
wiring(service)
@@ -0,0 +1,21 @@
{
"name": "adderservice",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "Peter Elger",
"license": "ISC",
"dependencies": {
"bloomrun": "^3.0.4",
"net-object-stream": "^2.0.0",
"pump": "^1.0.2",
"through2": "^2.0.3"
},
"devDependencies": {
"tap": "^10.3.1"
}
}
@@ -0,0 +1,13 @@
'use strict'
module.exports = service
function service () {
function add (args, cb) {
const {first, second} = args
const result = (parseInt(first, 10) + parseInt(second, 10))
cb(null, {result: result.toString()})
}
return { add }
}
@@ -0,0 +1,12 @@
var test = require('tap').test
var service = require('../service')()
test('test add', function (t) {
t.plan(2)
service.add({first: 1, second: 2}, function (err, result) {
t.equal(err, null)
t.equal(result, 3)
})
})
@@ -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')
}