33 lines
665 B
JavaScript
33 lines
665 B
JavaScript
|
|
var rpc = require('./jsonrpc');
|
||
|
|
|
||
|
|
function Client(opts) {
|
||
|
|
this.rpc = new rpc.Client(opts);
|
||
|
|
};
|
||
|
|
|
||
|
|
Client.prototype.cmd = function() {
|
||
|
|
var args = [].slice.call(arguments);
|
||
|
|
var cmd = args.shift();
|
||
|
|
|
||
|
|
callRpc(cmd, args, this.rpc);
|
||
|
|
};
|
||
|
|
|
||
|
|
function callRpc (cmd, args, rpc) {
|
||
|
|
var fn = args[args.length - 1];
|
||
|
|
|
||
|
|
// If the last argument is a callback, pop it from the args list
|
||
|
|
if (typeof fn === 'function') {
|
||
|
|
args.pop();
|
||
|
|
} else {
|
||
|
|
fn = function () {};
|
||
|
|
}
|
||
|
|
|
||
|
|
rpc.call(cmd, args, function () {
|
||
|
|
var args = [].slice.call(arguments);
|
||
|
|
args.unshift(null);
|
||
|
|
fn.apply(this, args);
|
||
|
|
}, function(err) {
|
||
|
|
fn(err);
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
module.exports.Client = Client;
|