function _connect(_, cb) { cb = once(cb); var client = fast.createClient(opts); client.on('connectAttempt', function (number, delay) { var level; if (number === 0) { level = 'info'; } else if (number < 5) { level = 'warn'; } else { level = 'error'; } log[level]({ host: opts.host, attempt: number, delay: delay }, 'connect attempted'); }); client.once('connect', function onConnect() { client.removeAllListeners('error'); cb(null, client); }); client.once('error', function onConnectError(err) { client.removeAllListeners('connect'); cb(err); }); }
create : function(callback) { var RPCclient = fast.createClient({host: host, port: parseInt(RPCport),retry:{retries:1},connectTimeout:500}); // parameter order: err, resource // new in 1.0.6 RPCclient.on('connect', function () { console.log('API ' + ' RPC@' + uri + '> Connected!'); callback(null, RPCclient); }); RPCclient.on('error', function (err) { console.log('TCP-RPC Pool Connection ' + ' RPC@' + host + ':'+ RPCport + '>',err); callback("connection Error"); }); },
ConnectionPool.prototype.addHost = function addHost(host) { if (this.closed) { return; } var self = this; var cRing = new Ring({ priorityFunc: leastRequestsPriority }); this.ring.add(host, cRing); cRing.on('online', function () { self.log.debug({host: host}, 'host online'); self.ring.activate(host); }); cRing.on('offline', function () { self.log.debug({host: host}, 'host offline'); self.ring.deactivate(host); }); // setup ring of connections for (var i = 0; i < this.max; i++) { var key = '' + i; // FIXME: tune defaults var client = fast.createClient({ host: host, port: this.port, connectTimeout: this.connectTimeout, retry: this.retry, reconnect: true }); client.log = this.log.child({ fastClient: host + '-' + i }); cRing.add(key, client); client.on('connect', cRing.activate.bind(cRing, key)); client.on('close', cRing.deactivate.bind(cRing, key)); client.on('error', this.emit.bind(this, 'error')); } };