123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /**
- * Expose `Client`.
- */
- module.exports = Client;
- /**
- * Initialize an rpc client with `sock`.
- *
- * @param {Socket} sock
- * @api public
- */
- function Client(sock) {
- if (typeof sock.format === 'function') sock.format('json');
- this.sock = sock;
- }
- /**
- * Invoke method `name` with args and invoke the
- * tailing callback function.
- *
- * @param {String} name
- * @param {Mixed} ...
- * @param {Function} fn
- * @api public
- */
- Client.prototype.call = function(name){
- var args = [].slice.call(arguments, 1, -1);
- var fn = arguments[arguments.length - 1];
- this.sock.send({
- type: 'call',
- method: name,
- args: args
- }, function(msg){
- if ('error' in msg) {
- var err = new Error(msg.error);
- err.stack = msg.stack || err.stack;
- fn(err);
- } else {
- msg.args.unshift(null);
- fn.apply(null, msg.args);
- }
- });
- };
- /**
- * Fetch the methods exposed and invoke `fn(err, methods)`.
- *
- * @param {Function} fn
- * @api public
- */
- Client.prototype.methods = function(fn){
- this.sock.send({
- type: 'methods'
- }, function(msg){
- fn(null, msg.methods);
- });
- };
|