@Override public void connectionCreated(final ActiveMQComponent component, final Connection connection, final ClientProtocolManager protocol) { if (connections.putIfAbsent(connection.getID(), connection) != null) { throw ActiveMQClientMessageBundle.BUNDLE.connectionExists(connection.getID()); } @SuppressWarnings("unchecked") final BaseConnectionLifeCycleListener<ClientProtocolManager> clientListener = (BaseConnectionLifeCycleListener<ClientProtocolManager>) listener; clientListener.connectionCreated(component, connection, protocol); }
@Override public void run() { listener.connectionDestroyed(connectionID); } });
@Override public void run() { listener.connectionException(connectionID, me); } });
@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { NettyConnection connection = (NettyConnection) connections.get(connectionID); if (connection != null) { connection.fireReady(ready); } listener.connectionReadyForWrites(connectionID, ready); }
@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { listener.connectionReadyForWrites(channelId(ctx.channel()), ctx.channel().isWritable()); }
@Override public void channelInactive(final ChannelHandlerContext ctx) throws Exception { synchronized (this) { if (active) { listenerExecutor.execute(() -> listener.connectionDestroyed(channelId(ctx.channel()))); active = false; } } super.channelInactive(ctx); }
@Override public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) throws Exception { if (!active) { return; } // We don't want to log this - since it is normal for this to happen during failover/reconnect // and we don't want to spew out stack traces in that event // The user has access to this exeception anyway via the ActiveMQException initial cause ActiveMQException me = new ActiveMQException(cause.getMessage()); me.initCause(cause); synchronized (listener) { try { listenerExecutor.execute(() -> listener.connectionException(channelId(ctx.channel()), me)); active = false; } catch (Exception ex) { ActiveMQClientLogger.LOGGER.errorCallingLifeCycleListener(ex); } } }
@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { NettyConnection connection = (NettyConnection) connections.get(connectionID); if (connection != null) { connection.fireReady(ready); } listener.connectionReadyForWrites(connectionID, ready); }
@Override public void connectionCreated(final ActiveMQComponent component, final Connection connection, final ClientProtocolManager protocol) { if (connections.putIfAbsent((String) connection.getID(), connection) != null) { throw ActiveMQMessageBundle.BUNDLE.connectionExists(connection.getID()); } //noinspection deprecation if (listener instanceof ConnectionLifeCycleListener) { listener.connectionCreated(component, connection, protocol.getName()); } else { listener.connectionCreated(component, connection, protocol); } }
@Override public synchronized void close() { if (channelClazz == null) { return; } if (batchFlusherFuture != null) { batchFlusherFuture.cancel(false); flusher.cancel(); flusher = null; batchFlusherFuture = null; } bootstrap = null; channelGroup.close().awaitUninterruptibly(); // Shutdown the EventLoopGroup if no new task was added for 100ms or if // 3000ms elapsed. group.shutdownGracefully(100, 3000, TimeUnit.MILLISECONDS); channelClazz = null; for (Connection connection : connections.values()) { listener.connectionDestroyed(connection.getID()); } connections.clear(); }
@Override public void run() { listener.connectionException(connectionID, me); } });
@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { NettyConnection connection = (NettyConnection) connections.get(connectionID); if (connection != null) { connection.fireReady(ready); } listener.connectionReadyForWrites(connectionID, ready); }
@Override public void connectionCreated(final ActiveMQComponent component, final Connection connection, final ClientProtocolManager protocol) { if (connections.putIfAbsent(connection.getID(), connection) != null) { throw ActiveMQClientMessageBundle.BUNDLE.connectionExists(connection.getID()); } @SuppressWarnings("unchecked") final BaseConnectionLifeCycleListener<ClientProtocolManager> clientListener = (BaseConnectionLifeCycleListener<ClientProtocolManager>) listener; clientListener.connectionCreated(component, connection, protocol); }
@Override public final void close() { if (closed) { return; } EventLoop eventLoop = channel.eventLoop(); boolean inEventLoop = eventLoop.inEventLoop(); //if we are in an event loop we need to close the channel after the writes have finished if (!inEventLoop) { closeChannel(channel, false); } else { eventLoop.execute(() -> { closeChannel(channel, true); }); } closed = true; listener.connectionDestroyed(getID()); }
@Override public void run() { listener.connectionException(connectionID, me); } });
@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { NettyConnection connection = (NettyConnection) connections.get(connectionID); if (connection != null) { connection.fireReady(ready); } listener.connectionReadyForWrites(connectionID, ready); }
@Override public void connectionCreated(final ActiveMQComponent component, final Connection connection, final ClientProtocolManager protocol) { if (connections.putIfAbsent(connection.getID(), connection) != null) { throw ActiveMQClientMessageBundle.BUNDLE.connectionExists(connection.getID()); } @SuppressWarnings("unchecked") final BaseConnectionLifeCycleListener<ClientProtocolManager> clientListener = (BaseConnectionLifeCycleListener<ClientProtocolManager>) listener; clientListener.connectionCreated(component, connection, protocol); }
@Override public void run() { listener.connectionDestroyed(connectionID); } });
@Override public void run() { listener.connectionException(connectionID, me); } });
@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { NettyConnection connection = (NettyConnection) connections.get(connectionID); if (connection != null) { connection.fireReady(ready); } listener.connectionReadyForWrites(connectionID, ready); }