@Override public boolean closeConnection(String connectionIdentifier, JID peer) { final String outID = toConnectionIDToken(connectionIdentifier, OUT, peer); final String inID = toConnectionIDToken(connectionIdentifier, IN, peer); final IByteStreamConnection out = connectionPool.remove(outID); final IByteStreamConnection in = connectionPool.remove(inID); boolean closed = false; if (out != null) { closed |= true; out.close(); LOG.debug("closed connection [pool id=" + outID + "]: " + out); } if (in != null) { closed |= true; in.close(); LOG.debug("closed connection [pool id=" + inID + "]: " + in); } return closed; }
@Override public void connectionChanged( final String connectionID, final JID peer, final IByteStreamConnection connection, final boolean incomingRequest) { // FIXME init first, than add to pool and finally start the receiver // thread ! final String id = toConnectionIDToken(connectionID, incomingRequest ? IN : OUT, peer); LOG.debug( "bytestream connection changed " + connection + ", inc=" + incomingRequest + ", pool id=" + id + "]"); /* * this may return the current connection if the pool is closed so * close it anyway */ final IByteStreamConnection current = connectionPool.add(id, connection); if (current != null) { current.close(); if (current == connection) { LOG.warn( "closed connection [pool id=" + id + "]: " + current + " , no connections are currently allowed"); return; } else { LOG.warn( "existing connection [pool id=" + id + "] " + current + " was replaced with connection " + connection); } } connection.initialize(); }