@Override public void connectionDestroyed(final Object connectionID) { if (connections.remove(connectionID) != null) { listener.connectionDestroyed(connectionID); } }
@Override public void run() { listener.connectionException(connectionID, me); } }.start();
@Override public void connectionCreated(final ActiveMQComponent component, final Connection connection, final ProtocolManager protocol) { if (connections.putIfAbsent((String) connection.getID(), connection) != null) { throw ActiveMQMessageBundle.BUNDLE.connectionExists(connection.getID()); } listener.connectionCreated(component, connection, protocol); }
@Override public void connectionReadyForWrites(final Object connectionID, boolean ready) { NettyServerConnection conn = connections.get(connectionID); if (conn != null) { conn.fireReady(ready); } listener.connectionReadyForWrites(connectionID, ready); } }
@Override public void connectionCreated(final ActiveMQComponent component, final Connection connection, final ProtocolManager protocol) { if (connections.putIfAbsent(connection.getID(), (NettyServerConnection) connection) != null) { throw ActiveMQMessageBundle.BUNDLE.connectionExists(connection.getID()); } listener.connectionCreated(component, connection, protocol); }
@Override public void connectionDestroyed(final Object connectionID) { InVMConnection connection = (InVMConnection) connections.remove(connectionID); if (connection != null) { listener.connectionDestroyed(connectionID); // Execute on different thread after all the packets are sent, to avoid deadlocks connection.getExecutor().execute(new Runnable() { @Override public void run() { // Remove on the other side too connector.disconnect((String) connectionID); } }); } }
@Override public void connectionException(final Object connectionID, final ActiveMQException me) { listener.connectionException(connectionID, me); }
@Override public synchronized void stop() { if (!started) { return; } if (!paused) { InVMRegistry.instance.unregisterAcceptor(id); } for (Connection connection : connections.values()) { listener.connectionDestroyed(connection.getID()); } connections.clear(); if (notificationService != null) { TypedProperties props = new TypedProperties(); props.putSimpleStringProperty(new SimpleString("factory"), new SimpleString(InVMAcceptorFactory.class.getName())); props.putIntProperty(new SimpleString("id"), id); Notification notification = new Notification(null, CoreNotificationType.ACCEPTOR_STOPPED, props); try { notificationService.sendNotification(notification); } catch (Exception e) { ActiveMQServerLogger.LOGGER.failedToSendNotification(e); } } started = false; paused = false; }
listener.connectionDestroyed(connection.getID());