fingerprint-container-node-sdk
Advanced tools
Sorry, the diff of this file is not supported yet
+64
| var util = require('util'); | ||
| var _ = require('underscore'); | ||
| var Service = require('./service'); | ||
| var FLAG = require('./flag'); | ||
| function Client() { | ||
| Service.apply(this, arguments); | ||
| this.rpcs = []; | ||
| } | ||
| util.inherits(Client, Service); | ||
| Client.prototype.rpcRequest = function (serviceName, body, callback, timeout) { | ||
| var _me = this; | ||
| var msg = this._genMsg(serviceName, {flag: FLAG.RPC}); | ||
| Service.prototype.rpcRequest.call(this, body, msg); | ||
| var timer = setTimeout(function () { | ||
| var askId = msg.askId; | ||
| var rpcInfo = _.findWhere(_me.rpcs, {askId: askId}); | ||
| _me.rpcs.splice(rpcInfo.index, 1); | ||
| _me.emit('timeout', { | ||
| serviceName: serviceName, | ||
| body: body, | ||
| askId: askId | ||
| }); | ||
| }, timeout || 1500); | ||
| this.rpcs.push({ | ||
| askId: msg.askId, | ||
| callback: callback, | ||
| timer: timer, | ||
| index: this.rpcs.length | ||
| }); | ||
| }; | ||
| Client.prototype.destroy = function () { | ||
| Service.prototype.destroy.call(this); | ||
| this.rpcs = []; | ||
| }; | ||
| Client.prototype._onMessage = function (msg) { | ||
| var isCalled = Service.prototype._onMessage.call(this, msg); | ||
| if (isCalled) { | ||
| return; | ||
| } | ||
| var flag = msg.flag; | ||
| if (flag == FLAG.RPC_RES) { | ||
| var askId = msg.askId; | ||
| var rpcInfo = _.findWhere(this.rpcs, {askId: askId}); | ||
| if (rpcInfo == null) { | ||
| return; | ||
| } | ||
| clearTimeout(rpcInfo.timer); | ||
| rpcInfo.callback(msg.body); | ||
| this.rpcs.splice(rpcInfo.index, 1); | ||
| } | ||
| }; | ||
| module.exports = Client; | ||
+5
| module.exports = { | ||
| RPC: 0, | ||
| RPC_RES: 1, | ||
| EVENT: 2 | ||
| }; |
+8
| module.exports = { | ||
| Service: require('./service'), | ||
| Server: require('./server'), | ||
| Client: require('./client'), | ||
| Encoder: require('./encoder'), | ||
| Decoder: require('./decoder'), | ||
| Response: require('./response') | ||
| }; |
+17
| var FLAG = require('./flag'); | ||
| function Response(msg, server) { | ||
| this.msg = msg; | ||
| this._server = server; | ||
| } | ||
| Response.prototype.send = function (body) { | ||
| if (this.msg.flag != FLAG.RPC) { | ||
| return; | ||
| } | ||
| this.msg.flag = FLAG.RPC_RES; | ||
| this._server.rpcRequest(body, this.msg); | ||
| }; | ||
| module.exports = Response; |
+57
| var util = require('util'); | ||
| var crc32 = require('buffer-crc32'); | ||
| var _ = require('underscore'); | ||
| var Service = require('./service'); | ||
| var Response = require('./response'); | ||
| function Server() { | ||
| Service.apply(this, arguments); | ||
| this.accepts = {}; | ||
| this.acceptMap = {}; | ||
| } | ||
| util.inherits(Server, Service); | ||
| Server.prototype.addHandler = function (serviceName, callback, isBroadCast, isForce) { | ||
| this.acceptMap[crc32.unsigned(serviceName)] = serviceName; | ||
| this.accepts[serviceName] = { | ||
| callback: _.isFunction(callback) ? callback : noop, | ||
| broadcast: isBroadCast || false, | ||
| force: isForce || false | ||
| }; | ||
| }; | ||
| Server.prototype.removeHandler = function (serviceName) { | ||
| var crc32Name = crc32.unsigned(serviceName); | ||
| this.acceptMap[crc32Name] = null; | ||
| this.accepts[serviceName] = null; | ||
| delete this.acceptMap[crc32Name]; | ||
| delete this.accepts[serviceName]; | ||
| }; | ||
| Server.prototype.destroy = function () { | ||
| Service.prototype.destroy.call(this); | ||
| this.accepts = {}; | ||
| this.acceptMap = {}; | ||
| }; | ||
| Server.prototype._onMessage = function (msg) { | ||
| var isCalled = Service.prototype._onMessage.call(this, msg); | ||
| if (isCalled) { | ||
| return; | ||
| } | ||
| var serviceName = this.acceptMap[msg.service]; | ||
| if (serviceName == null) { | ||
| return; | ||
| } | ||
| var accept = this.accepts[serviceName]; | ||
| accept.callback(new Response(msg, this)); | ||
| }; | ||
| function noop() { | ||
| } | ||
| module.exports = Server; |
+125
| var assert = require('assert'); | ||
| var Client = require('../fpc').Client; | ||
| var Server = require('../fpc').Server; | ||
| var crc32 = require('buffer-crc32'); | ||
| var SERVICE_HOST = '172.16.50.46'; | ||
| var SERVICE_PORT = 9900; | ||
| describe('Client', function () { | ||
| var index = 0; | ||
| var serviceName = ''; | ||
| this.timeout(20 * 1000); | ||
| beforeEach(function () { | ||
| serviceName = 'unit_test_' + (index++); | ||
| }); | ||
| it('connect', function (done) { | ||
| var client = new Client(SERVICE_HOST, SERVICE_PORT); | ||
| client.on('connect', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('register', function (done) { | ||
| var client = new Client(SERVICE_HOST, SERVICE_PORT); | ||
| client.on('connect', function () { | ||
| client.register(); | ||
| }); | ||
| client.on('register', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('eventRequest', function (done) { | ||
| var server = new Server(SERVICE_HOST, SERVICE_PORT); | ||
| server.addHandler(serviceName, function (res) { | ||
| var body = res.msg.body; | ||
| if (body.name == serviceName) { | ||
| done(); | ||
| } | ||
| }); | ||
| server.on('connect', function () { | ||
| server.register(); | ||
| }); | ||
| server.on('register', function () { | ||
| var client = new Client(SERVICE_HOST, SERVICE_PORT); | ||
| client.on('connect', function () { | ||
| client.register(); | ||
| }); | ||
| client.on('register', function () { | ||
| client.eventRequest(serviceName, { | ||
| name: serviceName | ||
| }); | ||
| }); | ||
| }); | ||
| }); | ||
| it('rpcRequest', function (done) { | ||
| var server = new Server(SERVICE_HOST, SERVICE_PORT); | ||
| server.addHandler(serviceName, function (res) { | ||
| res.send({ | ||
| name: 'unit_test_1' | ||
| }); | ||
| }); | ||
| server.on('connect', function () { | ||
| server.register(); | ||
| }); | ||
| server.on('register', function () { | ||
| var client = new Client(SERVICE_HOST, SERVICE_PORT); | ||
| client.on('connect', function () { | ||
| client.register(); | ||
| }); | ||
| client.on('register', function () { | ||
| client.rpcRequest(serviceName, { | ||
| name: serviceName | ||
| }, function (body) { | ||
| if (body.name == "unit_test_1") { | ||
| done(); | ||
| } | ||
| }); | ||
| }); | ||
| }); | ||
| }); | ||
| it('rpcRequest timeout', function (done) { | ||
| var server = new Server(SERVICE_HOST, SERVICE_PORT); | ||
| server.addHandler(serviceName, function (res) { | ||
| setTimeout(function () { | ||
| res.send({ | ||
| name: 'unit_test_1' | ||
| }); | ||
| }, 2000); | ||
| }); | ||
| server.on('connect', function () { | ||
| server.register(); | ||
| }); | ||
| server.on('register', function () { | ||
| var client = new Client(SERVICE_HOST, SERVICE_PORT); | ||
| client.on('connect', function () { | ||
| client.register(); | ||
| }); | ||
| client.on('register', function () { | ||
| client.rpcRequest(serviceName, { | ||
| name: serviceName | ||
| }); | ||
| setTimeout(function () { | ||
| if (!client.rpcs.length) { | ||
| done(); | ||
| } | ||
| }, 4000); | ||
| }); | ||
| }); | ||
| }); | ||
| }); |
| var assert = require('assert'); | ||
| var Server = require('../fpc').Server; | ||
| var crc32 = require('buffer-crc32'); | ||
| var SERVICE_HOST = '172.16.50.46'; | ||
| var SERVICE_PORT = 9900; | ||
| var noop = function () { | ||
| // something to do... | ||
| }; | ||
| describe('Server', function () { | ||
| var index = 0; | ||
| var serviceName = ''; | ||
| this.timeout(5 * 1000); | ||
| beforeEach(function () { | ||
| serviceName = 'unit_test_' + (index++); | ||
| }); | ||
| it('connect', function (done) { | ||
| var server = new Server(SERVICE_HOST, SERVICE_PORT); | ||
| server.on('connect', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('register', function (done) { | ||
| var server = new Server(SERVICE_HOST, SERVICE_PORT); | ||
| server.on('connect', function () { | ||
| server.register(); | ||
| }); | ||
| server.on('register', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('addHandler', function (done) { | ||
| var server = new Server(SERVICE_HOST, SERVICE_PORT); | ||
| server.addHandler(serviceName, function () { | ||
| // something to do... | ||
| }); | ||
| server.on('connect', function () { | ||
| server.register(); | ||
| }); | ||
| server.on('register', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('removeHandler', function () { | ||
| var crc32Name = crc32.unsigned(serviceName); | ||
| var server = new Server(SERVICE_HOST, SERVICE_PORT); | ||
| server.addHandler(serviceName, noop); | ||
| server.removeHandler(serviceName, noop); | ||
| assert.equal(server.accepts[serviceName], null); | ||
| assert.equal(server.acceptMap[crc32Name], null); | ||
| }); | ||
| }); |
| require('./encoder'); | ||
| require('./decoder'); | ||
| require('./server'); | ||
| require('./client'); |
+7
-4
@@ -57,6 +57,7 @@ var util = require('util'); | ||
| while (true) { | ||
| var bufferItem = null; | ||
| var slicer = null; | ||
| var headerLen = 0; | ||
| var state = this.state; | ||
| //console.log(this.msg); | ||
| // 如果不是可选的字段,那么统一的进行处理(获取片段及长度判断) | ||
@@ -128,3 +129,4 @@ if (OPTION_STATE.indexOf(state) == -1) { | ||
| var offset = i * HEADER.ROUTER_LIST_ITEM; | ||
| var bufferItem = (slicer.readUInt32BE(offset) << 8) + slicer.readUInt32BE(offset + 4); | ||
| bufferItem = new Buffer(HEADER.ROUTER_LIST_ITEM); | ||
| slicer.copy(bufferItem, 0, offset, offset + HEADER.ROUTER_LIST_ITEM); | ||
| routersList.push(bufferItem); | ||
@@ -143,4 +145,5 @@ this.offset += HEADER.ROUTER_LIST_ITEM; | ||
| slicer = this.buffer.slice(this.offset, this.offset + HEADER.DSTPARAM); | ||
| this.msg.dstParam = (slicer.readUInt32BE(0) << 8) + slicer.readUInt32BE(4); | ||
| bufferItem = new Buffer(HEADER.DSTPARAM); | ||
| this.buffer.copy(bufferItem, 0, this.offset, this.offset + HEADER.DSTPARAM); | ||
| this.msg.dstParam = bufferItem; | ||
| this.offset += HEADER.DSTPARAM; | ||
@@ -147,0 +150,0 @@ this.state = STATE.BODY_PARSE; |
+4
-8
@@ -57,6 +57,4 @@ var Buffer = require('buffer').Buffer; | ||
| for (var i = 0, len = msg.routers; i < len; i++) { | ||
| var item = msg.routersList[i]; | ||
| buffer.writeUInt32BE(item >> 8, offset); | ||
| buffer.writeUInt32BE(item & 0x00ff, offset + 4); | ||
| offset += 8; | ||
| msg.routersList[i].copy(buffer, offset); | ||
| offset += 8 | ||
| } | ||
@@ -66,6 +64,4 @@ } | ||
| if (msg.dstMode > 0) { | ||
| var dstParam = msg.dstParam; | ||
| buffer.writeUInt32BE(dstParam >> 8, offset); | ||
| buffer.writeUInt32BE(dstParam & 0x00ff, offset + 4); | ||
| offset += 8; | ||
| msg.dstParam.copy(buffer, offset); | ||
| offset += 8 | ||
| } | ||
@@ -72,0 +68,0 @@ |
+5
-3
| { | ||
| "name": "fingerprint-container-node-sdk", | ||
| "version": "0.0.1", | ||
| "version": "0.0.2", | ||
| "description": "fingerprint container's sdk", | ||
| "main": "index.js", | ||
| "scripts": { | ||
| "test": "echo \"Error: no test specified\" && exit 1" | ||
| "test": "mocha ./test/test.js" | ||
| }, | ||
@@ -23,3 +23,5 @@ "repository": { | ||
| "underscore": "^1.8.3" | ||
| } | ||
| }, | ||
| "_from": "fingerprint-container-node-sdk@0.0.1", | ||
| "_resolved": "http://registry.npm.taobao.org/fingerprint-container-node-sdk/download/fingerprint-container-node-sdk-0.0.1.tgz" | ||
| } |
+16
-84
@@ -18,13 +18,8 @@ var util = require('util'); | ||
| var CRC32_CONTAINNER_COMM_REGISTER = crc32.unsigned(CONTAINNER_COMM_REGISTER); | ||
| var FLAG = { | ||
| RPC: 0, | ||
| RPC_RES: 1, | ||
| EVENT: 2 | ||
| }; | ||
| var FLAG = require('./flag'); | ||
| function Service(host, port) { | ||
| function Service(host, port, name) { | ||
| EventEmitter.call(this); | ||
| this.accepts = {}; | ||
| this.acceptMap = {}; | ||
| this.rpcs = []; | ||
| this.name = name; | ||
| this.rand = +new Date() % 65536; | ||
| this.closed = false; | ||
@@ -72,11 +67,5 @@ this.uniqid = 0; | ||
| macAddress = macInts[0] << 40 | | ||
| macInts[1] << 32 | | ||
| macInts[2] << 24 | | ||
| macInts[3] << 16 | | ||
| macInts[4] << 8 | | ||
| macInts[5]; | ||
| body.tag = macAddress | process.pid; | ||
| body.name = 'service_' + body.tag; | ||
| var pid = process.pid + _me.rand; | ||
| body.tag = Number('0x' + macInts.join('') + (pid % 65536).toString(16)); | ||
| body.name = _me.name || 'service_' + body.tag; | ||
| body.accepts = _.map(_me.accepts, function (val, key) { | ||
@@ -91,5 +80,4 @@ return { | ||
| }).then(function () { | ||
| var msg = _me.encoder.encode(body, _me.genMsg(CONTAINNER_COMM_REGISTER)); | ||
| var msg = _me.encoder.encode(body, _me._genMsg(CONTAINNER_COMM_REGISTER)); | ||
| _me.client.write(msg); | ||
| console.log(+new Date()); | ||
| }).fail(function (cont, error) { | ||
@@ -101,29 +89,9 @@ // TODO log error | ||
| Service.prototype.rpcRequest = function (serviceName, body, callback, timeout) { | ||
| var _me = this; | ||
| var msg = this.genMsg(serviceName, {flag: FLAG.RPC}); | ||
| Service.prototype.rpcRequest = function (body, msg) { | ||
| msg = this.encoder.encode(body, msg); | ||
| this.client.write(msg); | ||
| var timer = setTimeout(function () { | ||
| var askId = msg.askId; | ||
| var rpcInfo = _.findWhere(_me.rpcs, {askId: askId}); | ||
| _me.rpcs.splice(rpcInfo.index, 1); | ||
| _me.emit('timeout', { | ||
| serviceName: serviceName, | ||
| body: body, | ||
| askId: askId | ||
| }); | ||
| }, timeout || 1500); | ||
| this.rpcs.push({ | ||
| askId: msg.askId, | ||
| callback: callback, | ||
| timer: timer, | ||
| index: this.rpcs.length | ||
| }); | ||
| }; | ||
| Service.prototype.eventRequest = function (serviceName, body) { | ||
| var msg = this.genMsg(serviceName, {flag: FLAG.EVENT}); | ||
| var msg = this._genMsg(serviceName, {flag: FLAG.EVENT}); | ||
| msg = this.encoder.encode(body, msg); | ||
@@ -133,19 +101,2 @@ this.client.write(msg); | ||
| Service.prototype.addHandler = function (serviceName, callback, isBroadCast, isForce) { | ||
| this.acceptMap[crc32.unsigned(serviceName)] = serviceName; | ||
| this.accepts[serviceName] = { | ||
| callback: _.isFunction(callback) ? callback : noop, | ||
| broadcast: isBroadCast || false, | ||
| force: isForce || false | ||
| }; | ||
| }; | ||
| Service.prototype.removeHandler = function (serviceName) { | ||
| var crc32Name = crc32.unsigned(serviceName); | ||
| this.acceptMap[crc32Name] = null; | ||
| this.accepts[serviceName] = null; | ||
| delete this.acceptMap[crc32Name]; | ||
| delete this.accepts[serviceName]; | ||
| }; | ||
| Service.prototype.close = function () { | ||
@@ -175,3 +126,2 @@ if (!this.closed) { | ||
| Service.prototype._onDataHandler = function (buffer) { | ||
| console.log(buffer.length); | ||
| this.decoder.decode(buffer); | ||
@@ -187,30 +137,16 @@ }; | ||
| var body = msg.body; | ||
| var flag = msg.flag; | ||
| var isCalled = false; | ||
| if (serviceName == CRC32_CONTAINNER_COMM_PING) { | ||
| this.eventRequest(CONTAINNER_COMM_PING, body); | ||
| isCalled = true; | ||
| } else if (serviceName == CRC32_CONTAINNER_COMM_REGISTER) { | ||
| this.emit('register'); | ||
| } else if (flag == FLAG.RPC_RES) { | ||
| var askId = msg.askId; | ||
| var rpcInfo = _.findWhere(this.rpcs, {askId: askId}); | ||
| if (rpcInfo == null) { | ||
| return; | ||
| } | ||
| isCalled = true; | ||
| } | ||
| clearTimeout(rpcInfo.timer); | ||
| rpcInfo.callback(body); | ||
| this.rpcs.splice(rpcInfo.index, 1); | ||
| } else { | ||
| serviceName = this.acceptMap[serviceName]; | ||
| if (serviceName == null) { | ||
| return; | ||
| } | ||
| var accept = this.accepts[serviceName]; | ||
| accept.callback(body); | ||
| } | ||
| return isCalled; | ||
| }; | ||
| Service.prototype.genMsg = function (serviceName, opt) { | ||
| Service.prototype._genMsg = function (serviceName, opt) { | ||
| return _.extend({ | ||
@@ -224,7 +160,3 @@ service: crc32.unsigned(serviceName), | ||
| function noop() { | ||
| } | ||
| module.exports = Service; | ||
+3
-2
@@ -5,2 +5,3 @@ var assert = require("assert"); | ||
| var crc32 = require('buffer-crc32'); | ||
| var Buffer = require('buffer').Buffer; | ||
| var Encoder = require('../encoder'); | ||
@@ -25,4 +26,4 @@ var Decoder = require('../decoder'); | ||
| dstMode: 1, | ||
| routersList: [1, 2], | ||
| dstParam: 2, | ||
| routersList: [new Buffer(8), new Buffer(8)], | ||
| dstParam: new Buffer(8), | ||
| body: { | ||
@@ -29,0 +30,0 @@ name: 'UnitTest' |
+4
-3
| var assert = require("assert"); | ||
| var _ = require('underscore'); | ||
| var crc32 = require('buffer-crc32'); | ||
| var Encoder = require('../encoder'); | ||
| var Buffer = require('buffer').Buffer; | ||
| var Encoder = require('../fpc').Encoder; | ||
@@ -17,4 +18,4 @@ describe("Encoder", function () { | ||
| dstMode: 1, | ||
| routersList: [1, 2], | ||
| dstParam: 2, | ||
| routersList: [new Buffer(8), new Buffer(8)], | ||
| dstParam: new Buffer(8), | ||
| body: { | ||
@@ -21,0 +22,0 @@ name: 'UnitTest' |
-109
| var assert = require("assert"); | ||
| var crc32 = require('buffer-crc32'); | ||
| var Service = require('../service'); | ||
| var SERVICE_HOST = '172.16.50.46'; | ||
| var SERVICE_PORT = 9900; | ||
| var noop = function () { | ||
| // something to do... | ||
| }; | ||
| describe("Service", function () { | ||
| var index = 0; | ||
| var serviceName = ''; | ||
| this.timeout(5 * 1000); | ||
| beforeEach(function () { | ||
| serviceName = 'unit_test_' + (index++); | ||
| }); | ||
| it('connect', function (done) { | ||
| var service = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| service.on('connect', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('register', function (done) { | ||
| var service = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| service.on('connect', function () { | ||
| service.register(); | ||
| }); | ||
| service.on('register', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('addHandler', function (done) { | ||
| var service = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| service.addHandler(serviceName, function () { | ||
| // something to do... | ||
| }); | ||
| service.on('connect', function () { | ||
| service.register(); | ||
| }); | ||
| service.on('register', function () { | ||
| done(); | ||
| }); | ||
| }); | ||
| it('removeHandler', function () { | ||
| var crc32Name = crc32.unsigned(serviceName); | ||
| var service = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| service.addHandler(serviceName, noop); | ||
| service.removeHandler(serviceName, noop); | ||
| assert.equal(service.accepts[serviceName], null); | ||
| assert.equal(service.acceptMap[crc32Name], null); | ||
| }); | ||
| it('eventRequest', function (done) { | ||
| var service = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| service.addHandler(serviceName, function (body) { | ||
| if (body.name == serviceName) { | ||
| done(); | ||
| } | ||
| }); | ||
| service.on('connect', function () { | ||
| service.register(); | ||
| var caller = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| caller.on('connect', function () { | ||
| caller.register(); | ||
| }); | ||
| caller.on('register', function () { | ||
| caller.eventRequest(serviceName, { | ||
| name: serviceName | ||
| }); | ||
| }); | ||
| }); | ||
| }); | ||
| it('rpcRequest', function (done) { | ||
| var service = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| service.addHandler(serviceName, function (body) { | ||
| if (body.name == serviceName) { | ||
| done(); | ||
| } | ||
| }); | ||
| service.on('connect', function () { | ||
| service.register(); | ||
| var caller = new Service(SERVICE_HOST, SERVICE_PORT); | ||
| caller.on('connect', function () { | ||
| caller.register(); | ||
| }); | ||
| caller.on('register', function () { | ||
| caller.rpcRequest(serviceName, { | ||
| name: serviceName | ||
| }); | ||
| }); | ||
| }); | ||
| }) | ||
| }); |
Sorry, the diff of this file is not supported yet
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
29733
17.57%21
61.54%737
21.22%2
-33.33%