[jboss-cvs] JBoss Messaging SVN: r3343 - in branches/Branch_JBMESSAGING-544: src/main/org/jboss/jms/client/container and 14 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Nov 19 10:08:04 EST 2007
Author: jmesnil
Date: 2007-11-19 10:08:03 -0500 (Mon, 19 Nov 2007)
New Revision: 3343
Added:
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketDispatcher.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ChangeRateMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CloseMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/StartConnectionMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/server/
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/server/ServerHandler.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveriesMessage.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ChangeRateMessage.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CloseMessage.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/DeliverMessage.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendMessage.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendTransactionMessage.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/StartConnectionMessage.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/AbstractPacketCodecTest.java
Removed:
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcher.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcherFactory.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/RemoteDispatcherImpl.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionResponse.java
Modified:
branches/Branch_JBMESSAGING-544/.classpath
branches/Branch_JBMESSAGING-544/build-messaging.xml
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConnectionAspect.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConsumerAspect.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/StateCreationAspect.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConsumerDelegate.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientSessionDelegate.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/advised/ConnectionFactoryAdvised.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/AbstractPacketHandler.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Assert.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Constants.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketHandler.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/TransportType.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/TextPacketCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/ClientHandler.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/PacketInspector.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AbstractPacket.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/NullPacket.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/TextPacket.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/ServerManagement.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/container/ServiceContainer.java
Log:
http://jira.jboss.org/jira/browse/JBMESSAGING-544: Replace client-server transport with NIO based transport
* put new wireformat in o.j.messaging.core.remoting.wireformat
* put MINA codecs in o.j.messaging.core.remoting.codec
* switched to the MINA connection to exchange packets required to pass the most basic tests (in JMSTest)
Modified: branches/Branch_JBMESSAGING-544/.classpath
===================================================================
--- branches/Branch_JBMESSAGING-544/.classpath 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/.classpath 2007-11-19 15:08:03 UTC (rev 3343)
@@ -37,7 +37,6 @@
<classpathentry kind="lib" path="thirdparty/retrotranslator/lib/retrotranslator-runtime.jar"/>
<classpathentry kind="lib" path="thirdparty/retrotranslator/lib/retrotranslator-transformer.jar"/>
<classpathentry kind="lib" path="thirdparty/trove/lib/trove.jar"/>
- <classpathentry kind="lib" path="thirdparty/jboss/remoting/lib/jboss-remoting.jar"/>
<classpathentry kind="lib" path="thirdparty/jboss/jbossts14/lib/jbossjta.jar"/>
<classpathentry kind="var" path="ANT_HOME/lib/ant.jar"/>
<classpathentry kind="var" path="ANT_HOME/lib/ant-junit.jar"/>
@@ -58,5 +57,6 @@
<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-xml-binding.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/mina-core"/>
+ <classpathentry kind="lib" path="thirdparty/jboss/remoting/lib/jboss-remoting.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified: branches/Branch_JBMESSAGING-544/build-messaging.xml
===================================================================
--- branches/Branch_JBMESSAGING-544/build-messaging.xml 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/build-messaging.xml 2007-11-19 15:08:03 UTC (rev 3343)
@@ -145,7 +145,10 @@
<path refid="javassist.classpath"/>
<path refid="jgroups.jgroups.classpath"/>
<path refid="trove.trove.classpath"/>
- <path refid="apache.logging.classpath"/>
+ <path refid="apache.logging.classpath"/>
+ <path path="${user.home}/.m2/repository/org/apache/mina/mina-core/2.0.0-M1-SNAPSHOT/mina-core-2.0.0-M1-SNAPSHOT.jar" />
+ <path path="${user.home}/.m2/repository/org/slf4j/slf4j-api/1.4.3/slf4j-api-1.4.3.jar" />
+ <path path="${user.home}/.m2/repository/org/slf4j/slf4j-log4j12/1.4.3/slf4j-log4j12-1.4.3.jar" />
</path>
<!--
@@ -233,7 +236,7 @@
<echo message="NOTE: aopc incremental compilation might fail, if so do an ant clean first (see JBMESSAGING-271)"/>
<aopc compilerclasspathref="aopc.classpath"
classpathref="aopc.classpath"
- verbose="false">
+ optimized="false">
<classpath refid="aopc.classpath"/>
<src path="${build.classes}/org/jboss/jms"/>
<aoppath path="src/etc/prepare-aop.xml"/>
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConnectionAspect.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConnectionAspect.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConnectionAspect.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -43,6 +43,7 @@
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:clebert.suconic at jboss.com">Clebert Suconic</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt>
*
* $Id$
@@ -177,19 +178,19 @@
ConnectionState state = getConnectionState(invocation);
- JMSRemotingConnection remotingConnection = state.getRemotingConnection();
-
- // remove the consolidated remoting connection listener
-
- ConsolidatedRemotingConnectionListener l = remotingConnection.removeConnectionListener();
- if (l != null)
- {
- l.clear();
- }
-
- // Finished with the connection - we need to shutdown callback server
- remotingConnection.stop();
-
+// JMSRemotingConnection remotingConnection = state.getRemotingConnection();
+//
+// // remove the consolidated remoting connection listener
+//
+// ConsolidatedRemotingConnectionListener l = remotingConnection.removeConnectionListener();
+// if (l != null)
+// {
+// l.clear();
+// }
+//
+// // Finished with the connection - we need to shutdown callback server
+// remotingConnection.stop();
+//
// Remove reference to message ID generator
MessageIdGeneratorFactory.instance.checkInGenerator(state.getServerID());
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConsumerAspect.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConsumerAspect.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/ConsumerAspect.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,8 +21,10 @@
*/
package org.jboss.jms.client.container;
+import javax.jms.Message;
import javax.jms.MessageListener;
+import org.apache.mina.common.IoSession;
import org.jboss.aop.joinpoint.Invocation;
import org.jboss.aop.joinpoint.MethodInvocation;
import org.jboss.jms.client.delegate.DelegateSupport;
@@ -34,7 +36,16 @@
import org.jboss.jms.delegate.ConsumerDelegate;
import org.jboss.jms.delegate.SessionDelegate;
import org.jboss.jms.exception.MessagingShutdownException;
+import org.jboss.jms.message.JBossMessage;
+import org.jboss.jms.message.MessageProxy;
import org.jboss.logging.Logger;
+import org.jboss.messaging.core.impl.message.MessageFactory;
+import org.jboss.messaging.core.impl.message.MessageSupport;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
import org.jboss.messaging.util.MessageQueueNameHelper;
import EDU.oswego.cs.dl.util.concurrent.QueuedExecutor;
@@ -47,6 +58,7 @@
*
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt>
*
* $Id$
@@ -80,7 +92,7 @@
ConnectionState connectionState = (ConnectionState)sessionState.getParent();
SessionDelegate sessionDelegate = (SessionDelegate)invocation.getTargetObject();
ConsumerState consumerState = (ConsumerState)((DelegateSupport)consumerDelegate).getState();
- String consumerID = consumerState.getConsumerID();
+ final String consumerID = consumerState.getConsumerID();
int prefetchSize = consumerState.getBufferSize();
QueuedExecutor sessionExecutor = sessionState.getExecutor();
int maxDeliveries = consumerState.getMaxDeliveries();
@@ -106,17 +118,44 @@
boolean autoFlowControl = ((Boolean)mi.getArguments()[5]).booleanValue();
- ClientConsumer messageHandler =
+ final ClientConsumer messageHandler =
new ClientConsumer(isCC, sessionState.getAcknowledgeMode(),
sessionDelegate, consumerDelegate, consumerID, queueName,
prefetchSize, sessionExecutor, maxDeliveries, consumerState.isShouldAck(),
autoFlowControl, redeliveryDelay);
sessionState.addCallbackHandler(messageHandler);
-
- CallbackManager cm = connectionState.getRemotingConnection().getCallbackManager();
- cm.registerHandler(consumerID, messageHandler);
-
+
+ PacketDispatcher.client.register(new PacketHandler() {
+
+ public String getID()
+ {
+ return consumerID;
+ }
+
+ public void handle(AbstractPacket packet, IoSession session)
+ {
+ try
+ {
+ PacketType type = packet.getType();
+ if (type == PacketType.MSG_DELIVERMESSAGE)
+ {
+ DeliverMessage message = (DeliverMessage) packet;
+ // FIXME Classcast exception...
+ MessageProxy proxy = JBossMessage.
+ createThinDelegate(message.getDeliveryID(), (JBossMessage)message.getMessage(), message.getDeliveryCount());
+ messageHandler.handleMessage(proxy);
+ }
+ } catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ });
+// CallbackManager cm = connectionState.getRemotingConnection().getCallbackManager();
+// cm.registerHandler(consumerID, messageHandler);
+//
consumerState.setClientConsumer(messageHandler);
if (autoFlowControl)
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/StateCreationAspect.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/StateCreationAspect.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/container/StateCreationAspect.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -31,7 +31,6 @@
import org.jboss.jms.client.delegate.ClientProducerDelegate;
import org.jboss.jms.client.delegate.ClientSessionDelegate;
import org.jboss.jms.client.delegate.DelegateSupport;
-import org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener;
import org.jboss.jms.client.remoting.JMSRemotingConnection;
import org.jboss.jms.client.state.BrowserState;
import org.jboss.jms.client.state.ConnectionState;
@@ -59,6 +58,7 @@
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*
* $Id$
*/
@@ -97,11 +97,12 @@
// install the consolidated remoting connection listener; it will be de-installed on
// connection closing by ConnectionAspect
- ConsolidatedRemotingConnectionListener listener =
- new ConsolidatedRemotingConnectionListener();
+ // FIXME get rif of JBR code
+// ConsolidatedRemotingConnectionListener listener =
+// new ConsolidatedRemotingConnectionListener();
+//
+// remotingConnection.addConnectionListener(listener);
- remotingConnection.addConnectionListener(listener);
-
if (versionToUse == null)
{
throw new IllegalStateException("Connection version is null");
@@ -115,7 +116,7 @@
new ConnectionState(serverID, connectionDelegate,
remotingConnection, versionToUse, idGenerator);
- listener.setConnectionState(connectionState);
+ // listener.setConnectionState(connectionState);
connectionDelegate.setState(connectionState);
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -23,6 +23,7 @@
import java.io.DataInputStream;
import java.io.DataOutputStream;
+import java.util.concurrent.TimeoutException;
import javax.jms.ConnectionMetaData;
import javax.jms.Destination;
@@ -41,18 +42,23 @@
import org.jboss.jms.tx.MessagingXid;
import org.jboss.jms.tx.ResourceManagerFactory;
import org.jboss.jms.tx.TransactionRequest;
-import org.jboss.jms.wireformat.CloseRequest;
-import org.jboss.jms.wireformat.ClosingRequest;
import org.jboss.jms.wireformat.ConnectionCreateSessionDelegateRequest;
import org.jboss.jms.wireformat.ConnectionGetClientIDRequest;
-import org.jboss.jms.wireformat.ConnectionGetIDBlockRequest;
import org.jboss.jms.wireformat.ConnectionGetPreparedTransactionsRequest;
-import org.jboss.jms.wireformat.ConnectionSendTransactionRequest;
import org.jboss.jms.wireformat.ConnectionSetClientIDRequest;
import org.jboss.jms.wireformat.ConnectionStartRequest;
import org.jboss.jms.wireformat.ConnectionStopRequest;
import org.jboss.jms.wireformat.RequestSupport;
import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.Client;
+import org.jboss.messaging.core.remoting.wireformat.CloseMessage;
+import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockRequest;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockResponse;
+import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
+import org.jboss.messaging.core.remoting.wireformat.StartConnectionMessage;
import org.jboss.messaging.util.Version;
/**
@@ -61,6 +67,7 @@
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*
* @version <tt>$Revision$</tt>
*
@@ -82,6 +89,8 @@
private transient Version versionToUse;
+ private Client newclient;
+
// Static ---------------------------------------------------------------------------------------
// Constructors ---------------------------------------------------------------------------------
@@ -133,6 +142,8 @@
ResourceManagerFactory.instance.handleFailover(serverID, newDelegate.getServerID());
client = thisState.getRemotingConnection().getRemotingClient();
+
+ newclient = thisState.getRemotingConnection().getNewRemotingClient();
serverID = newDelegate.getServerID();
}
@@ -141,23 +152,37 @@
{
super.setState(state);
- client = ((ConnectionState)state).getRemotingConnection().getRemotingClient();
+// client = ((ConnectionState)state).getRemotingConnection().getRemotingClient();
+
+ newclient = ((ConnectionState)state).getRemotingConnection().getNewRemotingClient();
}
// Closeable implementation ---------------------------------------------------------------------
public void close() throws JMSException
{
- RequestSupport req = new CloseRequest(id, version);
-
- doInvoke(client, req);
+ assert newclient != null;
+
+ CloseMessage message = new CloseMessage();
+ message.setTargetID(id);
+ newclient.sendOneWay(message);
}
public long closing(long sequence) throws JMSException
{
- RequestSupport req = new ClosingRequest(sequence, id, version);
+ assert newclient != null;
- return ((Long)doInvoke(client, req)).longValue();
+ try
+ {
+ org.jboss.messaging.core.remoting.wireformat.ClosingRequest request = new org.jboss.messaging.core.remoting.wireformat.ClosingRequest(sequence);
+ request.setTargetID(id);
+ ClosingResponse response = (ClosingResponse) newclient.sendBlocking(request);
+ return response.getID();
+ } catch (TimeoutException e)
+ {
+ e.printStackTrace();
+ return -1;
+ }
}
// ConnectionDelegate implementation ------------------------------------------------------------
@@ -179,6 +204,19 @@
int acknowledgmentMode,
boolean isXA) throws JMSException
{
+ assert newclient != null;
+
+ CreateSessionRequest request = new CreateSessionRequest(transacted, acknowledgmentMode, isXA);
+ request.setTargetID(id);
+
+ try {
+ CreateSessionResponse response = (CreateSessionResponse) newclient.sendBlocking(request);
+ ClientSessionDelegate delegate = new ClientSessionDelegate(response.getSessionID(), response.getDupsOKBatchSize(), response.isStrictTCK());
+ return delegate;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
RequestSupport req =
new ConnectionCreateSessionDelegateRequest(id, version, transacted,
acknowledgmentMode, isXA);
@@ -212,13 +250,18 @@
throw new IllegalStateException("This invocation should not be handled here!");
}
- public void sendTransaction(TransactionRequest request,
+ public void sendTransaction(TransactionRequest tr,
boolean checkForDuplicates) throws JMSException
{
- RequestSupport req =
- new ConnectionSendTransactionRequest(id, version, request, checkForDuplicates);
+ assert newclient != null;
- doInvoke(client, req);
+ SendTransactionMessage request = new SendTransactionMessage(tr, checkForDuplicates);
+ request.setTargetID(id);
+ newclient.sendOneWay(request);
+// RequestSupport req =
+// new ConnectionSendTransactionRequest(id, version, request, checkForDuplicates);
+//
+// doInvoke(client, req);
}
public void setClientID(String clientID) throws JMSException
@@ -239,9 +282,14 @@
public void start() throws JMSException
{
- RequestSupport req = new ConnectionStartRequest(id, version);
+ assert newclient != null;
- doInvoke(client, req);
+ StartConnectionMessage message = new StartConnectionMessage();
+ message.setTargetID(id);
+ newclient.sendOneWay(message);
+// RequestSupport req = new ConnectionStartRequest(id, version);
+//
+// doInvoke(client, req);
}
public void startAfterFailover() throws JMSException
@@ -283,9 +331,19 @@
public IDBlock getIdBlock(int size) throws JMSException
{
- RequestSupport req = new ConnectionGetIDBlockRequest(id, version, size);
+ assert newclient != null;
- return (IDBlock)doInvoke(client, req);
+ IDBlockRequest request = new IDBlockRequest(size);
+ request.setTargetID(id);
+ try
+ {
+ IDBlockResponse response = (IDBlockResponse) newclient.sendBlocking(request);
+ return new IDBlock(response.getLow(), response.getHigh());
+ } catch (TimeoutException e)
+ {
+ e.printStackTrace();
+ return null;
+ }
}
// Public ---------------------------------------------------------------------------------------
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,6 +21,9 @@
*/
package org.jboss.jms.client.delegate;
+import static org.jboss.messaging.core.remoting.Constants.PORT;
+import static org.jboss.messaging.core.remoting.TransportType.TCP;
+
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.Serializable;
@@ -36,10 +39,10 @@
import org.jboss.jms.delegate.TopologyResult;
import org.jboss.jms.exception.MessagingNetworkFailureException;
import org.jboss.jms.server.ServerPeer;
-import org.jboss.jms.wireformat.ConnectionFactoryCreateConnectionDelegateRequest;
import org.jboss.jms.wireformat.ConnectionFactoryGetClientAOPStackRequest;
import org.jboss.jms.wireformat.JMSWireFormat;
-import org.jboss.jms.wireformat.ResponseSupport;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
import org.jboss.messaging.util.Version;
import org.jboss.remoting.Client;
import org.jboss.remoting.InvokerLocator;
@@ -49,6 +52,7 @@
*
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*
* @version <tt>$Revision$</tt>
*
@@ -148,44 +152,60 @@
CreateConnectionResult res;
try
- {
+ {
remotingConnection = new JMSRemotingConnection(serverLocatorURI, clientPing, strictTck);
-
+
remotingConnection.start();
-
- Client client = remotingConnection.getRemotingClient();
-
- String remotingSessionId = client.getSessionId();
-
- String clientVMId = JMSClientVMIdentifier.instance;
-
- ConnectionFactoryCreateConnectionDelegateRequest req =
- new ConnectionFactoryCreateConnectionDelegateRequest(id, v,
- remotingSessionId, clientVMId,
- username, password, failedNodeID);
-
- ResponseSupport rs = (ResponseSupport)client.invoke(req, null);
-
- res = (CreateConnectionResult)rs.getResponse();
- }
- catch (Throwable t)
+ org.jboss.messaging.core.remoting.Client client = remotingConnection.getNewRemotingClient();
+ CreateConnectionRequest request = new CreateConnectionRequest(v, JMSClientVMIdentifier.instance, failedNodeID, username, password);
+ request.setTargetID(id);
+ CreateConnectionResponse response = (CreateConnectionResponse) client.sendBlocking(request);
+ ClientConnectionDelegate connectionDelegate = new ClientConnectionDelegate(response.getConnectionID(), response.getServerID());
+ res = new CreateConnectionResult(connectionDelegate);
+ } catch (Throwable e)
{
- //If we were invoking createConnectionDelegate and failure occurs then we need to clear
- // up the JMSRemotingConnection
-
- if (remotingConnection != null)
- {
- try
- {
- remotingConnection.stop();
- }
- catch (Throwable ignore)
- {
- }
- }
-
- throw handleThrowable(t);
+ e.printStackTrace();
+ throw handleThrowable(e);
}
+// try
+// {
+// remotingConnection = new JMSRemotingConnection(serverLocatorURI, clientPing, strictTck);
+//
+// remotingConnection.start();
+//
+// Client client = remotingConnection.getRemotingClient();
+//
+// String remotingSessionId = client.getSessionId();
+//
+// String clientVMId = JMSClientVMIdentifier.instance;
+//
+// ConnectionFactoryCreateConnectionDelegateRequest req =
+// new ConnectionFactoryCreateConnectionDelegateRequest(id, v,
+// remotingSessionId, clientVMId,
+// username, password, failedNodeID);
+//
+// ResponseSupport rs = (ResponseSupport)client.invoke(req, null);
+//
+// res = (CreateConnectionResult)rs.getResponse();
+// }
+// catch (Throwable t)
+// {
+// //If we were invoking createConnectionDelegate and failure occurs then we need to clear
+// // up the JMSRemotingConnection
+//
+// if (remotingConnection != null)
+// {
+// try
+// {
+// remotingConnection.stop();
+// }
+// catch (Throwable ignore)
+// {
+// }
+// }
+//
+// throw handleThrowable(t);
+// }
ClientConnectionDelegate connectionDelegate = (ClientConnectionDelegate)res.getDelegate();
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConsumerDelegate.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConsumerDelegate.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientConsumerDelegate.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,6 +21,8 @@
*/
package org.jboss.jms.client.delegate;
+import static org.jboss.messaging.core.remoting.TransportType.TCP;
+
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -34,15 +36,18 @@
import org.jboss.jms.destination.JBossDestination;
import org.jboss.jms.wireformat.CloseRequest;
import org.jboss.jms.wireformat.ClosingRequest;
-import org.jboss.jms.wireformat.ConsumerChangeRateRequest;
import org.jboss.jms.wireformat.RequestSupport;
import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.Client;
+import org.jboss.messaging.core.remoting.Constants;
+import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
/**
* The client-side Consumer delegate class.
*
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*
* @version <tt>$Revision$</tt>
*
@@ -92,6 +97,9 @@
client = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
getRemotingClient();
+ newClient = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
+ getNewRemotingClient();
+
// synchronize server endpoint state
// synchronize (recursively) the client-side state
@@ -109,8 +117,11 @@
{
super.setState(state);
- client = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
- getRemotingClient();
+// client = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
+// getRemotingClient();
+
+ newClient = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
+ getNewRemotingClient();
}
// Closeable implementation ---------------------------------------------------------------------
@@ -133,9 +144,16 @@
public void changeRate(float newRate) throws JMSException
{
- RequestSupport req = new ConsumerChangeRateRequest(id, version, newRate);
+ assert newClient != null;
- doInvoke(client, req);
+
+ ChangeRateMessage message = new ChangeRateMessage(newRate);
+ message.setTargetID(id);
+ newClient.sendOneWay(message);
+
+// RequestSupport req = new ConsumerChangeRateRequest(id, version, newRate);
+//
+// doInvoke(client, req);
}
/**
@@ -245,4 +263,5 @@
// Private --------------------------------------------------------------------------------------
// Inner Classes --------------------------------------------------------------------------------
+
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientSessionDelegate.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientSessionDelegate.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientSessionDelegate.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -25,6 +25,7 @@
import java.io.DataOutputStream;
import java.io.Serializable;
import java.util.List;
+import java.util.concurrent.TimeoutException;
import javax.jms.JMSException;
import javax.jms.MessageListener;
@@ -54,20 +55,24 @@
import org.jboss.jms.wireformat.CloseRequest;
import org.jboss.jms.wireformat.ClosingRequest;
import org.jboss.jms.wireformat.RequestSupport;
-import org.jboss.jms.wireformat.SessionAcknowledgeDeliveriesRequest;
-import org.jboss.jms.wireformat.SessionAcknowledgeDeliveryRequest;
import org.jboss.jms.wireformat.SessionAddTemporaryDestinationRequest;
import org.jboss.jms.wireformat.SessionCancelDeliveriesRequest;
import org.jboss.jms.wireformat.SessionCancelDeliveryRequest;
import org.jboss.jms.wireformat.SessionCreateBrowserDelegateRequest;
-import org.jboss.jms.wireformat.SessionCreateConsumerDelegateRequest;
import org.jboss.jms.wireformat.SessionCreateQueueRequest;
import org.jboss.jms.wireformat.SessionCreateTopicRequest;
import org.jboss.jms.wireformat.SessionDeleteTemporaryDestinationRequest;
import org.jboss.jms.wireformat.SessionRecoverDeliveriesRequest;
-import org.jboss.jms.wireformat.SessionSendRequest;
import org.jboss.jms.wireformat.SessionUnsubscribeRequest;
import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerResponse;
+import org.jboss.messaging.core.remoting.wireformat.NullPacket;
+import org.jboss.messaging.core.remoting.wireformat.SendMessage;
/**
* The client-side Session delegate class.
@@ -75,6 +80,7 @@
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*
* @version <tt>$Revision$</tt>
*
@@ -104,7 +110,15 @@
this.dupsOKBatchSize = dupsOKBatchSize;
}
+
+ public ClientSessionDelegate(String objectID, int dupsOKBatchSize, boolean strictTCK)
+ {
+ super(objectID);
+ this.dupsOKBatchSize = dupsOKBatchSize;
+ this.strictTck = strictTCK;
+ }
+
public ClientSessionDelegate()
{
}
@@ -138,9 +152,10 @@
JMSRemotingConnection conn = ((ConnectionState)state.getParent()).getRemotingConnection();
- client = conn.getRemotingClient();
-
- strictTck = conn.isStrictTck();
+ newClient = conn.getNewRemotingClient();
+// client = conn.getRemotingClient();
+//
+ // strictTck = conn.isStrictTck();
}
// Closeable implementation ---------------------------------------------------------------------
@@ -163,16 +178,46 @@
public boolean acknowledgeDelivery(Ack ack) throws JMSException
{
- RequestSupport req = new SessionAcknowledgeDeliveryRequest(id, version, ack);
+ assert newClient != null;
- return ((Boolean)doInvoke(client, req)).booleanValue();
+ try
+ {
+ AcknowledgeDeliveryRequest request = new AcknowledgeDeliveryRequest(ack.getDeliveryID());
+ request.setTargetID(id);
+
+ AcknowledgeDeliveryResponse response = (AcknowledgeDeliveryResponse) newClient.sendBlocking(request);
+ return response.isAcknowledged();
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ return false;
+ }
+//
+// //FIXME
+// RequestSupport req = new SessionAcknowledgeDeliveryRequest(id, version, ack);
+//
+// return ((Boolean)doInvoke(client, req)).booleanValue();
}
public void acknowledgeDeliveries(List acks) throws JMSException
{
- RequestSupport req = new SessionAcknowledgeDeliveriesRequest(id, version, acks);
+ assert newClient != null;
+
+ try
+ {
+ AcknowledgeDeliveriesMessage message = new AcknowledgeDeliveriesMessage(acks);
+ message.setTargetID(id);
+ AbstractPacket response = newClient.sendBlocking(message);
+
+ assert response instanceof NullPacket;
+ } catch (TimeoutException e)
+ {
+ e.printStackTrace();
+ }
- doInvoke(client, req);
+// RequestSupport req = new SessionAcknowledgeDeliveriesRequest(id, version, acks);
+//
+// doInvoke(client, req);
}
/**
@@ -234,11 +279,21 @@
boolean noLocal, String subscriptionName,
boolean connectionConsumer, boolean started) throws JMSException
{
- RequestSupport req = new SessionCreateConsumerDelegateRequest(id, version, destination,
- selector, noLocal, subscriptionName,
- connectionConsumer, started);
+ assert newClient != null;
- return (ConsumerDelegate)doInvoke(client, req);
+ try
+ {
+ CreateConsumerRequest request = new CreateConsumerRequest(destination, selector, noLocal, subscriptionName, connectionConsumer, started);
+ request.setTargetID(id);
+ CreateConsumerResponse response = (CreateConsumerResponse) newClient.sendBlocking(request);
+ ClientConsumerDelegate delegate = new ClientConsumerDelegate(response.getConsumerID(), response.getBufferSize(), response.getMaxDeliveries(), response.getRedeliveryDelay());
+
+ return delegate;
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ return null;
+ }
}
/**
@@ -452,6 +507,8 @@
public void send(JBossMessage m, boolean checkForDuplicates) throws JMSException
{
+ assert newClient != null;
+
long seq;
if (m.isReliable() || strictTck)
@@ -467,16 +524,29 @@
sstate.incNpSendSequence();
}
- RequestSupport req = new SessionSendRequest(id, version, m, checkForDuplicates, seq);
-
- if (seq == -1)
- {
- doInvoke(client, req);
- }
- else
+ try
{
- doInvokeOneway(client, req);
+ SendMessage message = new SendMessage(m, checkForDuplicates, seq);
+ message.setTargetID(id);
+
+ newClient.sendOneWay(message);
+ } catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
+
+
+// RequestSupport req = new SessionSendRequest(id, version, m, checkForDuplicates, seq);
+//
+// if (seq == -1)
+// {
+// doInvoke(client, req);
+// }
+// else
+// {
+// doInvokeOneway(client, req);
+// }
}
public void cancelDeliveries(List cancels) throws JMSException
@@ -523,6 +593,11 @@
return dupsOKBatchSize;
}
+ public boolean isStrictTck()
+ {
+ return strictTck;
+ }
+
public String toString()
{
return "SessionDelegate[" + System.identityHashCode(this) + ", ID=" + id + "]";
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -54,6 +54,7 @@
*
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
*
* @version <tt>$Revision$</tt>
*
@@ -84,6 +85,8 @@
protected transient Client client;
+ protected transient org.jboss.messaging.core.remoting.Client newClient;
+
// Static ---------------------------------------------------------------------------------------
// Constructors ---------------------------------------------------------------------------------
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -29,6 +29,8 @@
import org.jboss.jms.server.ServerPeer;
import org.jboss.jms.wireformat.JMSWireFormat;
import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.Constants;
+import org.jboss.messaging.core.remoting.TransportType;
import org.jboss.messaging.util.GUIDGenerator;
import org.jboss.remoting.Client;
import org.jboss.remoting.ConnectionListener;
@@ -50,6 +52,7 @@
*
* @author <a href="tim.fox at jboss.com">Tim Fox</a>
* @author <a href="ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt>
* $Id$
*/
@@ -251,6 +254,8 @@
private CallbackManager callbackManager;
private boolean strictTck;
+ private org.jboss.messaging.core.remoting.Client newClient;
+
// When a failover is performed, this flag is set to true
protected boolean failed = false;
@@ -297,6 +302,9 @@
}
});
+ newClient = new org.jboss.messaging.core.remoting.Client();
+ newClient.connect(Constants.PORT, TransportType.TCP);
+
// We explicitly set the Marshaller since otherwise remoting tries to resolve the marshaller
// every time which is very slow - see org.jboss.remoting.transport.socket.ProcessInvocation
// This can make a massive difference on performance. We also do this in
@@ -348,6 +356,17 @@
client = null;
+ try
+ {
+ newClient.disconnect();
+ }
+ catch (Throwable ignore)
+ {
+ log.trace(this + " failed to disconnect the new client", ignore);
+ }
+
+ newClient = null;
+
log.trace(this + " closed");
}
@@ -355,6 +374,11 @@
{
return client;
}
+
+ public org.jboss.messaging.core.remoting.Client getNewRemotingClient()
+ {
+ return newClient;
+ }
public CallbackManager getCallbackManager()
{
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -51,6 +51,7 @@
import org.jboss.messaging.core.contract.ClusterNotification;
import org.jboss.messaging.core.contract.ClusterNotificationListener;
import org.jboss.messaging.core.contract.Replicator;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
import org.jboss.messaging.util.JNDIUtil;
import org.jboss.messaging.util.Version;
import org.jboss.remoting.InvokerLocator;
@@ -59,6 +60,7 @@
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:clebert.suconic at jboss.com">Clebert Suconic</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt>
*
* $Id$
@@ -128,7 +130,7 @@
}
// See http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4076040#4076040
- String id = uniqueName;
+ final String id = uniqueName;
Version version = serverPeer.getVersion();
@@ -215,7 +217,7 @@
// Now bind it in JNDI
rebindConnectionFactory(initialContext, jndiBindings, delegate);
- ConnectionFactoryAdvised advised;
+ final ConnectionFactoryAdvised advised;
// Need to synchronized to prevent a deadlock
// See http://jira.jboss.com/jira/browse/JBMESSAGING-797
@@ -228,6 +230,8 @@
// use a partially initialised object
Dispatcher.instance.registerTarget(id, advised);
+ PacketDispatcher.server.register(advised.new ConnectionFactoryAdvisedPacketHandler(id));
+
// Replicate the change - we will ignore this locally
if (replicator != null) replicator.put(Replicator.CF_PREFIX + uniqueName, localDelegate);
@@ -277,6 +281,8 @@
}
Dispatcher.instance.unregisterTarget(endpoint.getID(), endpoint);
+
+ PacketDispatcher.server.unregister(endpoint.getID());
}
// MessagingComponent implementation ------------------------------------------------------------
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,6 +21,13 @@
*/
package org.jboss.jms.server.endpoint;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_IDBLOCK;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -35,6 +42,7 @@
import javax.jms.JMSException;
import javax.jms.Session;
+import org.apache.mina.common.IoSession;
import org.jboss.aop.AspectManager;
import org.jboss.jms.client.delegate.ClientSessionDelegate;
import org.jboss.jms.client.remoting.CallbackManager;
@@ -63,6 +71,16 @@
import org.jboss.messaging.core.contract.Queue;
import org.jboss.messaging.core.impl.tx.Transaction;
import org.jboss.messaging.core.impl.tx.TransactionRepository;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockRequest;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockResponse;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
+import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
import org.jboss.messaging.util.ExceptionUtil;
import org.jboss.messaging.util.GUIDGenerator;
import org.jboss.messaging.util.Util;
@@ -74,6 +92,7 @@
*
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt>
*
* $Id$
@@ -194,7 +213,8 @@
this.callbackHandler = callbackHandler;
- Client callbackClient = callbackHandler.getCallbackClient();
+ // FIXME callbackHandler passed in parameter is null
+ Client callbackClient = null; //callbackHandler.getCallbackClient();
if (callbackClient != null)
{
@@ -265,6 +285,8 @@
Dispatcher.instance.registerTarget(sessionID, sessionAdvised);
+ PacketDispatcher.server.register(ep.new ServerSessionEndpointPacketHandler());
+
log.trace("created and registered " + ep);
ClientSessionDelegate d = new ClientSessionDelegate(sessionID, dupsOKBatchSize);
@@ -420,6 +442,8 @@
cm.unregisterConnection(jmsClientVMID, remotingClientSessionID);
Dispatcher.instance.unregisterTarget(id, this);
+
+ PacketDispatcher.server.unregister(id);
closed = true;
}
@@ -808,7 +832,63 @@
}
if (trace) { log.trace(this + " processed transaction " + tx); }
- }
+ }
+
// Inner classes --------------------------------------------------------------------------------
+
+ class ServerConnectionEndpointPacketHandler implements PacketHandler
+ {
+
+ public String getID()
+ {
+ return id;
+ }
+
+ public void handle(AbstractPacket packet, IoSession session)
+ {
+ try
+ {
+ PacketType type = packet.getType();
+ if (type == REQ_CREATESESSION)
+ {
+ CreateSessionRequest request = (CreateSessionRequest) packet;
+ ClientSessionDelegate sessionDelegate = (ClientSessionDelegate) createSessionDelegate(request.isTransacted(), request.getAcknowledgementMode(), request.isXA());
+ CreateSessionResponse response = new CreateSessionResponse(sessionDelegate.getID(), sessionDelegate.getDupsOKBatchSize(), sessionDelegate.isStrictTck());
+ response.normalize(request);
+ session.write(response);
+ } else if (type == REQ_IDBLOCK)
+ {
+ IDBlockRequest request = (IDBlockRequest) packet;
+ IDBlock idBlock = getIdBlock(request.getSize());
+ IDBlockResponse response = new IDBlockResponse(idBlock.getLow(), idBlock.getHigh());
+ response.normalize(request);
+ session.write(response);
+ } else if (type == MSG_STARTCONNECTION)
+ {
+ start();
+ } else if (type == REQ_CLOSING)
+ {
+ org.jboss.messaging.core.remoting.wireformat.ClosingRequest request = (org.jboss.messaging.core.remoting.wireformat.ClosingRequest) packet;
+ long id = closing(request.getSequence());
+ ClosingResponse response = new ClosingResponse(id);
+ response.normalize(request);
+ session.write(response);
+ } else if (type == MSG_CLOSE)
+ {
+ close();
+ } else if (type == MSG_SENDTRANSACTION)
+ {
+ SendTransactionMessage message = (SendTransactionMessage) packet;
+ sendTransaction(message.getTransactionRequest(), message.checkForDuplicates());
+ } else
+ {
+ log.error("Unsupported packet for connection: " + packet);
+ }
+ } catch (JMSException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,10 +21,13 @@
*/
package org.jboss.jms.server.endpoint;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
+
import java.util.Map;
import javax.jms.JMSException;
+import org.apache.mina.common.IoSession;
import org.jboss.aop.AspectManager;
import org.jboss.jms.client.delegate.ClientConnectionDelegate;
import org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate;
@@ -37,15 +40,22 @@
import org.jboss.jms.wireformat.ConnectionFactoryUpdate;
import org.jboss.jms.wireformat.Dispatcher;
import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
import org.jboss.messaging.util.ExceptionUtil;
import org.jboss.remoting.callback.Callback;
-import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
+import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
/**
* Concrete implementation of ConnectionFactoryEndpoint
*
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt>
*
* $Id$
@@ -240,14 +250,14 @@
// create the corresponding "server-side" connection endpoint and register it with the
// server peer's ClientManager
- ServerConnectionEndpoint endpoint =
+ final ServerConnectionEndpoint endpoint =
new ServerConnectionEndpoint(serverPeer, clientIDUsed, username, password, prefetchSize,
defaultTempQueueFullSize, defaultTempQueuePageSize,
defaultTempQueueDownCacheSize, failedNodeID, this,
remotingSessionID, clientVMID, versionToUse,
callbackHandler, dupsOKBatchSize);
- String connectionID = endpoint.getConnectionID();
+ final String connectionID = endpoint.getConnectionID();
ConnectionAdvised connAdvised;
@@ -259,6 +269,8 @@
}
Dispatcher.instance.registerTarget(connectionID, connAdvised);
+
+ PacketDispatcher.server.register(endpoint.new ServerConnectionEndpointPacketHandler());
log.trace("created and registered " + endpoint);
@@ -366,10 +378,10 @@
{
return supportsFailover;
}
-
+
// Protected ------------------------------------------------------------------------------------
-
+
// Private --------------------------------------------------------------------------------------
-
+
// Inner classes --------------------------------------------------------------------------------
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerConsumerEndpoint.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,10 +21,13 @@
*/
package org.jboss.jms.server.endpoint;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CHANGERATE;
+
import javax.jms.IllegalStateException;
import javax.jms.InvalidSelectorException;
import javax.jms.JMSException;
+import org.apache.mina.common.IoSession;
import org.jboss.jms.delegate.ConsumerEndpoint;
import org.jboss.jms.destination.JBossDestination;
import org.jboss.jms.message.JBossMessage;
@@ -45,6 +48,11 @@
import org.jboss.messaging.core.contract.Replicator;
import org.jboss.messaging.core.impl.SimpleDelivery;
import org.jboss.messaging.core.impl.tx.Transaction;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
+import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
import org.jboss.messaging.util.ExceptionUtil;
/**
@@ -53,6 +61,7 @@
*
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt> $Id$
*/
public class ServerConsumerEndpoint implements Receiver, ConsumerEndpoint
@@ -630,7 +639,53 @@
{
sessionEndpoint.promptDelivery(messageQueue);
}
+
+
+ private IoSession session;
+ private void setSession(IoSession session)
+ {
+ this.session = session;
+ }
+
+ public void deliver(DeliverMessage message)
+ {
+ if (session != null)
+ {
+ message.setTargetID(id);
+ session.write(message);
+ } else {
+ log.error("No session to deliver message");
+ }
+ }
+
// Inner classes --------------------------------------------------------------------------------
+
+ public class ServerConsumerEndpointPacketHandler implements PacketHandler {
+ public String getID()
+ {
+ return id;
+ }
+
+ public void handle(AbstractPacket packet, IoSession session)
+ {
+ setSession(session);
+ try
+ {
+ PacketType type = packet.getType();
+ if (type == MSG_CHANGERATE)
+ {
+ ChangeRateMessage message = (ChangeRateMessage) packet;
+ changeRate(message.getRate());
+ } else {
+ log.error("unsupported packet by server consumer endpoint: " + packet);
+ }
+ } catch (JMSException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,6 +21,11 @@
*/
package org.jboss.jms.server.endpoint;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_ACKDELIVERIES;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_ACKDELIVERY;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONSUMER;
+
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
@@ -37,6 +42,7 @@
import javax.jms.InvalidDestinationException;
import javax.jms.JMSException;
+import org.apache.mina.common.IoSession;
import org.jboss.aop.AspectManager;
import org.jboss.jms.client.delegate.ClientBrowserDelegate;
import org.jboss.jms.client.delegate.ClientConsumerDelegate;
@@ -44,6 +50,7 @@
import org.jboss.jms.delegate.BrowserDelegate;
import org.jboss.jms.delegate.Cancel;
import org.jboss.jms.delegate.ConsumerDelegate;
+import org.jboss.jms.delegate.DefaultAck;
import org.jboss.jms.delegate.DeliveryInfo;
import org.jboss.jms.delegate.DeliveryRecovery;
import org.jboss.jms.delegate.SessionEndpoint;
@@ -62,7 +69,6 @@
import org.jboss.jms.server.endpoint.advised.ConsumerAdvised;
import org.jboss.jms.server.messagecounter.MessageCounter;
import org.jboss.jms.server.selector.Selector;
-import org.jboss.jms.wireformat.ClientDelivery;
import org.jboss.jms.wireformat.Dispatcher;
import org.jboss.logging.Logger;
import org.jboss.messaging.core.contract.Binding;
@@ -83,11 +89,21 @@
import org.jboss.messaging.core.impl.tx.TransactionException;
import org.jboss.messaging.core.impl.tx.TransactionRepository;
import org.jboss.messaging.core.impl.tx.TxCallback;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerResponse;
+import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
+import org.jboss.messaging.core.remoting.wireformat.NullPacket;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
+import org.jboss.messaging.core.remoting.wireformat.SendMessage;
import org.jboss.messaging.util.ExceptionUtil;
import org.jboss.messaging.util.GUIDGenerator;
import org.jboss.messaging.util.MessageQueueNameHelper;
-import org.jboss.remoting.Client;
-import org.jboss.remoting.callback.Callback;
import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
import EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap;
@@ -112,6 +128,7 @@
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:clebert.suconic at jboss.com">Clebert Suconic</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>$Revision$</tt>
*
* $Id$
@@ -1451,69 +1468,72 @@
// We send the message to the client on the current thread. The message is written onto the
// transport and then the thread returns immediately without waiting for a response.
- Client callbackClient = callbackHandler.getCallbackClient();
+ DeliverMessage m = new DeliverMessage(ref.getMessage(), consumer.getID(), deliveryID, ref.getDeliveryCount());
+ consumer.deliver(m);
- ClientDelivery del = new ClientDelivery(ref.getMessage(), consumer.getID(), deliveryID, ref.getDeliveryCount());
-
- Callback callback = new Callback(del);
-
- try
- {
- // FIXME - due a design (flaw??) in the socket based transports, they use a pool of TCP
- // connections, so subsequent invocations can end up using different underlying
- // connections meaning that later invocations can overtake earlier invocations, if there
- // are more than one user concurrently invoking on the same transport. We need someway
- // of pinning the client object to the underlying invocation. For now we just serialize
- // all access so that only the first connection in the pool is ever used - but this is
- // far from ideal!!!
- // See http://jira.jboss.com/jira/browse/JBMESSAGING-789
-
- Object invoker = null;
-
- if (callbackClient != null)
- {
- invoker = callbackClient.getInvoker();
- }
- else
- {
- // TODO: dummy synchronization object, in case there's no clientInvoker. This will
- // happen during the first invocation anyway. It's a kludge, I know, but this whole
- // synchronization thing is a huge kludge. Needs to be reviewed.
- invoker = new Object();
- }
-
- synchronized (invoker)
- {
- // one way invocation, no acknowledgment sent back by the client
- if (trace) { log.trace(this + " submitting message " + ref.getMessage() + " to the remoting layer to be sent asynchronously"); }
-
- callbackHandler.handleCallbackOneway(callback);
-
- //We store the delivery id so we know to wait for any deliveries in transit on close
- consumer.setLastDeliveryID(deliveryID);
- }
- }
- catch (Throwable t)
- {
- // it's an oneway callback, so exception could only have happened on the server, while
- // trying to send the callback. This is a good reason to smack the whole connection.
- // I trust remoting to have already done its own cleanup via a CallbackErrorHandler,
- // I need to do my own cleanup at ConnectionManager level.
-
- log.trace(this + " failed to handle callback", t);
-
- //We stop the consumer - some time later the lease will expire and the connection will be closed
- //which will remove the consumer
-
- consumer.setStarted(false);
-
- consumer.setDead();
-
- //** IMPORTANT NOTE! We must return the delivery NOT null. **
- //This is because if we return NULL then message will remain in the queue, but later
- //the connection checker will cleanup and close this consumer which will cancel all the deliveries in it
- //including this one, so the message will go back on the queue twice!
- }
+// ClientDelivery del = new ClientDelivery(ref.getMessage(), consumer.getID(), deliveryID, ref.getDeliveryCount());
+//
+// Client callbackClient = callbackHandler.getCallbackClient();
+//
+// Callback callback = new Callback(del);
+//
+// try
+// {
+// // FIXME - due a design (flaw??) in the socket based transports, they use a pool of TCP
+// // connections, so subsequent invocations can end up using different underlying
+// // connections meaning that later invocations can overtake earlier invocations, if there
+// // are more than one user concurrently invoking on the same transport. We need someway
+// // of pinning the client object to the underlying invocation. For now we just serialize
+// // all access so that only the first connection in the pool is ever used - but this is
+// // far from ideal!!!
+// // See http://jira.jboss.com/jira/browse/JBMESSAGING-789
+//
+// Object invoker = null;
+//
+// if (callbackClient != null)
+// {
+// invoker = callbackClient.getInvoker();
+// }
+// else
+// {
+// // TODO: dummy synchronization object, in case there's no clientInvoker. This will
+// // happen during the first invocation anyway. It's a kludge, I know, but this whole
+// // synchronization thing is a huge kludge. Needs to be reviewed.
+// invoker = new Object();
+// }
+//
+// synchronized (invoker)
+// {
+// // one way invocation, no acknowledgment sent back by the client
+// if (trace) { log.trace(this + " submitting message " + ref.getMessage() + " to the remoting layer to be sent asynchronously"); }
+//
+// callbackHandler.handleCallbackOneway(callback);
+//
+// //We store the delivery id so we know to wait for any deliveries in transit on close
+// consumer.setLastDeliveryID(deliveryID);
+// }
+// }
+// catch (Throwable t)
+// {
+// // it's an oneway callback, so exception could only have happened on the server, while
+// // trying to send the callback. This is a good reason to smack the whole connection.
+// // I trust remoting to have already done its own cleanup via a CallbackErrorHandler,
+// // I need to do my own cleanup at ConnectionManager level.
+//
+// log.trace(this + " failed to handle callback", t);
+//
+// //We stop the consumer - some time later the lease will expire and the connection will be closed
+// //which will remove the consumer
+//
+// consumer.setStarted(false);
+//
+// consumer.setDead();
+//
+// //** IMPORTANT NOTE! We must return the delivery NOT null. **
+// //This is because if we return NULL then message will remain in the queue, but later
+// //the connection checker will cleanup and close this consumer which will cancel all the deliveries in it
+// //including this one, so the message will go back on the queue twice!
+// }
}
void acknowledgeTransactionally(List acks, Transaction tx) throws Throwable
@@ -1833,6 +1853,8 @@
}
Dispatcher.instance.registerTarget(consumerID, advised);
+
+ PacketDispatcher.server.register(ep.new ServerConsumerEndpointPacketHandler());
ClientConsumerDelegate stub =
new ClientConsumerDelegate(consumerID, prefetchSize, -1, 0);
@@ -2150,6 +2172,8 @@
Dispatcher.instance.registerTarget(consumerID, advised);
+ PacketDispatcher.server.register(ep.new ServerConsumerEndpointPacketHandler());
+
ClientConsumerDelegate stub =
new ClientConsumerDelegate(consumerID, prefetchSize, maxDeliveryAttemptsToUse, redeliveryDelayToUse);
@@ -2396,4 +2420,53 @@
delList.add(deliveryId);
}
}
+
+ public class ServerSessionEndpointPacketHandler implements PacketHandler {
+
+ public String getID()
+ {
+ return id;
+ }
+
+ public void handle(AbstractPacket packet, IoSession session)
+ {
+ try
+ {
+ PacketType type = packet.getType();
+ if (type == MSG_SENDMESSAGE)
+ {
+ SendMessage message = (SendMessage) packet;
+ send(message.getMessage(), message.checkForDuplicates(), message.getSequence());
+ } else if (type == REQ_CREATECONSUMER)
+ {
+ CreateConsumerRequest request = (CreateConsumerRequest) packet;
+ ClientConsumerDelegate consumer = (ClientConsumerDelegate) createConsumerDelegate(request.getDestination(), request.getSelector(), request.isNoLocal(), request.getSubscriptionName(), request.isConnectionConsumer(), request.isAutoFlowControl());
+ CreateConsumerResponse response = new CreateConsumerResponse(consumer.getID(), consumer.getBufferSize(), consumer.getMaxDeliveries(), consumer.getRedeliveryDelay());
+ response.normalize(request);
+ session.write(response);
+ } else if (type == REQ_ACKDELIVERY)
+ {
+ AcknowledgeDeliveryRequest request = (AcknowledgeDeliveryRequest) packet;
+ boolean acknowledged = acknowledgeDelivery(new DefaultAck(request.getDeliveryID()));
+ AcknowledgeDeliveryResponse response = new AcknowledgeDeliveryResponse(acknowledged);
+ response.normalize(request);
+ session.write(response);
+ } else if (type == MSG_ACKDELIVERIES)
+ {
+ AcknowledgeDeliveriesMessage message = (AcknowledgeDeliveriesMessage) packet;
+ acknowledgeDeliveries(message.getAcks());
+
+ NullPacket p = new NullPacket();
+ p.normalize(message);
+ session.write(p);
+ } else {
+ log.error("Unsupported packet for session: " + packet);
+ }
+ } catch (JMSException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/advised/ConnectionFactoryAdvised.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/advised/ConnectionFactoryAdvised.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/advised/ConnectionFactoryAdvised.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,19 +21,29 @@
*/
package org.jboss.jms.server.endpoint.advised;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
+
import javax.jms.JMSException;
+import org.apache.mina.common.IoSession;
import org.jboss.jms.delegate.ConnectionFactoryEndpoint;
import org.jboss.jms.delegate.CreateConnectionResult;
import org.jboss.jms.delegate.TopologyResult;
import org.jboss.jms.server.endpoint.ConnectionFactoryInternalEndpoint;
import org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint;
+import org.jboss.messaging.core.remoting.Assert;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
/**
*
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
* @version <tt>1.5</tt>
*
* ConnectionFactoryAdvised.java,v 1.3 2006/03/01 22:56:51 ovidiu Exp
@@ -133,4 +143,46 @@
// Inner classes --------------------------------------------------------------------------------
+ public final class ConnectionFactoryAdvisedPacketHandler implements
+ PacketHandler
+ {
+ private String id;
+
+ public ConnectionFactoryAdvisedPacketHandler(String id)
+ {
+ Assert.assertValidID(id);
+
+ this.id = id;
+ }
+
+ public String getID()
+ {
+ return id;
+ }
+
+ public void handle(AbstractPacket packet, IoSession session)
+ {
+ PacketType type = packet.getType();
+ if (type == REQ_CREATECONNECTION)
+ {
+ CreateConnectionRequest request = (CreateConnectionRequest) packet;
+ try
+ {
+ CreateConnectionResult del =
+ createConnectionDelegate(request.getUsername(), request.getPassword(), request.getFailedNodeID(), null, request.getClientVMID(), request.getVersion(), null);
+ CreateConnectionResponse response = new CreateConnectionResponse(del.getDelegate().getID(), del.getDelegate().getServerID());
+ response.normalize(request);
+ session.write(response);
+ } catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ } else
+ {
+ System.err.println("unhandled packet:" + packet);
+ }
+ }
}
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/AbstractPacketHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/AbstractPacketHandler.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/AbstractPacketHandler.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -10,6 +10,7 @@
import java.util.UUID;
+import org.apache.mina.common.IoSession;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
/**
@@ -18,6 +19,8 @@
* @see UUID#randomUUID()
*
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public abstract class AbstractPacketHandler implements PacketHandler
{
@@ -52,7 +55,7 @@
return id;
}
- public abstract void handle(AbstractPacket packet);
+ public abstract void handle(AbstractPacket packet, IoSession session);
// Package protected ---------------------------------------------
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Assert.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Assert.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Assert.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -1,3 +1,9 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
package org.jboss.messaging.core.remoting;
/**
@@ -2,2 +8,4 @@
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,224 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.jboss.messaging.core.remoting.Constants.CONNECTION_TIMEOUT;
+import static org.jboss.messaging.core.remoting.TransportType.HTTP;
+import static org.jboss.messaging.core.remoting.TransportType.TCP;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.apache.mina.common.CloseFuture;
+import org.apache.mina.common.ConnectFuture;
+import org.apache.mina.common.DefaultIoFilterChainBuilder;
+import org.apache.mina.common.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.logging.LoggingFilter;
+import org.apache.mina.filter.logging.MdcInjectionFilter;
+import org.apache.mina.filter.reqres.Request;
+import org.apache.mina.filter.reqres.RequestResponseFilter;
+import org.apache.mina.filter.reqres.RequestTimeoutException;
+import org.apache.mina.filter.reqres.Response;
+import org.apache.mina.filter.ssl.SslFilter;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.jboss.messaging.core.remoting.codec.PacketCodecFactory;
+import org.jboss.messaging.core.remoting.internal.ClientHandler;
+import org.jboss.messaging.core.remoting.internal.PacketInspector;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class Client
+{
+ // Attributes ----------------------------------------------------
+
+ private IoSession session;
+ private SslFilter sslFilter;
+
+ // By default, a blocking request will timeout after 5 seconds
+ private int blockingRequestTimeout = 5;
+ private TimeUnit blockingRequestTimeUnit = SECONDS;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public Client()
+ {
+ }
+
+ // Public --------------------------------------------------------
+
+ public void connect(int port, TransportType transport) throws Exception
+ {
+ connect(port, transport, false);
+ }
+
+ public void connect(int port, TransportType transport, boolean useSSL)
+ throws Exception
+ {
+ assert port > 0;
+ assert transport != null;
+
+ NioSocketConnector connector = new NioSocketConnector();
+
+ connector.setConnectTimeout(CONNECTION_TIMEOUT);
+
+ if (useSSL)
+ addSSLSupport(connector.getFilterChain());
+
+ MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
+ connector.getFilterChain().addLast("mdc", mdcInjectionFilter);
+
+ if (transport == TCP)
+ {
+ connector.getFilterChain().addLast("codec",
+ new ProtocolCodecFilter(new PacketCodecFactory()));
+ } else
+ {
+ assert transport == HTTP;
+
+ // TODO support HTTP
+ // URL url = new URL("http://localhost:" + port + "/");
+ // connector.getFilterChain().addLast("http_codec",
+ // new ProtocolCodecFilter(new HttpProtocolCodecFactory(url)));
+ // connector.getFilterChain().addLast("http_logger", new
+ // LoggingFilter());
+ // connector.getFilterChain().addLast("http_filter",
+ // new HTTPFilter(false));
+ }
+
+ addBlockingRequestResponseFilter(connector.getFilterChain());
+
+ connector.getFilterChain().addLast("logger", new LoggingFilter());
+
+ connector.setHandler(new ClientHandler());
+ InetSocketAddress address = new InetSocketAddress(port);
+ ConnectFuture future = connector.connect(address);
+ future.awaitUninterruptibly();
+ if (!future.isConnected())
+ {
+ throw new IOException("Cannot connect to " + address.toString());
+ }
+ this.session = future.getSession();
+ }
+
+ public boolean disconnect() throws Exception
+ {
+ assert session != null;
+
+ if (sslFilter != null)
+ {
+ sslFilter.stopSsl(session).awaitUninterruptibly();
+ // FIXME: w/o the delay, an exception is thrown:
+ // "Inbound closed before receiving peer's close_notify"
+ Thread.sleep(500);
+ }
+ CloseFuture closeFuture = session.close().awaitUninterruptibly();
+ return closeFuture.isClosed();
+ }
+
+ public void sendOneWay(AbstractPacket packet)
+ {
+ assert packet != null;
+ checkConnected();
+
+ session.write(packet);
+ }
+
+ public void sendOneWay(AbstractPacket packet, PacketHandler callbackHandler)
+ {
+ assert packet != null;
+ assert callbackHandler != null;
+ checkConnected();
+
+ PacketDispatcher.client.register(callbackHandler);
+ packet.setCallbackID(callbackHandler.getID());
+ session.write(packet);
+ }
+
+ public AbstractPacket sendBlocking(AbstractPacket packet)
+ throws TimeoutException
+ {
+ assert packet != null;
+ checkConnected();
+
+ packet.setCorrelationID(System.nanoTime());
+
+ // TODO request timeout must be configurable
+ Request req = new Request(packet.getCorrelationID(), packet,
+ blockingRequestTimeout, blockingRequestTimeUnit);
+ session.write(req);
+ Response response;
+ try
+ {
+ response = req.awaitResponse();
+ return (AbstractPacket) response.getMessage();
+ } catch (RequestTimeoutException e)
+ {
+ TimeoutException toe = new TimeoutException();
+ toe.initCause(e);
+ throw toe;
+ } catch (InterruptedException e)
+ {
+ TimeoutException toe = new TimeoutException();
+ toe.initCause(e);
+ throw toe;
+ }
+ }
+
+ public void setBlockingRequestTimeout(int timeout, TimeUnit unit)
+ {
+ this.blockingRequestTimeout = timeout;
+ this.blockingRequestTimeUnit = unit;
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ private void addBlockingRequestResponseFilter(
+ DefaultIoFilterChainBuilder chain)
+ {
+ ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+ RequestResponseFilter filter = new RequestResponseFilter(
+ new PacketInspector(), scheduler);
+ chain.addLast("reqres", filter);
+ }
+
+ private void addSSLSupport(DefaultIoFilterChainBuilder chain)
+ throws Exception
+ {
+ // TODO support SSL
+ // this.sslFilter = new
+ // SslFilter(BogusSslContextFactory.getInstance(false));
+ // sslFilter.setUseClientMode(true);
+ // chain.addLast("sslFilter", sslFilter);
+ }
+
+ private void checkConnected()
+ {
+ if (session == null)
+ {
+ throw new IllegalStateException("RemoteDispatcher is not connected.");
+ }
+ }
+
+ // Inner classes -------------------------------------------------
+
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Constants.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Constants.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Constants.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -6,12 +6,10 @@
*/
package org.jboss.messaging.core.remoting;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class Constants
{
@@ -19,28 +17,10 @@
public static final int CONNECTION_TIMEOUT = 20 * 1000;
- public static final byte NULL_BYTE = (byte) 0;
-
- public static final CharsetEncoder UTF_8_ENCODER = Charset.forName("UTF-8")
- .newEncoder();
-
- public static final CharsetDecoder UTF_8_DECODER = Charset.forName("UTF-8")
- .newDecoder();
-
public static final long NO_CORRELATION_ID = -1L;
- public static final String NO_TARGET_ID = "NO_TARGET_ID_SET";
+ public static final String NO_ID_SET = "NO_ID_SET";
- public static final String NO_CALLBACK_ID = "NO_CALLBACK_ID_SET";
-
- public static final int INT_LENGTH = 4;
-
- public static final int LONG_LENGTH = 8;
-
- public static final byte TRUE = (byte) 0;
-
- public static final byte FALSE = (byte) 1;
-
public static final int PORT = 8080;
public static final String PACKET_TYPE_HEADER = "PACKET_TYPE";
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketDispatcher.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketDispatcher.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketDispatcher.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,69 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting;
+
+import static org.jboss.messaging.core.remoting.Assert.assertValidID;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class PacketDispatcher
+{
+
+ // Attributes ----------------------------------------------------
+
+ private Map<String, PacketHandler> handlers;
+
+ // Static --------------------------------------------------------
+
+ public static final PacketDispatcher client = new PacketDispatcher();
+ public static final PacketDispatcher server = new PacketDispatcher();
+
+ // Constructors --------------------------------------------------
+
+ private PacketDispatcher()
+ {
+ handlers = new ConcurrentHashMap<String, PacketHandler>();
+ }
+
+ // Public --------------------------------------------------------
+
+ public void register(PacketHandler handler)
+ {
+ assertValidID(handler.getID());
+ assert handler != null;
+
+ handlers.put(handler.getID(), handler);
+ }
+
+ public void unregister(String handlerID)
+ {
+ assertValidID(handlerID);
+
+ handlers.remove(handlerID);
+ }
+
+ public PacketHandler getHandler(String handlerID)
+ {
+ assertValidID(handlerID);
+
+ return handlers.get(handlerID);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketHandler.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/PacketHandler.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -6,6 +6,7 @@
*/
package org.jboss.messaging.core.remoting;
+import org.apache.mina.common.IoSession;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
/**
@@ -15,11 +16,13 @@
* It must have an ID unique among all PacketHandlers (or at least among those
* registered into the same RemoteDispatcher).
*
- * @see RemoteDispatcher#register(PacketHandler)
- * @see RemoteDispatcher#unregister(String)
+ * @see PacketDispatcher#register(PacketHandler)
+ * @see PacketDispatcher#unregister(String)
* @see AbstractPacketHandler
*
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public interface PacketHandler
{
@@ -33,5 +36,5 @@
*/
String getID();
- void handle(AbstractPacket packet);
+ void handle(AbstractPacket packet, IoSession session);
}
Deleted: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcher.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcher.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcher.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -1,36 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.core.remoting;
-
-import java.util.concurrent.TimeUnit;
-
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-
-/**
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
- */
-public interface RemoteDispatcher
-{
- public void sendOneWay(AbstractPacket packet);
-
- public void sendOneWay(AbstractPacket packet, PacketHandler callbackHandler);
-
- public AbstractPacket sendBlocking(AbstractPacket packet) throws Exception;
-
- public void connect(int port, TransportType transport) throws Exception;
-
- public void connect(int port, TransportType transport, boolean useSSL)
- throws Exception;
-
- public boolean disconnect() throws Exception;
-
- public void register(PacketHandler handler);
-
- public void unregister(String handlerID);
-
- public void setBlockingRequestTimeout(int timeout, TimeUnit unit);
-}
\ No newline at end of file
Deleted: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcherFactory.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcherFactory.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/RemoteDispatcherFactory.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -1,41 +0,0 @@
-/**
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.core.remoting;
-
-import org.jboss.messaging.core.remoting.internal.RemoteDispatcherImpl;
-
-
-/**
- * A factory to create new {@link RemoteDispatcher}.
- *
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
- */
-public class RemoteDispatcherFactory
-{
- // Constants -----------------------------------------------------
-
- // Attributes ----------------------------------------------------
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- // Public --------------------------------------------------------
-
- public static RemoteDispatcher newDispatcher()
- {
- return new RemoteDispatcherImpl();
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- // Inner classes -------------------------------------------------
-}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/TransportType.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/TransportType.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/TransportType.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -10,6 +10,8 @@
* The transport types supported by JBoss Messaging.
*
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public enum TransportType
{
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -6,13 +6,10 @@
*/
package org.jboss.messaging.core.remoting.codec;
-import static org.jboss.messaging.core.remoting.Constants.INT_LENGTH;
-import static org.jboss.messaging.core.remoting.Constants.LONG_LENGTH;
-import static org.jboss.messaging.core.remoting.Constants.NULL_BYTE;
-import static org.jboss.messaging.core.remoting.Constants.UTF_8_DECODER;
-import static org.jboss.messaging.core.remoting.Constants.UTF_8_ENCODER;
-
import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
import org.apache.mina.common.IoBuffer;
import org.apache.mina.common.IoSession;
@@ -32,6 +29,29 @@
{
// Constants -----------------------------------------------------
+ private static final CharsetEncoder UTF_8_ENCODER = Charset.forName("UTF-8")
+ .newEncoder();
+
+ private static final CharsetDecoder UTF_8_DECODER = Charset.forName("UTF-8")
+ .newDecoder();
+
+ private static final byte TRUE = (byte) 0;
+
+ private static final byte FALSE = (byte) 1;
+
+ protected static final int INT_LENGTH = 4;
+
+ protected static final int FLOAT_LENGTH = 4;
+
+ protected static final int LONG_LENGTH = 8;
+
+ // used to terminate encoded Strings
+ protected static final byte NULL_BYTE = (byte) 0;
+
+ protected static final byte NULL_STRING = (byte) 0;
+
+ protected static final byte NOT_NULL_STRING = (byte) 1;
+
// Attributes ----------------------------------------------------
private PacketType type;
@@ -58,8 +78,7 @@
String targetID = packet.getTargetID();
String callbackID = packet.getCallbackID();
- int headerLength = LONG_LENGTH + targetID.getBytes().length
- + callbackID.getBytes().length + 2 /* NULL bytes */;
+ int headerLength = LONG_LENGTH + sizeof(targetID) + sizeof(callbackID);
IoBuffer buf = IoBuffer.allocate(256);
@@ -69,10 +88,8 @@
buf.put(packet.getType().byteValue());
buf.putInt(headerLength);
buf.putLong(correlationID);
- buf.putString(targetID, UTF_8_ENCODER);
- buf.put(NULL_BYTE);
- buf.putString(callbackID, UTF_8_ENCODER);
- buf.put(NULL_BYTE);
+ putString(buf, targetID);
+ putString(buf, callbackID);
encodeBody(session, packet, buf);
@@ -142,8 +159,8 @@
in.get(); // skip message type
in.getInt(); // skip header length
long correlationID = in.getLong();
- String targetID = in.getString(UTF_8_DECODER);
- String callbackID = in.getString(UTF_8_DECODER);
+ String targetID = getString(in);
+ String callbackID = getString(in);
P packet = decodeBody(session, in);
@@ -168,12 +185,77 @@
// Protected -----------------------------------------------------
- protected abstract void encodeBody(IoSession session, P packet, IoBuffer buf)
+ protected abstract void encodeBody(IoSession session, P packet, IoBuffer out)
throws Exception;
protected abstract P decodeBody(IoSession session, IoBuffer in)
throws Exception;
+ public static int sizeof(String nullableString)
+ {
+ if (nullableString == null)
+ {
+ return 1; // NULL_STRING byte
+ } else
+ {
+ return nullableString.getBytes().length + 2;// NOT_NULL_STRING +
+ // NULL_BYTE
+ }
+ }
+
+ public static void putString(IoBuffer out, String nullableString)
+ throws CharacterCodingException
+ {
+
+ if (nullableString == null)
+ {
+ out.put(NULL_STRING);
+ } else
+ {
+ out.put(NOT_NULL_STRING);
+ out.putString(nullableString, UTF_8_ENCODER);
+ out.put(NULL_BYTE);
+ }
+ }
+
+ public static String getString(IoBuffer in) throws CharacterCodingException
+ {
+ byte check = in.get();
+ if (check == NULL_STRING)
+ {
+ return null;
+ } else
+ {
+ assert check == NOT_NULL_STRING;
+
+ return in.getString(UTF_8_DECODER);
+ }
+ }
+
+ public static void putBoolean(IoBuffer out, boolean b)
+ {
+ if (b)
+ {
+ out.put(TRUE);
+ } else
+ {
+ out.put(FALSE);
+ }
+ }
+
+ public static boolean getBoolean(IoBuffer in)
+ {
+ byte b = in.get();
+ if (b == TRUE)
+ {
+ return true;
+ } else
+ {
+ assert b == FALSE;
+ return false;
+ }
+ }
+
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,105 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_ACKDELIVERIES;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.jms.delegate.Ack;
+import org.jboss.jms.delegate.DefaultAck;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class AcknowledgeDeliveriesRequestCodec extends
+ AbstractPacketCodec<AcknowledgeDeliveriesMessage>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public AcknowledgeDeliveriesRequestCodec()
+ {
+ super(MSG_ACKDELIVERIES);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session,
+ AcknowledgeDeliveriesMessage request, IoBuffer out) throws Exception
+ {
+
+ long[] deliveryIDs = convert(request.getAcks());
+
+ int bodyLength = LONG_LENGTH * deliveryIDs.length;
+ out.putInt(bodyLength);
+ for (long id : deliveryIDs)
+ {
+ out.putLong(id);
+ }
+ }
+
+ @Override
+ protected AcknowledgeDeliveriesMessage decodeBody(IoSession session,
+ IoBuffer in) throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ int numOfDeliveryIds = bodyLength / LONG_LENGTH;
+ long[] deliveryIDs = new long[numOfDeliveryIds];
+ for (int i = 0; i < numOfDeliveryIds; i++)
+ {
+ deliveryIDs[i] = in.getLong();
+ }
+ List<Ack> acks = convert(deliveryIDs);
+
+ return new AcknowledgeDeliveriesMessage(acks);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ private static long[] convert(List<Ack> acks)
+ {
+ long[] deliveryIDs = new long[acks.size()];
+ for (int i = 0; i < acks.size(); i++)
+ {
+ deliveryIDs[i] = acks.get(i).getDeliveryID();
+ }
+ return deliveryIDs;
+ }
+
+ private List<Ack> convert(long[] deliveryIDs)
+ {
+ List<Ack> acks = new ArrayList<Ack>(deliveryIDs.length);
+ for (long deliveryID : deliveryIDs)
+ {
+ acks.add(new DefaultAck(deliveryID));
+ }
+ return acks;
+ }
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_ACKDELIVERY;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class AcknowledgeDeliveryRequestCodec extends
+ AbstractPacketCodec<AcknowledgeDeliveryRequest>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public AcknowledgeDeliveryRequestCodec()
+ {
+ super(REQ_ACKDELIVERY);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session,
+ AcknowledgeDeliveryRequest request, IoBuffer out) throws Exception
+ {
+ long deliveryID = request.getDeliveryID();
+
+ out.putInt(LONG_LENGTH);
+ out.putLong(deliveryID);
+ }
+
+ @Override
+ protected AcknowledgeDeliveryRequest decodeBody(IoSession session,
+ IoBuffer in) throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ long deliveryID = in.getLong();
+
+ return new AcknowledgeDeliveryRequest(deliveryID);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryResponseCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveryResponseCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_ACKDELIVERY;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class AcknowledgeDeliveryResponseCodec extends
+ AbstractPacketCodec<AcknowledgeDeliveryResponse>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public AcknowledgeDeliveryResponseCodec()
+ {
+ super(RESP_ACKDELIVERY);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session,
+ AcknowledgeDeliveryResponse response, IoBuffer out) throws Exception
+ {
+ out.putInt(1); //body length
+ putBoolean(out, response.isAcknowledged());
+ }
+
+ @Override
+ protected AcknowledgeDeliveryResponse decodeBody(IoSession session,
+ IoBuffer in) throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ boolean acknowledged = getBoolean(in);
+
+ return new AcknowledgeDeliveryResponse(acknowledged);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ChangeRateMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ChangeRateMessageCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ChangeRateMessageCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CHANGERATE;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class ChangeRateMessageCodec extends
+ AbstractPacketCodec<ChangeRateMessage>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ChangeRateMessageCodec()
+ {
+ super(MSG_CHANGERATE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, ChangeRateMessage message,
+ IoBuffer out) throws Exception
+ {
+ out.putInt(FLOAT_LENGTH);
+ out.putFloat(message.getRate());
+ }
+
+ @Override
+ protected ChangeRateMessage decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ float rate = in.getFloat();
+
+ return new ChangeRateMessage(rate);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private ----------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CloseMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CloseMessageCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CloseMessageCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.CloseMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class CloseMessageCodec extends
+ AbstractPacketCodec<CloseMessage>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CloseMessageCodec()
+ {
+ super(MSG_CLOSE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, CloseMessage message,
+ IoBuffer out) throws Exception
+ {
+ out.putInt(0);
+ }
+
+ @Override
+ protected CloseMessage decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ in.getInt(); // skip body length
+
+ return new CloseMessage();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private ----------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.ClosingRequest;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class ClosingRequestCodec extends AbstractPacketCodec<ClosingRequest>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ClosingRequestCodec()
+ {
+ super(REQ_CLOSING);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, ClosingRequest request,
+ IoBuffer out) throws Exception
+ {
+ out.putInt(LONG_LENGTH);
+ out.putLong(request.getSequence());
+ }
+
+ @Override
+ protected ClosingRequest decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ long sequence = in.getLong();
+
+ return new ClosingRequest(sequence);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingResponseCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ClosingResponseCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CLOSING;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class ClosingResponseCodec extends AbstractPacketCodec<ClosingResponse>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ClosingResponseCodec()
+ {
+ super(RESP_CLOSING);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, ClosingResponse response,
+ IoBuffer out) throws Exception
+ {
+ out.putInt(LONG_LENGTH);
+ out.putLong(response.getID());
+ }
+
+ @Override
+ protected ClosingResponse decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ long id = in.getLong();
+
+ return new ClosingResponse(id);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -6,17 +6,17 @@
*/
package org.jboss.messaging.core.remoting.codec;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CONNECTIONFACTORY_CREATECONNECTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
import org.apache.mina.common.IoBuffer;
import org.apache.mina.common.IoSession;
-import org.jboss.messaging.core.remoting.wireformat.ConnectionFactoryCreateConnectionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
*/
public class ConnectionFactoryCreateConnectionRequestCodec extends
- AbstractPacketCodec<ConnectionFactoryCreateConnectionRequest>
+ AbstractPacketCodec<CreateConnectionRequest>
{
// Constants -----------------------------------------------------
@@ -30,26 +30,53 @@
public ConnectionFactoryCreateConnectionRequestCodec()
{
- super(REQ_CONNECTIONFACTORY_CREATECONNECTION);
+ super(REQ_CREATECONNECTION);
}
// AbstractPackedCodec overrides----------------------------------
-
+
@Override
protected void encodeBody(IoSession session,
- ConnectionFactoryCreateConnectionRequest request, IoBuffer out)
+ CreateConnectionRequest request, IoBuffer out)
throws Exception
{
- // no body
- out.putInt(0);
+ byte version = request.getVersion();
+ String clientVMID = request.getClientVMID();
+ int failedNodeID = request.getFailedNodeID();
+ String username = request.getUsername();
+ String password = request.getPassword();
+
+ int bodyLength = 1 // version
+ + sizeof(clientVMID)
+ + INT_LENGTH // failedNodeID
+ + sizeof(username)
+ + sizeof(password);
+
+ out.putInt(bodyLength);
+ out.put(version);
+ putString(out, clientVMID);
+ out.putInt(failedNodeID);
+ putString(out, username);
+ putString(out, password);
}
@Override
- protected ConnectionFactoryCreateConnectionRequest decodeBody(
+ protected CreateConnectionRequest decodeBody(
IoSession session, IoBuffer in) throws Exception
{
- in.getInt(); // skip body length
- return new ConnectionFactoryCreateConnectionRequest();
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+ byte version = in.get();
+ String clientVMID = getString(in);
+ int failedNodeID = in.getInt();
+ String username = getString(in);
+ String password = getString(in);
+
+ return new CreateConnectionRequest(version, clientVMID,
+ failedNodeID, username, password);
}
// Package protected ---------------------------------------------
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionResponseCodec.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionResponseCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -6,20 +6,17 @@
*/
package org.jboss.messaging.core.remoting.codec;
-import static org.jboss.messaging.core.remoting.Constants.NULL_BYTE;
-import static org.jboss.messaging.core.remoting.Constants.UTF_8_DECODER;
-import static org.jboss.messaging.core.remoting.Constants.UTF_8_ENCODER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CONNECTIONFACTORY_CREATECONNECTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONNECTION;
import org.apache.mina.common.IoBuffer;
import org.apache.mina.common.IoSession;
-import org.jboss.messaging.core.remoting.wireformat.ConnectionFactoryCreateConnectionResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
*/
public class ConnectionFactoryCreateConnectionResponseCodec extends
- AbstractPacketCodec<ConnectionFactoryCreateConnectionResponse>
+ AbstractPacketCodec<CreateConnectionResponse>
{
// Constants -----------------------------------------------------
@@ -33,27 +30,28 @@
public ConnectionFactoryCreateConnectionResponseCodec()
{
- super(RESP_CONNECTIONFACTORY_CREATECONNECTION);
+ super(RESP_CREATECONNECTION);
}
// AbstractPackedCodec overrides----------------------------------
@Override
protected void encodeBody(IoSession session,
- ConnectionFactoryCreateConnectionResponse response, IoBuffer out)
+ CreateConnectionResponse response, IoBuffer out)
throws Exception
{
- String id = response.getID();
+ String id = response.getConnectionID();
+ int serverID = response.getServerID();
+
+ int bodyLength = sizeof(id) + INT_LENGTH;
- int bodyLength = id.getBytes().length + 1 /* NULL byte */;
-
out.putInt(bodyLength);
- out.putString(id, UTF_8_ENCODER);
- out.put(NULL_BYTE);
+ putString(out, id);
+ out.putInt(serverID);
}
@Override
- protected ConnectionFactoryCreateConnectionResponse decodeBody(
+ protected CreateConnectionResponse decodeBody(
IoSession session, IoBuffer in) throws Exception
{
int bodyLength = in.getInt();
@@ -61,9 +59,10 @@
{
return null;
}
- String id = in.getString(UTF_8_DECODER);
-
- return new ConnectionFactoryCreateConnectionResponse(id);
+ String id = getString(in);
+ int serverID = in.getInt();
+
+ return new CreateConnectionResponse(id, serverID);
}
// Package protected ---------------------------------------------
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,115 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.jms.destination.JBossDestination.readDestination;
+import static org.jboss.jms.destination.JBossDestination.writeDestination;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONSUMER;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.jms.destination.JBossDestination;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerRequest;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class CreateConsumerRequestCodec extends
+ AbstractPacketCodec<CreateConsumerRequest>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateConsumerRequestCodec()
+ {
+ super(REQ_CREATECONSUMER);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, CreateConsumerRequest request,
+ IoBuffer out) throws Exception
+ {
+ byte[] destination = encode(request.getDestination());
+ String selector = request.getSelector();
+ boolean noLocal = request.isNoLocal();
+ String subName = request.getSubscriptionName();
+ boolean connectionConsumer = request.isConnectionConsumer();
+ boolean autoFlowControl = request.isAutoFlowControl();
+
+ int bodyLength = INT_LENGTH + destination.length + sizeof(selector)
+ + sizeof(subName) + 3;
+
+ out.putInt(bodyLength);
+ out.putInt(destination.length);
+ out.put(destination);
+ putString(out, selector);
+ putBoolean(out, noLocal);
+ putString(out, subName);
+ putBoolean(out, connectionConsumer);
+ putBoolean(out, autoFlowControl);
+ }
+
+ @Override
+ protected CreateConsumerRequest decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ int destinationLength = in.getInt();
+ byte[] b = new byte[destinationLength];
+ in.get(b);
+ JBossDestination destination = decode(b);
+ String selector = getString(in);
+ boolean noLocal = getBoolean(in);
+ String subName = getString(in);
+ boolean connectionConsumer = getBoolean(in);
+ boolean autoflowControl = getBoolean(in);
+
+ return new CreateConsumerRequest(destination, selector, noLocal, subName,
+ connectionConsumer, autoflowControl);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ private static byte[] encode(JBossDestination destination) throws Exception
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ writeDestination(new DataOutputStream(baos), destination);
+ baos.flush();
+ return baos.toByteArray();
+ }
+
+ private static JBossDestination decode(byte[] b) throws Exception
+ {
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ return readDestination(new DataInputStream(bais));
+ }
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerResponseCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateConsumerResponseCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONSUMER;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerResponse;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class CreateConsumerResponseCodec extends
+ AbstractPacketCodec<CreateConsumerResponse>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateConsumerResponseCodec()
+ {
+ super(RESP_CREATECONSUMER);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session,
+ CreateConsumerResponse response, IoBuffer out) throws Exception
+ {
+ String consumerID = response.getConsumerID();
+ int bufferSize = response.getBufferSize();
+ int maxDeliveries = response.getMaxDeliveries();
+ long redeliveryDelay = response.getRedeliveryDelay();
+
+ int bodyLength = sizeof(consumerID) + 2 * INT_LENGTH
+ + LONG_LENGTH;
+
+ out.putInt(bodyLength);
+ putString(out, consumerID);
+ out.putInt(bufferSize);
+ out.putInt(maxDeliveries);
+ out.putLong(redeliveryDelay);
+ }
+
+ @Override
+ protected CreateConsumerResponse decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ String consumerID = getString(in);
+ int bufferSize = in.getInt();
+ int maxDeliveries = in.getInt();
+ long redeliveryDelay = in.getLong();
+
+ return new CreateConsumerResponse(consumerID, bufferSize, maxDeliveries,
+ redeliveryDelay);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,78 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class CreateSessionRequestCodec extends
+ AbstractPacketCodec<CreateSessionRequest>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateSessionRequestCodec()
+ {
+ super(REQ_CREATESESSION);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, CreateSessionRequest request,
+ IoBuffer out) throws Exception
+ {
+ boolean transacted = request.isTransacted();
+ int acknowledgementMode = request.getAcknowledgementMode();
+ boolean xa = request.isXA();
+
+ int bodyLength = 1 + INT_LENGTH + 1;
+
+ out.putInt(bodyLength);
+ putBoolean(out, transacted);
+ out.putInt(acknowledgementMode);
+ putBoolean(out, xa);
+ }
+
+ @Override
+ protected CreateSessionRequest decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ boolean transacted = getBoolean(in);
+ int acknowledgementMode = in.getInt();
+ boolean xa = getBoolean(in);
+
+ return new CreateSessionRequest(transacted, acknowledgementMode, xa);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionResponseCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/CreateSessionResponseCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class CreateSessionResponseCodec extends
+ AbstractPacketCodec<CreateSessionResponse>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateSessionResponseCodec()
+ {
+ super(PacketType.RESP_CREATESESSION);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, CreateSessionResponse response,
+ IoBuffer out) throws Exception
+ {
+ String sessionID = response.getSessionID();
+ int dupsOKBatchSize = response.getDupsOKBatchSize();
+ boolean strictTCK = response.isStrictTCK();
+
+ int bodyLength = sizeof(sessionID) + INT_LENGTH + 1;
+
+ out.putInt(bodyLength);
+ putString(out, sessionID);
+ out.putInt(dupsOKBatchSize);
+ putBoolean(out, strictTCK);
+ }
+
+ @Override
+ protected CreateSessionResponse decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ String sessionID = getString(in);
+ int dupsOKBatchSize = in.getInt();
+ boolean strictTCK = getBoolean(in);
+
+ return new CreateSessionResponse(sessionID, dupsOKBatchSize, strictTCK);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,111 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELIVERMESSAGE;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.contract.Message;
+import org.jboss.messaging.core.impl.message.MessageFactory;
+import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class DeliverMessageCodec extends AbstractPacketCodec<DeliverMessage>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public DeliverMessageCodec()
+ {
+ super(MSG_DELIVERMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, DeliverMessage message,
+ IoBuffer out) throws Exception
+ {
+ Message msg = message.getMessage();
+ byte[] encodedMsg = encode(message.getMessage());
+ String consumerID = message.getConsumerID();
+ long deliveryID = message.getDeliveryID();
+ int deliveryCount = message.getDeliveryCount();
+
+ int bodyLength = 1 + INT_LENGTH + encodedMsg.length + sizeof(consumerID)
+ + LONG_LENGTH + INT_LENGTH;
+ out.putInt(bodyLength);
+
+ out.put(msg.getType());
+ out.putInt(encodedMsg.length);
+ out.put(encodedMsg);
+ putString(out, consumerID);
+ out.putLong(deliveryID);
+ out.putInt(deliveryCount);
+ }
+
+ @Override
+ protected DeliverMessage decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ byte type = in.get();
+ int msgLength = in.getInt();
+ byte[] encodedMsg = new byte[msgLength];
+ in.get(encodedMsg);
+ Message msg = decode(type, encodedMsg);
+ String consumerID = getString(in);
+ long deliveryID = in.getLong();
+ int deliveryCount = in.getInt();
+
+ return new DeliverMessage(msg, consumerID, deliveryID, deliveryCount);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private ----------------------------------------------------
+
+ private static byte[] encode(Message message) throws Exception
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ message.write(new DataOutputStream(baos));
+ baos.flush();
+ return baos.toByteArray();
+ }
+
+ private static Message decode(byte type, byte[] b) throws Exception
+ {
+ Message msg = MessageFactory.createMessage(type);
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ msg.read(new DataInputStream(bais));
+ return msg;
+ }
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_IDBLOCK;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockRequest;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class IDBlockRequestCodec extends AbstractPacketCodec<IDBlockRequest>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public IDBlockRequestCodec()
+ {
+ super(REQ_IDBLOCK);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, IDBlockRequest request,
+ IoBuffer out) throws Exception
+ {
+ out.putInt(INT_LENGTH);
+ out.putInt(request.getSize());
+ }
+
+ @Override
+ protected IDBlockRequest decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ int size = in.getInt();
+
+ return new IDBlockRequest(size);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockResponseCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/IDBlockResponseCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,69 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_IDBLOCK;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockResponse;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class IDBlockResponseCodec extends AbstractPacketCodec<IDBlockResponse>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public IDBlockResponseCodec()
+ {
+ super(RESP_IDBLOCK);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, IDBlockResponse response,
+ IoBuffer out) throws Exception
+ {
+ out.putInt(LONG_LENGTH * 2);
+ out.putLong(response.getLow());
+ out.putLong(response.getHigh());
+ }
+
+ @Override
+ protected IDBlockResponse decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ long low = in.getLong();
+ long high = in.getLong();
+
+ return new IDBlockResponse(low, high);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -7,9 +7,26 @@
package org.jboss.messaging.core.remoting.codec;
import org.apache.mina.filter.codec.demux.DemuxingProtocolCodecFactory;
-import org.jboss.messaging.core.remoting.wireformat.ConnectionFactoryCreateConnectionRequest;
-import org.jboss.messaging.core.remoting.wireformat.ConnectionFactoryCreateConnectionResponse;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
+import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
+import org.jboss.messaging.core.remoting.wireformat.CloseMessage;
+import org.jboss.messaging.core.remoting.wireformat.ClosingRequest;
+import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
+import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockRequest;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockResponse;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
+import org.jboss.messaging.core.remoting.wireformat.SendMessage;
+import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
+import org.jboss.messaging.core.remoting.wireformat.StartConnectionMessage;
import org.jboss.messaging.core.remoting.wireformat.TextPacket;
/**
@@ -37,28 +54,81 @@
super
.addMessageDecoder(ConnectionFactoryCreateConnectionRequestCodec.class);
- super.addMessageEncoder(ConnectionFactoryCreateConnectionRequest.class,
+ super.addMessageEncoder(CreateConnectionRequest.class,
ConnectionFactoryCreateConnectionRequestCodec.class);
super
.addMessageDecoder(ConnectionFactoryCreateConnectionResponseCodec.class);
- super.addMessageEncoder(ConnectionFactoryCreateConnectionResponse.class,
+ super.addMessageEncoder(CreateConnectionResponse.class,
ConnectionFactoryCreateConnectionResponseCodec.class);
// super.addMessageDecoder(ClientDeliveryCodec.class);
// super.addMessageEncoder(ClientDelivery.class,
// ClientDeliveryCodec.class);
//
- // super.addMessageDecoder(ConnectionCreateSessionRequestCodec.class);
- // super.addMessageEncoder(ConnectionCreateSessionRequest.class,
- // ConnectionCreateSessionRequestCodec.class);
- //
- // super.addMessageDecoder(ConnectionCreateSessionResponseCodec.class);
- // super.addMessageEncoder(ConnectionCreateSessionResponse.class,
- // ConnectionCreateSessionResponseCodec.class);
+ super.addMessageDecoder(CreateSessionRequestCodec.class);
+ super.addMessageEncoder(CreateSessionRequest.class,
+ CreateSessionRequestCodec.class);
- }
+ super.addMessageDecoder(CreateSessionResponseCodec.class);
+ super.addMessageEncoder(CreateSessionResponse.class,
+ CreateSessionResponseCodec.class);
+ super.addMessageDecoder(IDBlockRequestCodec.class);
+ super.addMessageEncoder(IDBlockRequest.class, IDBlockRequestCodec.class);
+
+ super.addMessageDecoder(IDBlockResponseCodec.class);
+ super
+ .addMessageEncoder(IDBlockResponse.class,
+ IDBlockResponseCodec.class);
+
+ super.addMessageDecoder(SendMessageCodec.class);
+ super.addMessageEncoder(SendMessage.class, SendMessageCodec.class);
+
+ super.addMessageDecoder(CreateConsumerRequestCodec.class);
+ super.addMessageEncoder(CreateConsumerRequest.class,
+ CreateConsumerRequestCodec.class);
+
+ super.addMessageDecoder(CreateConsumerResponseCodec.class);
+ super.addMessageEncoder(CreateConsumerResponse.class,
+ CreateConsumerResponseCodec.class);
+
+ super.addMessageDecoder(StartConnectionMessageCodec.class);
+ super.addMessageEncoder(StartConnectionMessage.class,
+ StartConnectionMessageCodec.class);
+
+ super.addMessageDecoder(ChangeRateMessageCodec.class);
+ super.addMessageEncoder(ChangeRateMessage.class,
+ ChangeRateMessageCodec.class);
+
+ super.addMessageDecoder(DeliverMessageCodec.class);
+ super.addMessageEncoder(DeliverMessage.class, DeliverMessageCodec.class);
+
+ super.addMessageDecoder(AcknowledgeDeliveryRequestCodec.class);
+ super.addMessageEncoder(AcknowledgeDeliveryRequest.class,
+ AcknowledgeDeliveryRequestCodec.class);
+
+ super.addMessageDecoder(AcknowledgeDeliveryResponseCodec.class);
+ super.addMessageEncoder(AcknowledgeDeliveryResponse.class,
+ AcknowledgeDeliveryResponseCodec.class);
+
+ super.addMessageDecoder(AcknowledgeDeliveriesRequestCodec.class);
+ super.addMessageEncoder(AcknowledgeDeliveriesMessage.class,
+ AcknowledgeDeliveriesRequestCodec.class);
+
+ super.addMessageDecoder(ClosingRequestCodec.class);
+ super.addMessageEncoder(ClosingRequest.class, ClosingRequestCodec.class);
+
+ super.addMessageDecoder(ClosingResponseCodec.class);
+ super.addMessageEncoder(ClosingResponse.class, ClosingResponseCodec.class);
+
+ super.addMessageDecoder(CloseMessageCodec.class);
+ super.addMessageEncoder(CloseMessage.class, CloseMessageCodec.class);
+
+ super.addMessageDecoder(SendTransactionRequestCodec.class);
+ super.addMessageEncoder(SendTransactionMessage.class, SendTransactionRequestCodec.class);
+}
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,107 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.jms.message.JBossMessage;
+import org.jboss.messaging.core.contract.Message;
+import org.jboss.messaging.core.impl.message.MessageFactory;
+import org.jboss.messaging.core.remoting.wireformat.SendMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class SendMessageCodec extends AbstractPacketCodec<SendMessage>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public SendMessageCodec()
+ {
+ super(MSG_SENDMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, SendMessage message,
+ IoBuffer out) throws Exception
+ {
+ byte[] encodedMsg = encode(message.getMessage());
+ boolean checkForDuplicates = message.checkForDuplicates();
+ long sequence = message.getSequence();
+
+ int bodyLength = INT_LENGTH + 1 + encodedMsg.length + 1 + LONG_LENGTH;
+
+ out.putInt(bodyLength);
+ out.put(message.getMessage().getType());
+ out.putInt(encodedMsg.length);
+ out.put(encodedMsg);
+ putBoolean(out, checkForDuplicates);
+ out.putLong(sequence);
+ }
+
+ @Override
+ protected SendMessage decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ byte msgType = in.get();
+ int msgLength = in.getInt();
+ byte[] encodedMsg = new byte[msgLength];
+ in.get(encodedMsg);
+ JBossMessage msg = (JBossMessage) decode(msgType, encodedMsg);
+ boolean checkForDuplicates = getBoolean(in);
+ long sequence = in.getLong();
+
+ return new SendMessage(msg, checkForDuplicates, sequence);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private ----------------------------------------------------
+
+ private static byte[] encode(Message message) throws Exception
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ message.write(new DataOutputStream(baos));
+ baos.flush();
+ return baos.toByteArray();
+ }
+
+ private static Message decode(byte type, byte[] b) throws Exception
+ {
+ Message msg = MessageFactory.createMessage(type);
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ msg.read(new DataInputStream(bais));
+ return msg;
+ }
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionRequestCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.jms.tx.TransactionRequest;
+import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class SendTransactionRequestCodec extends AbstractPacketCodec<SendTransactionMessage>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public SendTransactionRequestCodec()
+ {
+ super(MSG_SENDTRANSACTION);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, SendTransactionMessage request,
+ IoBuffer out) throws Exception
+ {
+ byte[] encodedTxReq = encode(request.getTransactionRequest());
+ boolean checkForDuplicates = request.checkForDuplicates();
+
+ int bodyLength = INT_LENGTH + encodedTxReq.length + 1;
+
+ out.putInt(bodyLength);
+ out.putInt(encodedTxReq.length);
+ out.put(encodedTxReq);
+ putBoolean(out, checkForDuplicates);
+ }
+
+ @Override
+ protected SendTransactionMessage decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ int txReqLength = in.getInt();
+ byte[] encodedTxReq = new byte[txReqLength];
+ in.get(encodedTxReq);
+ TransactionRequest tr = decode(encodedTxReq);
+ boolean checkForDuplicates = getBoolean(in);
+
+ return new SendTransactionMessage(tr, checkForDuplicates);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private ----------------------------------------------------
+
+ private static byte[] encode(TransactionRequest tr) throws Exception
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ tr.write(new DataOutputStream(baos));
+ baos.flush();
+ return baos.toByteArray();
+ }
+
+ private static TransactionRequest decode(byte[] b) throws Exception
+ {
+ TransactionRequest tr = new TransactionRequest();
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ tr.read(new DataInputStream(bais));
+ return tr;
+ }
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/StartConnectionMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/StartConnectionMessageCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/StartConnectionMessageCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,62 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.StartConnectionMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class StartConnectionMessageCodec extends
+ AbstractPacketCodec<StartConnectionMessage>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public StartConnectionMessageCodec()
+ {
+ super(MSG_STARTCONNECTION);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, StartConnectionMessage message,
+ IoBuffer out) throws Exception
+ {
+ // no body
+ out.putInt(0);
+ }
+
+ @Override
+ protected StartConnectionMessage decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ in.getInt(); // skip body length
+
+ return new StartConnectionMessage();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private ----------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/TextPacketCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/TextPacketCodec.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/TextPacketCodec.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -6,9 +6,6 @@
*/
package org.jboss.messaging.core.remoting.codec;
-import static org.jboss.messaging.core.remoting.Constants.NULL_BYTE;
-import static org.jboss.messaging.core.remoting.Constants.UTF_8_DECODER;
-import static org.jboss.messaging.core.remoting.Constants.UTF_8_ENCODER;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.TEXT;
import org.apache.mina.common.IoBuffer;
@@ -42,11 +39,10 @@
protected void encodeBody(IoSession session, TextPacket packet, IoBuffer out)
throws Exception
{
- int bodyLength = packet.getText().getBytes().length + 1; // for NULL byte
+ String text = packet.getText();
- out.putInt(bodyLength);
- out.putString(packet.getText(), UTF_8_ENCODER);
- out.put(NULL_BYTE);
+ out.putInt(sizeof(text));
+ putString(out, text);
}
@Override
@@ -58,7 +54,7 @@
{
return null;
}
- String text = in.getString(UTF_8_DECODER);
+ String text = getString(in);
return new TextPacket(text);
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/ClientHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/ClientHandler.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/ClientHandler.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -9,11 +9,14 @@
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.reqres.Response;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
import org.jboss.messaging.core.remoting.PacketHandler;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class ClientHandler extends IoHandlerAdapter
{
@@ -36,11 +39,13 @@
if (message instanceof AbstractPacket)
{
AbstractPacket packet = (AbstractPacket) message;
+ System.err.println("ClientHandler.messageReceived() packet: " + packet);
String targetID = packet.getTargetID();
- PacketHandler handler = (PacketHandler) session.getAttribute(targetID);
+ PacketHandler handler = PacketDispatcher.client.getHandler(targetID);
if (handler != null)
{
- handler.handle(packet);
+ System.err.println("ClientHandler.messageReceived() handler: " + handler);
+ handler.handle(packet, session);
} else
{
System.err
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/PacketInspector.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/PacketInspector.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/PacketInspector.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -15,6 +15,8 @@
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class PacketInspector implements ResponseInspector
{
Deleted: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/RemoteDispatcherImpl.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/RemoteDispatcherImpl.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/internal/RemoteDispatcherImpl.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -1,243 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.core.remoting.internal;
-
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.jboss.messaging.core.remoting.Assert.assertValidID;
-import static org.jboss.messaging.core.remoting.Constants.CONNECTION_TIMEOUT;
-import static org.jboss.messaging.core.remoting.TransportType.HTTP;
-import static org.jboss.messaging.core.remoting.TransportType.TCP;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.mina.common.CloseFuture;
-import org.apache.mina.common.ConnectFuture;
-import org.apache.mina.common.DefaultIoFilterChainBuilder;
-import org.apache.mina.common.IoSession;
-import org.apache.mina.filter.codec.ProtocolCodecFilter;
-import org.apache.mina.filter.logging.LoggingFilter;
-import org.apache.mina.filter.logging.MdcInjectionFilter;
-import org.apache.mina.filter.reqres.Request;
-import org.apache.mina.filter.reqres.RequestResponseFilter;
-import org.apache.mina.filter.reqres.RequestTimeoutException;
-import org.apache.mina.filter.reqres.Response;
-import org.apache.mina.filter.ssl.SslFilter;
-import org.apache.mina.transport.socket.nio.NioSocketConnector;
-import org.jboss.messaging.core.remoting.PacketHandler;
-import org.jboss.messaging.core.remoting.RemoteDispatcher;
-import org.jboss.messaging.core.remoting.TransportType;
-import org.jboss.messaging.core.remoting.codec.PacketCodecFactory;
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-
-/**
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
- */
-public class RemoteDispatcherImpl implements RemoteDispatcher
-{
-
- // Attributes ----------------------------------------------------
-
- private IoSession session;
- private SslFilter sslFilter;
-
- // By default, a blocking request will timeout after 5 seconds
- private int blockingRequestTimeout = 5;
- private TimeUnit blockingRequestTimeUnit = SECONDS;
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- // Public --------------------------------------------------------
-
- public RemoteDispatcherImpl()
- {
- }
-
- // RemoteDispatcher implementation -------------------------------
-
- public void connect(int port, TransportType transport) throws Exception
- {
- connect(port, transport, false);
- }
-
- public void connect(int port, TransportType transport, boolean useSSL)
- throws Exception
- {
- assert port > 0;
- assert transport != null;
-
- NioSocketConnector connector = new NioSocketConnector();
-
- connector.setConnectTimeout(CONNECTION_TIMEOUT);
-
- if (useSSL)
- addSSLSupport(connector.getFilterChain());
-
- MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
- connector.getFilterChain().addLast("mdc", mdcInjectionFilter);
-
- if (transport == TCP)
- {
- connector.getFilterChain().addLast("codec",
- new ProtocolCodecFilter(new PacketCodecFactory()));
- } else
- {
- assert transport == HTTP;
-
- // TODO support HTTP
- // URL url = new URL("http://localhost:" + port + "/");
- // connector.getFilterChain().addLast("http_codec",
- // new ProtocolCodecFilter(new HttpProtocolCodecFactory(url)));
- // connector.getFilterChain().addLast("http_logger", new
- // LoggingFilter());
- // connector.getFilterChain().addLast("http_filter",
- // new HTTPFilter(false));
- }
-
- addBlockingRequestResponseFilter(connector.getFilterChain());
-
- connector.getFilterChain().addLast("logger", new LoggingFilter());
-
- connector.setHandler(new ClientHandler());
- InetSocketAddress address = new InetSocketAddress(port);
- ConnectFuture future = connector.connect(address);
- future.awaitUninterruptibly();
- if (!future.isConnected())
- {
- throw new IOException("Cannot connect to " + address.toString());
- }
- this.session = future.getSession();
- }
-
- public boolean disconnect() throws Exception
- {
- assert session != null;
-
- if (sslFilter != null)
- {
- sslFilter.stopSsl(session).awaitUninterruptibly();
- // FIXME: w/o the delay, an exception is thrown:
- // "Inbound closed before receiving peer's close_notify"
- Thread.sleep(500);
- }
- CloseFuture closeFuture = session.close().awaitUninterruptibly();
- return closeFuture.isClosed();
- }
-
- public void register(PacketHandler handler)
- {
- assert session != null;
- assertValidID(handler.getID());
- assert handler != null;
-
- session.setAttribute(handler.getID(), handler);
- }
-
- public void unregister(String handlerID)
- {
- assert session != null;
- assertValidID(handlerID);
-
- session.removeAttribute(handlerID);
- }
-
- public void sendOneWay(AbstractPacket packet)
- {
- assert packet != null;
- checkConnected();
-
- session.write(packet);
- }
-
- public void sendOneWay(AbstractPacket packet, PacketHandler callbackHandler)
- {
- assert packet != null;
- assert callbackHandler != null;
- checkConnected();
-
- register(callbackHandler);
- packet.setCallbackID(callbackHandler.getID());
- session.write(packet);
- }
-
- public AbstractPacket sendBlocking(AbstractPacket packet)
- throws TimeoutException
- {
- assert packet != null;
- checkConnected();
-
- packet.setCorrelationID(System.nanoTime());
-
- // TODO request timeout must be configurable
- Request req = new Request(packet.getCorrelationID(), packet,
- blockingRequestTimeout, blockingRequestTimeUnit);
- session.write(req);
- Response response;
- try
- {
- response = req.awaitResponse();
- return (AbstractPacket) response.getMessage();
- } catch (RequestTimeoutException e)
- {
- TimeoutException toe = new TimeoutException();
- toe.initCause(e);
- throw toe;
- } catch (InterruptedException e)
- {
- TimeoutException toe = new TimeoutException();
- toe.initCause(e);
- throw toe;
- }
- }
-
- public void setBlockingRequestTimeout(int timeout, TimeUnit unit)
- {
- this.blockingRequestTimeout = timeout;
- this.blockingRequestTimeUnit = unit;
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- private void addBlockingRequestResponseFilter(
- DefaultIoFilterChainBuilder chain)
- {
- ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
- RequestResponseFilter filter = new RequestResponseFilter(
- new PacketInspector(), scheduler);
- chain.addLast("reqres", filter);
- }
-
- private void addSSLSupport(DefaultIoFilterChainBuilder chain)
- throws Exception
- {
- // TODO support SSL
- // this.sslFilter = new
- // SslFilter(BogusSslContextFactory.getInstance(false));
- // sslFilter.setUseClientMode(true);
- // chain.addLast("sslFilter", sslFilter);
- }
-
- private void checkConnected()
- {
- if (session == null)
- {
- throw new IllegalStateException("RemoteDispatcher is not connected.");
- }
- }
-
- // Inner classes -------------------------------------------------
-}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/server/ServerHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/server/ServerHandler.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/server/ServerHandler.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,75 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.server;
+
+import org.apache.mina.common.IoHandlerAdapter;
+import org.apache.mina.common.IoSession;
+import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class ServerHandler extends IoHandlerAdapter
+{
+ // Constants -----------------------------------------------------
+
+ private static final Logger log = Logger.getLogger(ServerHandler.class);
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ // IoHandlerAdapter overrides ------------------------------------
+
+ @Override
+ public void exceptionCaught(IoSession session, Throwable cause)
+ {
+ // Close connection when unexpected exception is caught.
+ session.close();
+ }
+
+ @Override
+ public void messageReceived(final IoSession session, Object msg)
+ {
+ if (!(msg instanceof AbstractPacket))
+ {
+ log.error("Unsupported message: " + msg);
+ return;
+ }
+
+ AbstractPacket packet = (AbstractPacket) msg;
+
+ String targetID = packet.getTargetID();
+ PacketHandler handler = PacketDispatcher.server.getHandler(targetID);
+ if (handler != null)
+ {
+ handler.handle(packet, session);
+ return;
+ } else
+ {
+ log.warn("Unhandled packet:" + packet);
+ }
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+
+}
\ No newline at end of file
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AbstractPacket.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AbstractPacket.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AbstractPacket.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -1,10 +1,20 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
package org.jboss.messaging.core.remoting.wireformat;
import static org.jboss.messaging.core.remoting.Assert.assertValidID;
-import static org.jboss.messaging.core.remoting.Constants.NO_CALLBACK_ID;
import static org.jboss.messaging.core.remoting.Constants.NO_CORRELATION_ID;
-import static org.jboss.messaging.core.remoting.Constants.NO_TARGET_ID;
+import static org.jboss.messaging.core.remoting.Constants.NO_ID_SET;
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
public class AbstractPacket
{
// Constants -----------------------------------------------------
@@ -13,9 +23,9 @@
private long correlationID = NO_CORRELATION_ID;
- private String targetID = NO_TARGET_ID;
+ private String targetID = NO_ID_SET;
- private String callbackID = NO_CALLBACK_ID;
+ private String callbackID = NO_ID_SET;
private final PacketType type;
@@ -71,20 +81,28 @@
return callbackID;
}
+ public void normalize(AbstractPacket other)
+ {
+ assert other != null;
+
+ setCorrelationID(other.getCorrelationID());
+ setTargetID(other.getCallbackID());
+ }
+
@Override
public String toString()
{
return getParentString() + "]";
}
+ // Package protected ---------------------------------------------
+
protected String getParentString()
{
return "PACKET[type=" + type + ", correlationID=" + correlationID
- + ", targetID=" + targetID + ", callabckID=" + callbackID;
+ + ", targetID=" + targetID + ", callbackID=" + callbackID;
}
- // Package protected ---------------------------------------------
-
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveriesMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveriesMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveriesMessage.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_ACKDELIVERIES;
+
+import java.util.List;
+
+import org.jboss.jms.delegate.Ack;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class AcknowledgeDeliveriesMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final List<Ack> acks;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public AcknowledgeDeliveriesMessage(List<Ack> acks)
+ {
+ super(MSG_ACKDELIVERIES);
+
+ assert acks != null;
+ assert acks.size() != 0;
+
+ this.acks = acks;
+ }
+
+
+ // Public --------------------------------------------------------
+
+ public List<Ack> getAcks()
+ {
+ return acks;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", acks=" + acks + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryRequest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_ACKDELIVERY;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class AcknowledgeDeliveryRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final long deliveryID;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public AcknowledgeDeliveryRequest(long deliveryID)
+ {
+ super(REQ_ACKDELIVERY);
+
+ this.deliveryID = deliveryID;
+ }
+
+ // Public --------------------------------------------------------
+
+ public long getDeliveryID()
+ {
+ return deliveryID;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", deliveryID=" + deliveryID + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/AcknowledgeDeliveryResponse.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_ACKDELIVERY;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class AcknowledgeDeliveryResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final boolean acknowledged;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public AcknowledgeDeliveryResponse(boolean acknowledged)
+ {
+ super(RESP_ACKDELIVERY);
+
+ this.acknowledged = acknowledged;
+ }
+
+ // Public --------------------------------------------------------
+
+ public boolean isAcknowledged()
+ {
+ return acknowledged;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", acknowledged=" + acknowledged + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ChangeRateMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ChangeRateMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ChangeRateMessage.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CHANGERATE;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class ChangeRateMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final float rate;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ChangeRateMessage(float rate)
+ {
+ super(MSG_CHANGERATE);
+
+ this.rate = rate;
+ }
+
+ // Public --------------------------------------------------------
+
+ public float getRate()
+ {
+ return rate;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", rate=" + rate + "]";
+ }
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CloseMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CloseMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CloseMessage.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,41 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class CloseMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CloseMessage()
+ {
+ super(MSG_CLOSE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingRequest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class ClosingRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final long sequence;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ClosingRequest(long sequence)
+ {
+ super(REQ_CLOSING);
+
+ this.sequence = sequence;
+ }
+
+ // Public --------------------------------------------------------
+
+ public long getSequence()
+ {
+ return sequence;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", sequence=" + sequence + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ClosingResponse.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+
+/**
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class ClosingResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final long id;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ClosingResponse(long id)
+ {
+ super(PacketType.RESP_CLOSING);
+
+ this.id = id;
+ }
+
+ // Public --------------------------------------------------------
+
+ public long getID()
+ {
+ return id;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", id=" + id + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Deleted: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionRequest.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionRequest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -1,41 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.core.remoting.wireformat;
-
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CONNECTIONFACTORY_CREATECONNECTION;
-
-/**
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
- */
-public class ConnectionFactoryCreateConnectionRequest extends AbstractPacket
-{
- // Constants -----------------------------------------------------
-
- // Attributes ----------------------------------------------------
-
- // TODO: add auth credentials
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- public ConnectionFactoryCreateConnectionRequest()
- {
- super(REQ_CONNECTIONFACTORY_CREATECONNECTION);
- }
-
- // Public --------------------------------------------------------
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- // Inner classes -------------------------------------------------
-
-}
Deleted: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionResponse.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionResponse.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -1,56 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.core.remoting.wireformat;
-
-import static org.jboss.messaging.core.remoting.Assert.assertValidID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CONNECTIONFACTORY_CREATECONNECTION;
-
-/**
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
- */
-public class ConnectionFactoryCreateConnectionResponse extends AbstractPacket
-{
- // Constants -----------------------------------------------------
-
- // Attributes ----------------------------------------------------
-
- private final String id;
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- public ConnectionFactoryCreateConnectionResponse(String id)
- {
- super(RESP_CONNECTIONFACTORY_CREATECONNECTION);
-
- assertValidID(id);
-
- this.id = id;
- }
-
- // Public --------------------------------------------------------
-
- public String getID()
- {
- return id;
- }
-
- @Override
- public String toString()
- {
- return getParentString() + ", id=" + id + "]";
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- // Inner classes -------------------------------------------------
-}
Copied: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java (from rev 3327, branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionRequest.java)
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,95 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.Assert.assertValidID;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class CreateConnectionRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final byte version;
+ private final String clientVMID;
+ private final String username;
+ private final String password;
+ private final int failedNodeID;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateConnectionRequest(byte version,
+ String clientVMID, int failedNodeID, String username, String password)
+ {
+ super(REQ_CREATECONNECTION);
+
+ assertValidID(clientVMID);
+ this.version = version;
+ this.clientVMID = clientVMID;
+ this.failedNodeID = failedNodeID;
+ this.username = username;
+ this.password = password;
+ }
+
+ // Public --------------------------------------------------------
+
+ public byte getVersion()
+ {
+ return version;
+ }
+
+ public String getClientVMID()
+ {
+ return clientVMID;
+ }
+
+ public int getFailedNodeID()
+ {
+ return failedNodeID;
+ }
+
+ public String getUsername()
+ {
+ return username;
+ }
+
+ public String getPassword()
+ {
+ return password;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buf = new StringBuffer(getParentString());
+ buf.append(", version=" + version);
+ buf.append(", clientVMID=" + clientVMID);
+ buf.append(", failedNodeID=" + failedNodeID);
+ buf.append(", username=" + username);
+ buf.append(", password=" + password);
+ buf.append("]");
+ return buf.toString();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+
+}
Copied: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionResponse.java (from rev 3327, branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/ConnectionFactoryCreateConnectionResponse.java)
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionResponse.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.Assert.assertValidID;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONNECTION;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class CreateConnectionResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final String connectionID;
+ private final int serverID;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateConnectionResponse(String connectionID, int serverID)
+ {
+ super(RESP_CREATECONNECTION);
+
+ assertValidID(connectionID);
+
+ this.connectionID = connectionID;
+ this.serverID = serverID;
+ }
+
+ // Public --------------------------------------------------------
+
+ public String getConnectionID()
+ {
+ return connectionID;
+ }
+
+ public int getServerID()
+ {
+ return serverID;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", id=" + connectionID + ", serverID=" + serverID + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerRequest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,103 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import org.jboss.jms.destination.JBossDestination;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class CreateConsumerRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final JBossDestination destination;
+ private final String selector;
+ private final boolean noLocal;
+ private final String subscriptionName;
+ private final boolean connectionConsumer;
+ private final boolean autoFlowControl;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateConsumerRequest(JBossDestination destination, String selector,
+ boolean noLocal, String subscriptionName, boolean connectionConsumer,
+ boolean autoFlowControl)
+ {
+ super(PacketType.REQ_CREATECONSUMER);
+
+ assert destination != null;
+
+ this.destination = destination;
+ this.selector = selector;
+ this.noLocal = noLocal;
+ this.subscriptionName = subscriptionName;
+ this.connectionConsumer = connectionConsumer;
+ this.autoFlowControl = autoFlowControl;
+ }
+
+ // Public --------------------------------------------------------
+
+ public JBossDestination getDestination()
+ {
+ return destination;
+ }
+
+ public String getSelector()
+ {
+ return selector;
+ }
+
+ public boolean isNoLocal()
+ {
+ return noLocal;
+ }
+
+ public String getSubscriptionName()
+ {
+ return subscriptionName;
+ }
+
+ public boolean isConnectionConsumer()
+ {
+ return connectionConsumer;
+ }
+
+ public boolean isAutoFlowControl()
+ {
+ return autoFlowControl;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buff = new StringBuffer(getParentString());
+ buff.append(", destination=" + destination);
+ buff.append(", selector=" + selector);
+ buff.append(", noLocal=" + noLocal);
+ buff.append(", subName=" + subscriptionName);
+ buff.append(", connectionConsumer=" + connectionConsumer);
+ buff.append(", autoFlowControl=" + autoFlowControl);
+ buff.append("]");
+ return buff.toString();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConsumerResponse.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,88 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONSUMER;
+
+import org.jboss.messaging.core.remoting.Assert;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class CreateConsumerResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final String consumerID;
+ private final int bufferSize;
+ private final int maxDeliveries;
+ private final long redeliveryDelay;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateConsumerResponse(String consumerID, int bufferSize,
+ int maxDeliveries, long redeliveryDelay)
+ {
+ super(RESP_CREATECONSUMER);
+
+ Assert.assertValidID(consumerID);
+
+ this.consumerID = consumerID;
+ this.bufferSize = bufferSize;
+ this.maxDeliveries = maxDeliveries;
+ this.redeliveryDelay = redeliveryDelay;
+ }
+
+ // Public --------------------------------------------------------
+
+ public String getConsumerID()
+ {
+ return consumerID;
+ }
+
+ public int getBufferSize()
+ {
+ return bufferSize;
+ }
+
+ public int getMaxDeliveries()
+ {
+ return maxDeliveries;
+ }
+
+ public long getRedeliveryDelay()
+ {
+ return redeliveryDelay;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buf = new StringBuffer(getParentString());
+ buf.append(", consumerID=" + consumerID);
+ buf.append(", bufferSize=" + bufferSize);
+ buf.append(", maxDeliveries=" + maxDeliveries);
+ buf.append(", redeliveryDelay=" + redeliveryDelay);
+ buf.append("]");
+ return buf.toString();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionRequest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,75 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class CreateSessionRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final boolean transacted;
+
+ private final int acknowledgementMode;
+
+ private final boolean xa;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateSessionRequest(boolean transacted, int acknowledgementMode,
+ boolean xa)
+ {
+ super(REQ_CREATESESSION);
+
+ this.transacted = transacted;
+ this.acknowledgementMode = acknowledgementMode;
+ this.xa = xa;
+ }
+
+ // Public --------------------------------------------------------
+
+ public boolean isTransacted()
+ {
+ return transacted;
+ }
+
+ public int getAcknowledgementMode()
+ {
+ return acknowledgementMode;
+ }
+
+ public boolean isXA()
+ {
+ return xa;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", transacted=" + transacted
+ + ", acknowledgementMode=" + acknowledgementMode + ", xa=" + xa
+ + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/CreateSessionResponse.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.Assert.assertValidID;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class CreateSessionResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final String sessionID;
+
+ private final int dupsOKBatchSize;
+
+ private final boolean strictTCK;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public CreateSessionResponse(String sessionID, int dupsOKBatchSize,
+ boolean strictTCK)
+ {
+ super(PacketType.RESP_CREATESESSION);
+
+ assertValidID(sessionID);
+
+ this.sessionID = sessionID;
+ this.dupsOKBatchSize = dupsOKBatchSize;
+ this.strictTCK = strictTCK;
+ }
+
+ // Public --------------------------------------------------------
+
+ public String getSessionID()
+ {
+ return sessionID;
+ }
+
+ public int getDupsOKBatchSize()
+ {
+ return dupsOKBatchSize;
+ }
+
+ public boolean isStrictTCK()
+ {
+ return strictTCK;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", sessionID=" + sessionID
+ + ", dupsOKBatchSize=" + dupsOKBatchSize + ", strictTCK="
+ + strictTCK + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/DeliverMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/DeliverMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/DeliverMessage.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,95 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.Assert.assertValidID;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELIVERMESSAGE;
+
+import org.jboss.messaging.core.contract.Message;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class DeliverMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final Message message;
+
+ private final String consumerID;
+
+ private final long deliveryID;
+
+ private final int deliveryCount;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public DeliverMessage(Message message, String consumerID, long deliveryID,
+ int deliveryCount)
+ {
+ super(MSG_DELIVERMESSAGE);
+
+ assert message != null;
+ assertValidID(consumerID);
+
+ this.message = message;
+ this.consumerID = consumerID;
+ this.deliveryID = deliveryID;
+ this.deliveryCount = deliveryCount;
+
+ }
+
+ // Public --------------------------------------------------------
+
+ public Message getMessage()
+ {
+ return message;
+ }
+
+ public String getConsumerID()
+ {
+ return consumerID;
+ }
+
+ public long getDeliveryID()
+ {
+ return deliveryID;
+ }
+
+ public int getDeliveryCount()
+ {
+ return deliveryCount;
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buf = new StringBuffer(getParentString());
+ buf.append(", message=" + message);
+ buf.append(", consumerID=" + consumerID);
+ buf.append(", deliveryID=" + deliveryID);
+ buf.append(", deliveryCount=" + deliveryCount);
+ buf.append("]");
+ return buf.toString();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockRequest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_IDBLOCK;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class IDBlockRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final int size;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public IDBlockRequest(int size)
+ {
+ super(REQ_IDBLOCK);
+
+ this.size = size;
+ }
+
+ // Public --------------------------------------------------------
+
+ public int getSize()
+ {
+ return size;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", size=" + size + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/IDBlockResponse.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_IDBLOCK;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class IDBlockResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final long low;
+ private final long high;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ /**
+ *
+ */
+ public IDBlockResponse(long low, long high)
+ {
+ super(RESP_IDBLOCK);
+
+ this.low = low;
+ this.high = high;
+ }
+
+ // Public --------------------------------------------------------
+
+ public long getLow()
+ {
+ return low;
+ }
+
+ public long getHigh()
+ {
+ return high;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", low=" + low + ", high=" + high + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/NullPacket.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/NullPacket.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/NullPacket.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -10,6 +10,8 @@
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class NullPacket extends AbstractPacket
{
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -8,17 +8,43 @@
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public enum PacketType
{
+ // FIXME better choice of byte value...
+
NULL((byte)1),
- CLIENT_DELIVERY((byte) 2),
TEXT((byte) 3),
- REQ_CONNECTIONFACTORY_CREATECONNECTION((byte) 100),
- RESP_CONNECTIONFACTORY_CREATECONNECTION((byte) 100100),
- REQ_CONNECTION_CREATESESSION((byte) 201),
- RESP_CONNECTION_CREATESESSION((byte) 100200);
-
+ // Connection factory
+ REQ_CREATECONNECTION((byte) 4),
+ RESP_CREATECONNECTION((byte) 5),
+ // Connection
+ REQ_IDBLOCK((byte)6),
+ RESP_IDBLOCK((byte)7),
+ REQ_CREATESESSION((byte) 8),
+ RESP_CREATESESSION((byte) 9),
+ MSG_STARTCONNECTION((byte)10),
+ MSG_SENDTRANSACTION((byte)11),
+ RESP_SENDTRANSACTION((byte)12),
+ // Session
+ REQ_CREATECONSUMER((byte)13),
+ RESP_CREATECONSUMER((byte)14),
+ MSG_SENDMESSAGE((byte)15),
+ MSG_DELIVERMESSAGE((byte)16),
+ REQ_ACKDELIVERY((byte)17),
+ RESP_ACKDELIVERY((byte)18),
+ MSG_ACKDELIVERIES((byte)19),
+ RESP_ACKDELIVERIES((byte)20),
+ // Consumer
+ MSG_CHANGERATE((byte)21),
+ // Misc
+ REQ_CLOSING((byte)22),
+ RESP_CLOSING((byte)23),
+ MSG_CLOSE((byte)24);
+
+
private byte type;
PacketType(byte type)
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendMessage.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
+
+import org.jboss.jms.message.JBossMessage;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class SendMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final JBossMessage message;
+ private final boolean checkForDuplicates;
+ private final long sequence;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public SendMessage(JBossMessage message, boolean checkForDuplicates,
+ long sequence)
+ {
+ super(MSG_SENDMESSAGE);
+
+ assert message != null;
+
+ this.message = message;
+ this.checkForDuplicates = checkForDuplicates;
+ this.sequence = sequence;
+ }
+
+ // Public --------------------------------------------------------
+
+ public JBossMessage getMessage()
+ {
+ return message;
+ }
+
+ public boolean checkForDuplicates()
+ {
+ return checkForDuplicates;
+ }
+
+ public long getSequence()
+ {
+ return sequence;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", message=" + message
+ + ", checkForDuplicates=" + checkForDuplicates + ", sequence="
+ + sequence + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendTransactionMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendTransactionMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/SendTransactionMessage.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import org.jboss.jms.tx.TransactionRequest;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class SendTransactionMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final TransactionRequest transactionRequest;
+ private final boolean checkForDuplicates;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public SendTransactionMessage(TransactionRequest transactionRequest,
+ boolean checkForDuplicates)
+ {
+ super(PacketType.MSG_SENDTRANSACTION);
+
+ assert transactionRequest != null;
+
+ this.transactionRequest = transactionRequest;
+ this.checkForDuplicates = checkForDuplicates;
+ }
+
+ // Public --------------------------------------------------------
+
+ public TransactionRequest getTransactionRequest()
+ {
+ return transactionRequest;
+ }
+
+ public boolean checkForDuplicates()
+ {
+ return checkForDuplicates;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", transactionRequest=" + transactionRequest
+ + ", checkForDuplicates=" + checkForDuplicates + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/StartConnectionMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/StartConnectionMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/StartConnectionMessage.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,41 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class StartConnectionMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public StartConnectionMessage()
+ {
+ super(MSG_STARTCONNECTION);
+ }
+
+ // Public --------------------------------------------------------
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/TextPacket.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/TextPacket.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/TextPacket.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -8,10 +8,10 @@
import static org.jboss.messaging.core.remoting.wireformat.PacketType.TEXT;
-
-
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class TextPacket extends AbstractPacket
{
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -14,15 +14,17 @@
import java.util.List;
import java.util.concurrent.TimeoutException;
+import org.apache.mina.common.IoSession;
import org.jboss.messaging.core.remoting.AbstractPacketHandler;
-import org.jboss.messaging.core.remoting.RemoteDispatcher;
-import org.jboss.messaging.core.remoting.RemoteDispatcherFactory;
+import org.jboss.messaging.core.remoting.Client;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
import org.jboss.messaging.core.remoting.wireformat.TextPacket;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class RemoteDispatcherTest extends TestSupport
{
@@ -38,11 +40,11 @@
public void testCanNotSendPacketIfNotConnected() throws Exception
{
- RemoteDispatcher dispatcher = RemoteDispatcherFactory.newDispatcher();
-
+ Client client = new Client();
+
try
{
- dispatcher.sendOneWay(new NullPacket());
+ client.sendOneWay(new NullPacket());
fail("can not send a packet if the dispatcher is not connected");
} catch (IllegalStateException e)
{
@@ -53,7 +55,7 @@
public void testSendOneWay() throws Exception
{
TextPacket packet = new TextPacket("testSendOneWay");
- clientDispatcher.sendOneWay(packet);
+ client.sendOneWay(packet);
Thread.sleep(300);
@@ -69,7 +71,7 @@
for (int i = 0; i < MANY_MESSAGES; i++)
{
packets[i] = new TextPacket("testSendManyOneWay " + i);
- clientDispatcher.sendOneWay(packets[i]);
+ client.sendOneWay(packets[i]);
}
List<AbstractPacket> receivedPackets = serverHandler.getPackets();
@@ -95,7 +97,7 @@
TextPacket packet = new TextPacket("testSendOneWayWithCallbackHandler");
- clientDispatcher.sendOneWay(packet, callbackHandler);
+ client.sendOneWay(packet, callbackHandler);
assertEquals(0, callbackHandler.getPackets().size());
Thread.sleep(600);
@@ -109,7 +111,7 @@
{
TextPacket request = new TextPacket("testSendBlocking");
- AbstractPacket receivedPacket = clientDispatcher.sendBlocking(request);
+ AbstractPacket receivedPacket = client.sendBlocking(request);
assertNotNull(receivedPacket);
assertTrue(receivedPacket instanceof TextPacket);
@@ -119,14 +121,14 @@
public void testSendBlockingWithTimeout() throws Exception
{
- clientDispatcher.setBlockingRequestTimeout(5, SECONDS);
+ client.setBlockingRequestTimeout(5, SECONDS);
serverHandler.setSleepTime(7, SECONDS);
AbstractPacket packet = new TextPacket("testSendBlockingWithTimeout");
try
{
- clientDispatcher.sendBlocking(packet);
+ client.sendBlocking(packet);
fail("a RequestTimeoutException should be thrown");
} catch (TimeoutException e)
{
@@ -145,7 +147,7 @@
@Override
protected void tearDown() throws Exception
{
- clientDispatcher.disconnect();
+ client.disconnect();
serverAcceptor.unbind();
}
@@ -166,7 +168,7 @@
packets = new ArrayList<TextPacket>();
}
- public void handle(AbstractPacket packet)
+ public void handle(AbstractPacket packet, IoSession session)
{
packets.add((TextPacket) packet);
}
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -6,8 +6,8 @@
*/
package org.jboss.test.messaging.core.remoting;
-import static org.jboss.messaging.core.remoting.Constants.NO_CALLBACK_ID;
import static org.jboss.messaging.core.remoting.Constants.NO_CORRELATION_ID;
+import static org.jboss.messaging.core.remoting.Constants.NO_ID_SET;
import static org.jboss.messaging.core.remoting.TransportType.HTTP;
import static org.jboss.test.messaging.core.remoting.TestSupport.reverse;
@@ -24,6 +24,8 @@
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class ReverseServerHandler extends IoHandlerAdapter
{
@@ -89,7 +91,7 @@
Thread.sleep(sleepTime);
TextPacket p = new TextPacket(reverse(incomingPacket.getText()));
p.setCorrelationID(incomingPacket.getCorrelationID());
- if (!NO_CALLBACK_ID.equals(incomingPacket.getCallbackID()))
+ if (!NO_ID_SET.equals(incomingPacket.getCallbackID()))
{
p.setTargetID(incomingPacket.getCallbackID());
}
@@ -124,7 +126,7 @@
private boolean mustReply(AbstractPacket incomingPacket)
{
boolean mustReply = (incomingPacket.getCorrelationID() != NO_CORRELATION_ID)
- || (!NO_CALLBACK_ID.equals(incomingPacket.getCallbackID()));
+ || (!NO_ID_SET.equals(incomingPacket.getCallbackID()));
return mustReply;
}
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -13,11 +13,14 @@
import org.apache.mina.common.IoSession;
import org.jboss.messaging.core.remoting.AbstractPacketHandler;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
import org.jboss.messaging.core.remoting.wireformat.TextPacket;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class TargetHandlerTest extends TestSupport
{
@@ -35,10 +38,10 @@
{
ClientTargetHandler targetHandler = new ClientTargetHandler();
- clientDispatcher.register(targetHandler);
+ PacketDispatcher.client.register(targetHandler);
// send a packet to create the IoSession on the server
- clientDispatcher.sendOneWay(new TextPacket(
+ client.sendOneWay(new TextPacket(
"testClientHandlePacketSentByServer from client"));
Thread.sleep(300);
@@ -68,7 +71,7 @@
public void tearDown() throws Exception
{
- clientDispatcher.disconnect();
+ client.disconnect();
serverAcceptor.unbind();
}
@@ -89,7 +92,7 @@
packets = new ArrayList<TextPacket>();
}
- public void handle(AbstractPacket packet)
+ public void handle(AbstractPacket packet, IoSession session)
{
packets.add((TextPacket) packet);
}
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -18,13 +18,14 @@
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.filter.logging.MdcInjectionFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
-import org.jboss.messaging.core.remoting.RemoteDispatcher;
-import org.jboss.messaging.core.remoting.RemoteDispatcherFactory;
+import org.jboss.messaging.core.remoting.Client;
import org.jboss.messaging.core.remoting.TransportType;
import org.jboss.messaging.core.remoting.codec.PacketCodecFactory;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public abstract class TestSupport extends TestCase
{
@@ -44,7 +45,7 @@
ReverseServerHandler serverHandler;
- RemoteDispatcher clientDispatcher;
+ Client client;
// Static --------------------------------------------------------
@@ -130,8 +131,8 @@
void startClient(int port, TransportType transport, boolean useSSL)
throws Exception
{
- clientDispatcher = RemoteDispatcherFactory.newDispatcher();
- clientDispatcher.connect(port, transport, useSSL);
+ client = new Client();
+ client.connect(port, transport, useSSL);
}
// Package protected ---------------------------------------------
Added: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/AbstractPacketCodecTest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/AbstractPacketCodecTest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/AbstractPacketCodecTest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.test.messaging.core.remoting.wireformat;
+
+import static java.util.UUID.randomUUID;
+
+import java.nio.charset.CharacterCodingException;
+
+import junit.framework.TestCase;
+
+import org.apache.mina.common.IoBuffer;
+import org.jboss.messaging.core.remoting.codec.AbstractPacketCodec;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class AbstractPacketCodecTest extends TestCase
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ public void testNullString() throws Exception
+ {
+ String result = putAndGet(null);
+
+ assertNull(result);
+ }
+
+ public void testEmptyString() throws Exception
+ {
+ String result = putAndGet("");
+
+ assertNotNull(result);
+ assertEquals("", result);
+ }
+
+ public void testNonEmptyString() throws Exception
+ {
+ String junk = randomUUID().toString();
+
+ String result = putAndGet(junk);
+
+ assertNotNull(result);
+ assertEquals(junk, result);
+ }
+
+ public void testTrueBoolean() throws Exception
+ {
+ assertTrue(putAndGet(true));
+ }
+
+ public void testFalseBoolean() throws Exception
+ {
+ assertFalse(putAndGet(false));
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ private static String putAndGet(String s) throws CharacterCodingException
+ {
+ IoBuffer buffer = IoBuffer.allocate(256);
+ AbstractPacketCodec.putString(buffer, s);
+ buffer.flip();
+ return AbstractPacketCodec.getString(buffer);
+ }
+
+ private static boolean putAndGet(boolean b) throws CharacterCodingException
+ {
+ IoBuffer buffer = IoBuffer.allocate(256);
+ AbstractPacketCodec.putBoolean(buffer, b);
+ buffer.flip();
+ return AbstractPacketCodec.getBoolean(buffer);
+ }
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -7,25 +7,73 @@
package org.jboss.test.messaging.core.remoting.wireformat;
import static java.util.UUID.randomUUID;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CHANGERATE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELIVERMESSAGE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.NULL;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CONNECTIONFACTORY_CREATECONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CONNECTIONFACTORY_CREATECONNECTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_ACKDELIVERY;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONSUMER;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_IDBLOCK;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_ACKDELIVERY;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CLOSING;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONNECTION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONSUMER;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATESESSION;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_IDBLOCK;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.TEXT;
+
+import java.util.ArrayList;
+import java.util.List;
+
import junit.framework.TestCase;
import org.apache.mina.common.IoBuffer;
import org.apache.mina.filter.codec.ProtocolCodecSession;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
+import org.jboss.jms.delegate.Ack;
+import org.jboss.jms.delegate.DefaultAck;
+import org.jboss.jms.destination.JBossDestination;
+import org.jboss.jms.destination.JBossQueue;
+import org.jboss.jms.message.JBossMessage;
+import org.jboss.jms.tx.ClientTransaction;
+import org.jboss.jms.tx.TransactionRequest;
+import org.jboss.messaging.core.contract.Message;
import org.jboss.messaging.core.remoting.codec.PacketCodecFactory;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-import org.jboss.messaging.core.remoting.wireformat.ConnectionFactoryCreateConnectionRequest;
-import org.jboss.messaging.core.remoting.wireformat.ConnectionFactoryCreateConnectionResponse;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
+import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
+import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
+import org.jboss.messaging.core.remoting.wireformat.CloseMessage;
+import org.jboss.messaging.core.remoting.wireformat.ClosingRequest;
+import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateConsumerResponse;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
+import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
+import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockRequest;
+import org.jboss.messaging.core.remoting.wireformat.IDBlockResponse;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
+import org.jboss.messaging.core.remoting.wireformat.SendMessage;
+import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
+import org.jboss.messaging.core.remoting.wireformat.StartConnectionMessage;
import org.jboss.messaging.core.remoting.wireformat.TextPacket;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
*/
public class PacketTypeTest extends TestCase
{
@@ -36,6 +84,16 @@
// Static --------------------------------------------------------
+ private static void assertSameAcks(List<Ack> expected, List<Ack> actual)
+ {
+ assertEquals(expected.size(), actual.size());
+ for (int i = 0; i < expected.size(); i++)
+ {
+ assertEquals(expected.get(i).getDeliveryID(), actual.get(i)
+ .getDeliveryID());
+ }
+ }
+
// Constructors --------------------------------------------------
// Public --------------------------------------------------------
@@ -71,41 +129,308 @@
assertEquals(packet.getText(), p.getText());
}
- public void testConnectionFactoryCreateConnectionRequest() throws Exception
+ public void testCreateConnectionRequest() throws Exception
{
- ConnectionFactoryCreateConnectionRequest packet = new ConnectionFactoryCreateConnectionRequest();
+ byte version = (byte) 4;
+ String clientVMID = randomUUID().toString();
+ int failedNodeID = 0;
+ String username = null;
+ String password = null;
- AbstractPacket decodedPacket = encodeAndDecode(packet);
+ CreateConnectionRequest request = new CreateConnectionRequest(version,
+ clientVMID, failedNodeID, username, password);
- assertTrue(decodedPacket instanceof ConnectionFactoryCreateConnectionRequest);
- assertEquals(REQ_CONNECTIONFACTORY_CREATECONNECTION, decodedPacket
- .getType());
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof CreateConnectionRequest);
+ CreateConnectionRequest decodedRequest = (CreateConnectionRequest) decodedPacket;
+
+ assertEquals(REQ_CREATECONNECTION, decodedPacket.getType());
+ assertEquals(request.getVersion(), decodedRequest.getVersion());
+ assertEquals(request.getClientVMID(), decodedRequest.getClientVMID());
+ assertEquals(request.getFailedNodeID(), decodedRequest.getFailedNodeID());
+ assertEquals(request.getUsername(), decodedRequest.getUsername());
+ assertEquals(request.getPassword(), decodedRequest.getPassword());
}
- public void testConnectionFactoryCreateConnectionResponse() throws Exception
+ public void testCreateConnectionResponse() throws Exception
{
- ConnectionFactoryCreateConnectionResponse packet = new ConnectionFactoryCreateConnectionResponse(
- randomUUID().toString());
+ CreateConnectionResponse response = new CreateConnectionResponse(
+ randomUUID().toString(), 1234);
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof CreateConnectionResponse);
+
+ CreateConnectionResponse decodedResponse = (CreateConnectionResponse) decodedPacket;
+ assertEquals(RESP_CREATECONNECTION, decodedResponse.getType());
+ assertEquals(response.getConnectionID(), decodedResponse
+ .getConnectionID());
+ assertEquals(response.getServerID(), decodedResponse.getServerID());
+ }
+
+ public void testCreateSessionRequest() throws Exception
+ {
+ CreateSessionRequest request = new CreateSessionRequest(true, 0, false);
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof CreateSessionRequest);
+
+ CreateSessionRequest decodedRequest = (CreateSessionRequest) decodedPacket;
+ assertEquals(REQ_CREATESESSION, decodedRequest.getType());
+ assertEquals(request.isTransacted(), decodedRequest.isTransacted());
+ assertEquals(request.getAcknowledgementMode(), decodedRequest
+ .getAcknowledgementMode());
+ assertEquals(request.isXA(), decodedRequest.isXA());
+ }
+
+ public void testCreateSessionResponse() throws Exception
+ {
+ CreateSessionResponse response = new CreateSessionResponse(randomUUID()
+ .toString(), 23, false);
+
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof CreateSessionResponse);
+
+ CreateSessionResponse decodedResponse = (CreateSessionResponse) decodedPacket;
+ assertEquals(RESP_CREATESESSION, decodedResponse.getType());
+ assertEquals(response.getSessionID(), decodedResponse.getSessionID());
+ assertEquals(response.getDupsOKBatchSize(), decodedResponse
+ .getDupsOKBatchSize());
+ assertEquals(response.isStrictTCK(), decodedResponse.isStrictTCK());
+ }
+
+ public void testIDBlockRequest() throws Exception
+ {
+ IDBlockRequest request = new IDBlockRequest(23);
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof IDBlockRequest);
+
+ IDBlockRequest decodedRequest = (IDBlockRequest) decodedPacket;
+ assertEquals(REQ_IDBLOCK, decodedRequest.getType());
+ assertEquals(request.getSize(), decodedRequest.getSize());
+ }
+
+ public void testIDBlockResponse() throws Exception
+ {
+ IDBlockResponse response = new IDBlockResponse(
+ System.currentTimeMillis(), System.currentTimeMillis() * 2);
+
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof IDBlockResponse);
+
+ IDBlockResponse decodedResponse = (IDBlockResponse) decodedPacket;
+ assertEquals(RESP_IDBLOCK, decodedResponse.getType());
+ assertEquals(response.getLow(), decodedResponse.getLow());
+ assertEquals(response.getHigh(), decodedResponse.getHigh());
+ }
+
+ public void testSendMessage() throws Exception
+ {
+ SendMessage packet = new SendMessage(new JBossMessage(System
+ .currentTimeMillis()), true, System.currentTimeMillis());
+
+ AbstractPacket p = encodeAndDecode(packet);
+
+ assertTrue(p instanceof SendMessage);
+
+ SendMessage decodedPacket = (SendMessage) p;
+ assertEquals(MSG_SENDMESSAGE, decodedPacket.getType());
+ assertEquals(packet.checkForDuplicates(), decodedPacket
+ .checkForDuplicates());
+ assertEquals(packet.getSequence(), decodedPacket.getSequence());
+ assertEquals(packet.getMessage().getMessageID(), decodedPacket
+ .getMessage().getMessageID());
+ }
+
+ public void testCreateConsumerRequest() throws Exception
+ {
+ JBossDestination destination = new JBossQueue(
+ "testCreateConsumerRequest", true);
+ CreateConsumerRequest request = new CreateConsumerRequest(destination,
+ "color = 'red'", false, null, false, false);
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof CreateConsumerRequest);
+
+ CreateConsumerRequest decodedRequest = (CreateConsumerRequest) decodedPacket;
+ assertEquals(REQ_CREATECONSUMER, decodedRequest.getType());
+ assertEquals(request.getDestination(), decodedRequest.getDestination());
+ assertEquals(request.getSelector(), decodedRequest.getSelector());
+ assertEquals(request.isNoLocal(), decodedRequest.isNoLocal());
+ assertEquals(request.getSubscriptionName(), decodedRequest
+ .getSubscriptionName());
+ assertEquals(request.isConnectionConsumer(), decodedRequest
+ .isConnectionConsumer());
+ assertEquals(request.isAutoFlowControl(), decodedRequest
+ .isAutoFlowControl());
+ }
+
+ public void testCreateConsumerResponse() throws Exception
+ {
+
+ CreateConsumerResponse response = new CreateConsumerResponse(randomUUID()
+ .toString(), 23, 42, System.currentTimeMillis());
+
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof CreateConsumerResponse);
+
+ CreateConsumerResponse decodedResponse = (CreateConsumerResponse) decodedPacket;
+ assertEquals(RESP_CREATECONSUMER, decodedResponse.getType());
+ assertEquals(response.getBufferSize(), decodedResponse.getBufferSize());
+ assertEquals(response.getMaxDeliveries(), decodedResponse
+ .getMaxDeliveries());
+ assertEquals(response.getRedeliveryDelay(), decodedResponse
+ .getRedeliveryDelay());
+ }
+
+ public void testStartConnectionMessage() throws Exception
+ {
+ StartConnectionMessage packet = new StartConnectionMessage();
+
AbstractPacket decodedPacket = encodeAndDecode(packet);
- assertTrue(decodedPacket instanceof ConnectionFactoryCreateConnectionResponse);
- assertEquals(RESP_CONNECTIONFACTORY_CREATECONNECTION, decodedPacket
- .getType());
+ assertTrue(decodedPacket instanceof StartConnectionMessage);
+ assertEquals(MSG_STARTCONNECTION, decodedPacket.getType());
}
- // TestCase overrides ---------------------------------------------------
+ public void testChangeRateMessage() throws Exception
+ {
+ ChangeRateMessage message = new ChangeRateMessage(0.63f);
- protected void setUp() throws Exception
+ AbstractPacket decodedPacket = encodeAndDecode(message);
+
+ assertTrue(decodedPacket instanceof ChangeRateMessage);
+ ChangeRateMessage decodedMessage = (ChangeRateMessage) decodedPacket;
+ assertEquals(MSG_CHANGERATE, decodedMessage.getType());
+ assertEquals(message.getRate(), decodedMessage.getRate());
+ }
+
+ public void testDeliverMessage() throws Exception
{
- super.setUp();
+ Message msg = new JBossMessage(System.currentTimeMillis());
+ DeliverMessage message = new DeliverMessage(msg, randomUUID().toString(),
+ System.currentTimeMillis(), 23);
+
+ AbstractPacket decodedPacket = encodeAndDecode(message);
+
+ assertTrue(decodedPacket instanceof DeliverMessage);
+ DeliverMessage decodedMessage = (DeliverMessage) decodedPacket;
+ assertEquals(MSG_DELIVERMESSAGE, decodedMessage.getType());
+ assertEquals(message.getMessage().getMessageID(), decodedMessage
+ .getMessage().getMessageID());
+ assertEquals(message.getConsumerID(), decodedMessage.getConsumerID());
+ assertEquals(message.getDeliveryID(), decodedMessage.getDeliveryID());
+ assertEquals(message.getDeliveryCount(), decodedMessage
+ .getDeliveryCount());
}
- protected void tearDown() throws Exception
+ public void testAcknowledgeDeliveryRequest() throws Exception
{
- super.tearDown();
+ AcknowledgeDeliveryRequest request = new AcknowledgeDeliveryRequest(
+ System.currentTimeMillis());
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof AcknowledgeDeliveryRequest);
+ AcknowledgeDeliveryRequest decodedRequest = (AcknowledgeDeliveryRequest) decodedPacket;
+ assertEquals(REQ_ACKDELIVERY, decodedRequest.getType());
+ assertEquals(request.getDeliveryID(), decodedRequest.getDeliveryID());
}
+ public void testAcknowledgeDeliveriesRequest() throws Exception
+ {
+ List<Ack> acks = new ArrayList<Ack>();
+ acks.add(new DefaultAck(System.nanoTime()));
+ acks.add(new DefaultAck(System.nanoTime()));
+ acks.add(new DefaultAck(System.nanoTime()));
+
+ AcknowledgeDeliveriesMessage request = new AcknowledgeDeliveriesMessage(
+ acks);
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof AcknowledgeDeliveriesMessage);
+ AcknowledgeDeliveriesMessage decodedRequest = (AcknowledgeDeliveriesMessage) decodedPacket;
+ assertEquals(PacketType.MSG_ACKDELIVERIES, decodedRequest.getType());
+ assertSameAcks(request.getAcks(), decodedRequest.getAcks());
+ }
+
+ public void testAcknowledgeDeliveryResponse() throws Exception
+ {
+ AcknowledgeDeliveryResponse response = new AcknowledgeDeliveryResponse(
+ true);
+
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof AcknowledgeDeliveryResponse);
+ AcknowledgeDeliveryResponse decodedResponse = (AcknowledgeDeliveryResponse) decodedPacket;
+ assertEquals(RESP_ACKDELIVERY, decodedResponse.getType());
+ assertEquals(response.isAcknowledged(), decodedResponse.isAcknowledged());
+
+ }
+
+ public void testClosingRequest() throws Exception
+ {
+ ClosingRequest request = new ClosingRequest(System.currentTimeMillis());
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof ClosingRequest);
+ ClosingRequest decodedRequest = (ClosingRequest) decodedPacket;
+ assertEquals(REQ_CLOSING, decodedRequest.getType());
+ assertEquals(request.getSequence(), decodedRequest.getSequence());
+ }
+
+ public void testClosingResponse() throws Exception
+ {
+ ClosingResponse response = new ClosingResponse(System.currentTimeMillis());
+
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof ClosingResponse);
+ ClosingResponse decodedRequest = (ClosingResponse) decodedPacket;
+ assertEquals(RESP_CLOSING, decodedRequest.getType());
+ assertEquals(response.getID(), decodedRequest.getID());
+ }
+
+ public void testCloseMessage() throws Exception
+ {
+ CloseMessage message = new CloseMessage();
+
+ AbstractPacket decodedPacket = encodeAndDecode(message);
+
+ assertTrue(decodedPacket instanceof CloseMessage);
+ CloseMessage decodedMessage = (CloseMessage) decodedPacket;
+ assertEquals(MSG_CLOSE, decodedMessage.getType());
+ }
+
+ public void testSendTransactionMessage() throws Exception
+ {
+ ClientTransaction tx = new ClientTransaction();
+ TransactionRequest tr = new TransactionRequest(
+ TransactionRequest.ONE_PHASE_COMMIT_REQUEST, null, tx);
+
+ SendTransactionMessage request = new SendTransactionMessage(tr, true);
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof SendTransactionMessage);
+ SendTransactionMessage decodedRequest = (SendTransactionMessage) decodedPacket;
+ assertEquals(MSG_SENDTRANSACTION, decodedRequest.getType());
+ assertEquals(request.getTransactionRequest().getRequestType(),
+ decodedRequest.getTransactionRequest().getRequestType());
+ assertEquals(request.checkForDuplicates(), decodedRequest
+ .checkForDuplicates());
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
@@ -121,18 +446,17 @@
private IoBuffer encode(AbstractPacket packet) throws Exception
{
- ProtocolCodecSession httpCodecSession = new ProtocolCodecSession();
- ProtocolEncoder encoder = new PacketCodecFactory().getEncoder();
- encoder.encode(httpCodecSession, packet, httpCodecSession
- .getEncoderOutput());
- IoBuffer buffer = httpCodecSession.getEncoderOutputQueue().poll();
+ ProtocolCodecSession session = new ProtocolCodecSession();
+ ProtocolEncoder encoder = new PacketCodecFactory().getEncoder(session);
+ encoder.encode(session, packet, session.getEncoderOutput());
+ IoBuffer buffer = session.getEncoderOutputQueue().poll();
return buffer;
}
private AbstractPacket decode(IoBuffer buffer) throws Exception
{
ProtocolCodecSession session = new ProtocolCodecSession();
- ProtocolDecoder decoder = new PacketCodecFactory().getDecoder();
+ ProtocolDecoder decoder = new PacketCodecFactory().getDecoder(session);
decoder.decode(session, buffer, session.getDecoderOutput());
Object o = session.getDecoderOutputQueue().poll();
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/ServerManagement.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/ServerManagement.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/ServerManagement.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -370,7 +370,7 @@
int index = Integer.parseInt(remoteDebugIndex);
sb.append("-Xmx1024M -Xdebug -Xnoagent -Djava.compiler=NONE ").
- append("-Xrunjdwp:transport=dt_shmem,server=n,suspend=n,address=rmiserver_").
+ append("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=800").
append(index).append(' ');
}
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/container/ServiceContainer.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/container/ServiceContainer.java 2007-11-19 14:56:33 UTC (rev 3342)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/tools/container/ServiceContainer.java 2007-11-19 15:08:03 UTC (rev 3343)
@@ -21,9 +21,13 @@
*/
package org.jboss.test.messaging.tools.container;
+import static org.jboss.messaging.core.remoting.Constants.PORT;
+import static org.jboss.remoting.transport.PortUtil.findFreePort;
+
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
+import java.net.InetSocketAddress;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -32,6 +36,7 @@
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Formatter;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
@@ -56,6 +61,10 @@
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.logging.LoggingFilter;
+import org.apache.mina.filter.logging.MdcInjectionFilter;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.hsqldb.Server;
import org.hsqldb.persist.HsqlProperties;
import org.jboss.jms.jndi.JMSProviderAdapter;
@@ -63,6 +72,8 @@
import org.jboss.jms.server.ServerPeer;
import org.jboss.jms.server.remoting.JMSServerInvocationHandler;
import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.codec.PacketCodecFactory;
+import org.jboss.messaging.core.remoting.server.ServerHandler;
import org.jboss.messaging.util.JNDIUtil;
import org.jboss.messaging.util.XMLUtil;
import org.jboss.remoting.InvokerLocator;
@@ -88,6 +99,8 @@
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
+import sun.management.StringFlag;
+
import com.arjuna.ats.arjuna.recovery.RecoveryManager;
/**
@@ -230,6 +243,8 @@
// so we don't start up multiple servers with services running on the same port
private int serverIndex;
+ private NioSocketAcceptor acceptor;
+
// Static ---------------------------------------------------------------------------------------
public static Object type(MBeanInfo mbeanInfo, String attributeName, String valueAsString)
@@ -528,6 +543,8 @@
stopService(REMOTING_OBJECT_NAME);
+ stopMINAServer();
+
if (httpConnectionFactory)
{
stopService(HTTP_REMOTING_OBJECT_NAME);
@@ -1400,9 +1417,45 @@
"org.jboss.remoting.ServerInvocationHandler"});
log.debug("started " + objectName);
+
+ startMINAServer();
}
+ private void startMINAServer() throws Exception
+ {
+ acceptor = new NioSocketAcceptor();
+
+ // Prepare the configuration
+ MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
+ acceptor.getFilterChain().addLast("mdc", mdcInjectionFilter);
+ acceptor.getFilterChain().addLast("codec",
+ new ProtocolCodecFilter(new PacketCodecFactory()));
+ acceptor.getFilterChain().addLast("logger", new LoggingFilter());
+
+ // Bind
+ acceptor.setLocalAddress(new InetSocketAddress(PORT));
+ acceptor.setHandler(new ServerHandler());
+ acceptor.bind();
+
+ info("Listening on port " + PORT);
+ }
+
+ private void stopMINAServer()
+ {
+ if (acceptor != null)
+ {
+ acceptor.setDisconnectOnUnbind(true);
+ acceptor.unbind();
+ }
+ }
+
+ private void info(String s)
+ {
+ log.info(new Formatter().format("##MINA## %-50s ###\n", s).toString());
+ }
+
+
private void startSecurityManager() throws Exception
{
MockJBossSecurityManager sm = new MockJBossSecurityManager();
More information about the jboss-cvs-commits
mailing list