[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting ...
Ron Sigal
ron_sigal at yahoo.com
Sat May 5 03:37:40 EDT 2007
User: rsigal
Date: 07/05/05 03:37:40
Modified: src/main/org/jboss/remoting Tag: remoting_2_x Client.java
Log:
JBREM-641, JBREM-743: (1) Added metadata parameter to getCallbacks(); (2) check for existing CallbackPoller in addListener().
Revision Changes Path
No revision
No revision
1.53.2.31 +39 -6 JBossRemoting/src/main/org/jboss/remoting/Client.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Client.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/Client.java,v
retrieving revision 1.53.2.30
retrieving revision 1.53.2.31
diff -u -b -r1.53.2.30 -r1.53.2.31
--- Client.java 11 Apr 2007 07:40:38 -0000 1.53.2.30
+++ Client.java 5 May 2007 07:37:40 -0000 1.53.2.31
@@ -50,6 +50,8 @@
import java.io.ObjectOutput;
import java.io.StreamCorruptedException;
import java.net.InetAddress;
+import java.net.SocketTimeoutException;
+import java.rmi.MarshalException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -66,7 +68,7 @@
* @author <a href="mailto:telrod at e2technologies.net">Tom Elrod</a>
* @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
*
- * @version $Revision: 1.53.2.30 $
+ * @version $Revision: 1.53.2.31 $
*/
public class Client implements Externalizable
{
@@ -900,17 +902,23 @@
callbackServerConnector.start();
// have to use the locator from the server as can be modified internally
callbackLocator = callbackServerConnector.getServerInvoker().getLocator();
+ addCallbackListener(callbackhandler, metadata, callbackLocator, callbackHandlerObject);
}
else
{
+ if (callbackPollers.get(callbackhandler) != null)
+ {
+ log.debug(callbackhandler + " already registered");
+ return;
+ }
+
//need to setup poller to get callbacks from the server
CallbackPoller poller =
new CallbackPoller(this, callbackhandler, metadata, callbackHandlerObject);
callbackPollers.put(callbackhandler, poller);
+ addCallbackListener(callbackhandler, metadata, callbackLocator, callbackHandlerObject);
poller.start();
}
-
- addCallbackListener(callbackhandler, metadata, callbackLocator, callbackHandlerObject);
}
else
{
@@ -1099,16 +1107,41 @@
*/
public List getCallbacks(InvokerCallbackHandler callbackHandler) throws Throwable
{
+ return getCallbacks(callbackHandler, null);
+ }
+
+ public List getCallbacks(InvokerCallbackHandler callbackHandler, Map metadata) throws Throwable
+ {
if (callbackHandler != null)
{
String listenerId = (String)listeners.get(callbackHandler);
if(listenerId != null)
{
- Map metadata = new HashMap();
+ if (metadata == null)
+ metadata = new HashMap();
+
metadata.put(LISTENER_ID_KEY, listenerId);
- return
- (List)invoke(new InternalInvocation(InternalInvocation.GETCALLBACKS, null), metadata);
+ InternalInvocation invocation = new InternalInvocation(InternalInvocation.GETCALLBACKS, null);
+
+ try
+ {
+ List response = (List) invoke(invocation, metadata);
+ return response;
+ }
+ catch (MarshalException e)
+ {
+ if (e.getCause() != null && e.getCause() instanceof SocketTimeoutException)
+ {
+ if (log.isTraceEnabled()) log.info(this + ": getCallbacks() timed out: returning empty list");
+ return new ArrayList();
+ }
+ throw e;
+ }
+ finally
+ {
+ metadata.remove(LISTENER_ID_KEY);
+ }
}
else
{
More information about the jboss-cvs-commits
mailing list