[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/bisocket ...

Ron Sigal ron_sigal at yahoo.com
Tue Feb 13 06:36:35 EST 2007


  User: rsigal  
  Date: 07/02/13 06:36:35

  Modified:    src/main/org/jboss/remoting/transport/bisocket  Tag:
                        remoting_2_x BisocketClientInvoker.java
  Log:
  JBREM-650:  (1) Callback invokers don't share client pools. (2) Uses isCallbackInvoker instead of listenerId == null.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.5   +30 -9     JBossRemoting/src/main/org/jboss/remoting/transport/bisocket/BisocketClientInvoker.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BisocketClientInvoker.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/bisocket/BisocketClientInvoker.java,v
  retrieving revision 1.1.2.4
  retrieving revision 1.1.2.5
  diff -u -b -r1.1.2.4 -r1.1.2.5
  --- BisocketClientInvoker.java	18 Jan 2007 21:31:42 -0000	1.1.2.4
  +++ BisocketClientInvoker.java	13 Feb 2007 11:36:35 -0000	1.1.2.5
  @@ -29,6 +29,7 @@
   import java.util.HashMap;
   import java.util.HashSet;
   import java.util.Iterator;
  +import java.util.LinkedList;
   import java.util.Map;
   import java.util.Set;
   import java.util.Timer;
  @@ -44,6 +45,7 @@
   import org.jboss.remoting.marshal.UnMarshaller;
   import org.jboss.remoting.transport.BidirectionalClientInvoker;
   import org.jboss.remoting.transport.socket.SocketClientInvoker;
  +import org.jboss.remoting.transport.socket.SocketWrapper;
   
   /**
    * The bisocket transport, an extension of the socket transport, is designed to allow
  @@ -79,7 +81,7 @@
      private OutputStream controlOutputStream;
      private Object controlLock = new Object();
      private PingTimerTask pingTimerTask;
  -   private boolean isCallbackInvoker;
  +   protected boolean isCallbackInvoker;
   
   
      /**
  @@ -184,15 +186,18 @@
   
      protected void handleConnect() throws ConnectionFailedException
      {
  -      super.handleConnect();
  -
         // Callback client on server side.
  -      if (listenerId != null)
  +      if (isCallbackInvoker)
         {
  +         // Bisocket callback client invoker doesn't share socket pools because of the danger
  +         // that two distinct callback servers could have the same "artifical" port.
  +         pool = new LinkedList();
            return;
         }
   
         // Client on client side.
  +      super.handleConnect();
  +      
         try
         {
            secondaryLocator = getSecondaryLocator();
  @@ -207,13 +212,28 @@
   
      protected void handleDisconnect()
      {
  -      super.handleDisconnect();
         if (listenerId != null)
         {
            if (isCallbackInvoker)
  +         {
               listenerIdToCallbackClientInvokerMap.remove(listenerId);
  +            for (Iterator it = pool.iterator(); it.hasNext();)
  +            {
  +               SocketWrapper socketWrapper = (SocketWrapper) it.next();
  +               try
  +               {
  +                  socketWrapper.close();
  +               }
  +               catch (Exception ignored)
  +               {
  +               }
  +            }
  +         }
            else
  +         {
               listenerIdToClientInvokerMap.remove(listenerId);
  +            super.handleDisconnect();
  +         }
   
            listenerIdToSocketsMap.remove(listenerId);
            if (pingTimerTask != null)
  @@ -236,7 +256,7 @@
               if (InternalInvocation.ADDLISTENER.equals(ii.getMethodName()))
               {
                  Map requestPayload = ir.getRequestPayload();
  -               String listenerId = (String) requestPayload.get(Client.LISTENER_ID_KEY);
  +               listenerId = (String) requestPayload.get(Client.LISTENER_ID_KEY);
                  listenerIdToClientInvokerMap.put(listenerId, this);
                  BisocketServerInvoker callbackServerInvoker;
                  callbackServerInvoker = BisocketServerInvoker.getBisocketServerInvoker(listenerId);
  @@ -251,7 +271,7 @@
   
      protected Socket createSocket(String address, int port) throws IOException
      {
  -      if (listenerId == null)
  +      if (!isCallbackInvoker)
            return super.createSocket(address, port);
   
         Set sockets = null;
  @@ -293,7 +313,7 @@
               controlSocket = (Socket) it.next();
               it.remove();
               controlOutputStream = controlSocket.getOutputStream();
  -            log.debug("got control socket");
  +            log.debug("got control socket: " + controlSocket);
               pingTimerTask = new PingTimerTask();
               if (timer == null)
               {
  @@ -332,7 +352,7 @@
            Iterator it = sockets.iterator();
            Socket socket = (Socket) it.next();
            it.remove();
  -         log.debug("socket found");
  +         log.debug("found socket: " + socket);
            return socket;
         }
      }
  @@ -363,6 +383,7 @@
      {
         InternalInvocation ii = new InternalInvocation(Bisocket.GET_SECONDARY_INVOKER_LOCATOR, null);
         InvocationRequest r = new InvocationRequest(null, null, ii, null, null, null);
  +      log.debug("getting secondary locator");
         Object o = invoke(r);
         log.debug("secondary locator: " + o);
         secondaryLocator = (InvokerLocator) o;
  
  
  



More information about the jboss-cvs-commits mailing list