@Override public void destroyConnection(final Connection connection) { if (connection == null) { return; } if (logger.isFinestEnabled()) { logger.finest("Destroying " + connection); } if (activeConnections.remove(connection)) { // this should not be needed; but some tests are using DroppingConnection which is not a // TcpIpConnection. if (connection instanceof TcpIpConnection) { ioThreadingModel.onConnectionRemoved((TcpIpConnection) connection); } } final Address endPoint = connection.getEndPoint(); if (endPoint != null) { connectionsInProgress.remove(endPoint); connectionsMap.remove(endPoint, connection); fireConnectionRemovedEvent(connection, endPoint); } if (connection.isAlive()) { connection.close(); closedCount.inc(); } }
TcpIpConnection newConnection(SocketChannelWrapper channel, Address endpoint) { TcpIpConnection connection = new TcpIpConnection(this, connectionIdGen.incrementAndGet(), channel, ioThreadingModel); connection.setEndPoint(endpoint); activeConnections.add(connection); acceptedSockets.remove(channel); connection.start(); ioThreadingModel.onConnectionAdded(connection); logger.info( "Established socket connection between " + channel.socket().getLocalSocketAddress() + " and " + channel.socket().getRemoteSocketAddress()); openedCount.inc(); return connection; }