diff --git a/lib/client/connection_mgr.js b/lib/client/connection_mgr.js index 68e136e..286fe12 100644 --- a/lib/client/connection_mgr.js +++ b/lib/client/connection_mgr.js @@ -46,13 +46,25 @@ class ConnectionManager extends Base { * @return {Connection} 连接对象 */ get(address) { - const conn = this._connections.get(address.host); + const conn = this.doGetConn(address); if (conn && conn.isConnected) { return conn; } return null; } + doGetConn(address) { + return this._connections.get(address.host); + } + + doSetConn(address, conn) { + return this._connections.set(address.host, conn); + } + + doDeleteConn(address) { + this._connections.delete(address.host); + } + /** * 若不存在,则创建新的连接 * @@ -63,14 +75,14 @@ class ConnectionManager extends Base { */ async createAndGet(address, options, connectionClass) { connectionClass = connectionClass || this.options.connectionClass; - let conn = this._connections.get(address.host); + let conn = this.doGetConn(address); if (!conn) { conn = new connectionClass(Object.assign({ address, logger: this.logger, }, options)); - this._connections.set(address.host, conn); - conn.once('close', () => { this._connections.delete(address.host); }); + this.doSetConn(address, conn); + conn.once('close', () => { this.doDeleteConn(address); }); conn.once('error', err => { this.emit('error', err); }); } if (!conn.isConnected) { @@ -84,7 +96,7 @@ class ConnectionManager extends Base { } } catch (err) { this.logger.warn('[ConnectionManager] create connection: ' + address.href + ' failed, caused by ' + err.message); - this._connections.delete(address.host); + this.doDeleteConn(address); return null; } }