[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