use of org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ReplicationResponseMessage in project activemq-artemis by apache.
the class ServerPacketDecoder method slowPathDecode.
// separating for performance reasons
private Packet slowPathDecode(ActiveMQBuffer in, byte packetType, CoreRemotingConnection connection) {
Packet packet;
switch(packetType) {
case SESS_SEND_LARGE:
{
packet = new SessionSendLargeMessage(new CoreMessage());
break;
}
case REPLICATION_APPEND:
{
packet = new ReplicationAddMessage();
break;
}
case REPLICATION_APPEND_TX:
{
packet = new ReplicationAddTXMessage();
break;
}
case REPLICATION_DELETE:
{
packet = new ReplicationDeleteMessage();
break;
}
case REPLICATION_DELETE_TX:
{
packet = new ReplicationDeleteTXMessage();
break;
}
case REPLICATION_PREPARE:
{
packet = new ReplicationPrepareMessage();
break;
}
case REPLICATION_COMMIT_ROLLBACK:
{
packet = new ReplicationCommitMessage();
break;
}
case REPLICATION_RESPONSE:
{
packet = new ReplicationResponseMessage();
break;
}
case REPLICATION_RESPONSE_V2:
{
packet = new ReplicationResponseMessageV2();
break;
}
case REPLICATION_PAGE_WRITE:
{
packet = new ReplicationPageWriteMessage();
break;
}
case REPLICATION_PAGE_EVENT:
{
packet = new ReplicationPageEventMessage();
break;
}
case REPLICATION_LARGE_MESSAGE_BEGIN:
{
packet = new ReplicationLargeMessageBeginMessage();
break;
}
case REPLICATION_LARGE_MESSAGE_END:
{
packet = new ReplicationLargeMessageEndMessage();
break;
}
case REPLICATION_LARGE_MESSAGE_WRITE:
{
packet = new ReplicationLargeMessageWriteMessage();
break;
}
case PacketImpl.BACKUP_REGISTRATION:
{
packet = new BackupRegistrationMessage();
break;
}
case PacketImpl.BACKUP_REGISTRATION_FAILED:
{
packet = new BackupReplicationStartFailedMessage();
break;
}
case PacketImpl.REPLICATION_START_FINISH_SYNC:
{
packet = new ReplicationStartSyncMessage();
break;
}
case PacketImpl.REPLICATION_SYNC_FILE:
{
packet = new ReplicationSyncFileMessage();
break;
}
case PacketImpl.REPLICATION_SCHEDULED_FAILOVER:
{
packet = new ReplicationLiveIsStoppingMessage();
break;
}
case CLUSTER_CONNECT:
{
packet = new ClusterConnectMessage();
break;
}
case CLUSTER_CONNECT_REPLY:
{
packet = new ClusterConnectReplyMessage();
break;
}
case NODE_ANNOUNCE:
{
packet = new NodeAnnounceMessage();
break;
}
case BACKUP_REQUEST:
{
packet = new BackupRequestMessage();
break;
}
case BACKUP_REQUEST_RESPONSE:
{
packet = new BackupResponseMessage();
break;
}
case QUORUM_VOTE:
{
packet = new QuorumVoteMessage();
break;
}
case QUORUM_VOTE_REPLY:
{
packet = new QuorumVoteReplyMessage();
break;
}
case SCALEDOWN_ANNOUNCEMENT:
{
packet = new ScaleDownAnnounceMessage();
break;
}
default:
{
packet = super.decode(packetType, connection);
}
}
packet.decode(in);
return packet;
}
use of org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ReplicationResponseMessage in project activemq-artemis by apache.
the class ReplicationEndpoint method handlePacket.
@Override
public void handlePacket(final Packet packet) {
if (logger.isTraceEnabled()) {
logger.trace("handlePacket::handling " + packet);
}
PacketImpl response = new ReplicationResponseMessage();
final byte type = packet.getType();
try {
if (!started) {
if (logger.isTraceEnabled()) {
logger.trace("handlePacket::ignoring " + packet);
}
return;
}
if (type == PacketImpl.REPLICATION_APPEND) {
handleAppendAddRecord((ReplicationAddMessage) packet);
} else if (type == PacketImpl.REPLICATION_APPEND_TX) {
handleAppendAddTXRecord((ReplicationAddTXMessage) packet);
} else if (type == PacketImpl.REPLICATION_DELETE) {
handleAppendDelete((ReplicationDeleteMessage) packet);
} else if (type == PacketImpl.REPLICATION_DELETE_TX) {
handleAppendDeleteTX((ReplicationDeleteTXMessage) packet);
} else if (type == PacketImpl.REPLICATION_PREPARE) {
handlePrepare((ReplicationPrepareMessage) packet);
} else if (type == PacketImpl.REPLICATION_COMMIT_ROLLBACK) {
handleCommitRollback((ReplicationCommitMessage) packet);
} else if (type == PacketImpl.REPLICATION_PAGE_WRITE) {
handlePageWrite((ReplicationPageWriteMessage) packet);
} else if (type == PacketImpl.REPLICATION_PAGE_EVENT) {
handlePageEvent((ReplicationPageEventMessage) packet);
} else if (type == PacketImpl.REPLICATION_LARGE_MESSAGE_BEGIN) {
handleLargeMessageBegin((ReplicationLargeMessageBeginMessage) packet);
} else if (type == PacketImpl.REPLICATION_LARGE_MESSAGE_WRITE) {
handleLargeMessageWrite((ReplicationLargeMessageWriteMessage) packet);
} else if (type == PacketImpl.REPLICATION_LARGE_MESSAGE_END) {
handleLargeMessageEnd((ReplicationLargeMessageEndMessage) packet);
} else if (type == PacketImpl.REPLICATION_START_FINISH_SYNC) {
response = handleStartReplicationSynchronization((ReplicationStartSyncMessage) packet);
} else if (type == PacketImpl.REPLICATION_SYNC_FILE) {
handleReplicationSynchronization((ReplicationSyncFileMessage) packet);
} else if (type == PacketImpl.REPLICATION_SCHEDULED_FAILOVER) {
handleLiveStopping((ReplicationLiveIsStoppingMessage) packet);
} else if (type == PacketImpl.BACKUP_REGISTRATION_FAILED) {
handleFatalError((BackupReplicationStartFailedMessage) packet);
} else {
ActiveMQServerLogger.LOGGER.invalidPacketForReplication(packet);
}
} catch (ActiveMQException e) {
logger.warn(e.getMessage(), e);
ActiveMQServerLogger.LOGGER.errorHandlingReplicationPacket(e, packet);
response = new ActiveMQExceptionMessage(e);
} catch (Exception e) {
logger.warn(e.getMessage(), e);
ActiveMQServerLogger.LOGGER.errorHandlingReplicationPacket(e, packet);
response = new ActiveMQExceptionMessage(ActiveMQMessageBundle.BUNDLE.replicationUnhandledError(e));
}
if (response != null) {
if (logger.isTraceEnabled()) {
logger.trace("Returning " + response);
}
channel.send(response);
} else {
logger.trace("Response is null, ignoring response");
}
}
Aggregations