public static boolean isMessagePacket(Packet packet) { int type = packet.getType(); return type == PacketImpl.SESS_SEND || type == PacketImpl.SESS_SEND_LARGE || type == PacketImpl.SESS_RECEIVE_LARGE_MSG || type == PacketImpl.SESS_RECEIVE_MSG; }
@Override public void releaseCommunications() { sessionChannel.setTransferring(false); sessionChannel.unlock(); }
@Override public void cleanup() { sessionChannel.close(); // if the server is sending a disconnect // any pending blocked operation could hang without this sessionChannel.returnBlocking(); }
private void sendPacketWithoutLock(final Channel parameterChannel, final Packet packet) { packet.setChannelID(parameterChannel.getID()); Connection conn = parameterChannel.getConnection().getTransportConnection(); ActiveMQBuffer buffer = packet.encode(this.getCoreConnection()); conn.write(buffer, false, false); }
@Override public ClientSession.QueueQuery queueQuery(final SimpleString queueName) throws ActiveMQException { SessionQueueQueryResponseMessage response; if (sessionChannel.getConnection().isVersionBeforeAddressChange()) { SessionQueueQueryMessage request = new SessionQueueQueryMessage(queueName); response = (SessionQueueQueryResponseMessage) sessionChannel.sendBlocking(request, PacketImpl.SESS_QUEUEQUERY_RESP_V2); } else { SessionQueueQueryMessage request = new SessionQueueQueryMessage(queueName); response = (SessionQueueQueryResponseMessage) sessionChannel.sendBlocking(request, PacketImpl.SESS_QUEUEQUERY_RESP_V3); } return response.toQueueQuery(); }
@Override public void createAddress(SimpleString address, EnumSet<RoutingType> routingTypes, final boolean autoCreated) throws ActiveMQException { CreateAddressMessage request = new CreateAddressMessage(address, routingTypes, autoCreated, true); if (!sessionChannel.getConnection().isVersionBeforeAddressChange()) { sessionChannel.sendBlocking(request, PacketImpl.NULL_RESPONSE); } }
@Override public void simpleCommit(boolean block) throws ActiveMQException { if (block) { sessionChannel.sendBlocking(new PacketImpl(PacketImpl.SESS_COMMIT), PacketImpl.NULL_RESPONSE); } else { sessionChannel.sendBatched(new PacketImpl(PacketImpl.SESS_COMMIT)); } }
private void doBufferReceived(final Packet packet) { if (ChannelImpl.invokeInterceptors(packet, incomingInterceptors, this) != null) { return; } synchronized (transferLock) { final Channel channel = channels.get(packet.getChannelID()); if (channel != null) { channel.handlePacket(packet); } } }
@Override public void sessionClose() throws ActiveMQException { sessionChannel.sendBlocking(new SessionCloseMessage(), PacketImpl.NULL_RESPONSE); }
private void forceReturnChannel1(ActiveMQException cause) { if (connection != null) { Channel channel1 = connection.getChannel(1, -1); if (channel1 != null) { channel1.returnBlocking(cause); } } } }
private void doWrite(final Packet packet) { final ActiveMQBuffer buffer = packet.encode(connection); connection.getTransportConnection().write(buffer, false, false); }
@Override public String toString() { return "Channel[id=" + CHANNEL_ID.idToString(id) + ", RemotingConnectionID=" + (connection == null ? "NULL" : connection.getID()) + ", handler=" + handler + "]"; } }
default boolean isVersionBeforeAddressChange() { int version = getChannelVersion(); return (version > 0 && version < PacketImpl.ADDRESSING_CHANGE_VERSION); }
@Override public boolean isSupportReconnect() { for (Channel channel : channels.values()) { if (channel.getConfirmationWindowSize() > 0) { return true; } } return false; }
@Override public void flush() { synchronized (transferLock) { for (Channel channel : channels.values()) { channel.flushConfirmations(); } } }
@Override public void setSendAcknowledgementHandler(final SendAcknowledgementHandler handler) { sessionChannel.setCommandConfirmationHandler(confirmationHandler); this.sendAckHandler = handler; }
@Override public int getReconnectID() { return sessionChannel.getReconnectID(); }
@Override public void returnBlocking(ActiveMQException cause) { sessionChannel.returnBlocking(cause); }
@Override public void lockCommunications() { sessionChannel.lock(); }
@Override public void setHandler(final ChannelHandler handler) { if (logger.isTraceEnabled()) { logger.trace("RemotingConnectionID=" + (connection == null ? "NULL" : connection.getID()) + " Setting handler on " + this + " as " + handler); } this.handler = handler; }