UNPKG

serf-rpc

Version:

A simple nodejs module for interacting with the Serf RPC protocol.

73 lines (61 loc) 1.52 kB
var _ = require("lodash"); var Network = require([__dirname, "network"].join("/")); var schemas = require([__dirname, "schema"].join("/")); var rpc = { seq: 0, network: null, connect: function(options, fn){ rpc.network = new Network(options); rpc.network.connect(function(err){ if(err) return fn(err); else{ rpc.handshake(function(err){ return fn(err); }); } }); }, send: function(command, body, fn){ var header_schema = schemas.header; var command_schema = schemas[command]; var data = []; data.push(_.defaults({ "Command": command, "Seq": rpc.seq }, header_schema)); if(!_.isFunction(body)) data.push(_.defaults(body, command_schema)); else fn = body; this.seq++; rpc.network.send(data, fn); }, commands: [ "event", "join", "leave", "members", "members-filtered", "stats", "tags", "stream", "stop", "monitor", "install-key", "use-key", "remove-key", "list-keys", "query", "respond", //not tested: "force-leave", "auth" ], handshake: function(fn){ rpc.send("handshake", {}, function(err, response){ return fn(err); }); } } module.exports = rpc;