[jboss-cvs] JBoss Messaging SVN: r1503 - branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/server/remoting
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Oct 20 03:08:14 EDT 2006
Author: ron_sigal
Date: 2006-10-20 03:08:13 -0400 (Fri, 20 Oct 2006)
New Revision: 1503
Modified:
branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/server/remoting/JMSWireFormat.java
Log:
JBMESSAGING-207: Added handling for ArrayLists of Callbacks.
Modified: branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/server/remoting/JMSWireFormat.java
===================================================================
--- branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/server/remoting/JMSWireFormat.java 2006-10-19 22:01:47 UTC (rev 1502)
+++ branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/server/remoting/JMSWireFormat.java 2006-10-20 07:08:13 UTC (rev 1503)
@@ -29,6 +29,7 @@
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -51,6 +52,7 @@
import org.jboss.remoting.InvocationRequest;
import org.jboss.remoting.InvocationResponse;
import org.jboss.remoting.callback.Callback;
+import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
import org.jboss.remoting.invocation.InternalInvocation;
import org.jboss.remoting.marshal.Marshaller;
import org.jboss.remoting.marshal.UnMarshaller;
@@ -105,6 +107,7 @@
protected static final byte HANDLE_MESSAGE_RESPONSE = 103;
protected static final byte BROWSE_MESSAGE_RESPONSE = 104;
protected static final byte BROWSE_MESSAGES_RESPONSE = 105;
+ protected static final byte CALLBACK_LIST = 106;
// Static --------------------------------------------------------
@@ -445,6 +448,36 @@
if (trace) { log.trace("wrote browse message response"); }
}
+ else if (res instanceof ArrayList
+ && ((ArrayList) res).size() > 0
+ && ((ArrayList) res).get(0) instanceof Callback)
+ {
+ if (true) log.info("Polled ArrayList of Callbacks: " + ((ArrayList)res).size());
+ log.info("payload: " + resp.getPayload());
+ if (resp.getPayload() != null)
+ log.info("payload size: " + resp.getPayload().size());
+ ArrayList callbackList = (ArrayList) res;
+ dos.write(CALLBACK_LIST);
+ dos.writeUTF(resp.getSessionId());
+ log.info("sessionId: " + resp.getSessionId());
+ dos.writeInt(callbackList.size());
+
+ Iterator it = callbackList.iterator();
+ while (it.hasNext())
+ {
+ Callback callback = (Callback) it.next();
+ Map payload = callback.getReturnPayload();
+ String guid = (String)payload.get(ServerInvokerCallbackHandler.CALLBACK_ID);
+ log.info("guid: " + guid);
+ dos.writeUTF(guid);
+
+ MessagingMarshallable mm = (MessagingMarshallable) callback.getParameter();
+ ClientDelivery delivery = (ClientDelivery) mm.getLoad();
+ delivery.write(dos);
+ dos.flush();
+ log.info("wrote ClientDelivery");
+ }
+ }
else
{
dos.write(SERIALIZED);
@@ -761,6 +794,32 @@
return request;
}
+ case CALLBACK_LIST:
+ {
+ // Recreate ArrayList of Callbacks (for Callback polling).
+ log.info("CALLBACK_LIST");
+ String sessionId = dis.readUTF();
+ log.info("sessionId: " + sessionId);
+ int size = dis.readInt();
+ log.info("size: " + size);
+ ArrayList callbackList = new ArrayList(size);
+ for (int i = 0; i < size; i++)
+ {
+ String guid = dis.readUTF();
+ log.info("guid: " + guid);
+ ClientDelivery delivery = new ClientDelivery();
+ delivery.read(dis);
+ MessagingMarshallable mm = new MessagingMarshallable(version, delivery);
+ Callback callback = new Callback(mm);
+ HashMap payload = new HashMap();
+ payload.put(ServerInvokerCallbackHandler.CALLBACK_ID, guid);
+ callback.setReturnPayload(payload);
+ callbackList.add(callback);
+ log.info("added callback");
+ }
+ InvocationResponse response = new InvocationResponse(sessionId, callbackList, false, null);
+ return response;
+ }
default:
{
throw new IllegalStateException("Invalid format type " + formatType);
More information about the jboss-cvs-commits
mailing list