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

Ron Sigal ron_sigal at yahoo.com
Tue Nov 28 12:39:28 EST 2006


  User: rsigal  
  Date: 06/11/28 12:39:28

  Modified:    src/main/org/jboss/remoting/callback  
                        ServerInvokerCallbackHandler.java
  Added:       src/main/org/jboss/remoting/callback  
                        AsynchInvokerCallbackHandler.java
  Log:
  JBREM-640: Added asynchronous callback handling.
  
  Revision  Changes    Path
  1.19      +74 -5     JBossRemoting/src/main/org/jboss/remoting/callback/ServerInvokerCallbackHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ServerInvokerCallbackHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/callback/ServerInvokerCallbackHandler.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -b -r1.18 -r1.19
  --- ServerInvokerCallbackHandler.java	21 Nov 2006 06:46:47 -0000	1.18
  +++ ServerInvokerCallbackHandler.java	28 Nov 2006 17:39:28 -0000	1.19
  @@ -59,7 +59,7 @@
    *
    * @author <a href="mailto:telrod at e2technologies.net">Tom Elrod</a>
    */
  -public class ServerInvokerCallbackHandler implements InvokerCallbackHandler
  +public class ServerInvokerCallbackHandler implements AsynchInvokerCallbackHandler
   {
      private InvocationRequest invocation;
      private Client callBackClient;
  @@ -560,6 +560,65 @@
      public void handleCallback(Callback callback)
            throws HandleCallbackException
      {
  +      handleCallback(callback, false, false);
  +   }
  +   
  +   /**
  +    * For push callbacks, will send the callback to the server invoker on the
  +    * client side, hand off processing to a separate thread, and return.<p>
  +    * 
  +    * For pull callbacks, behaves the same as handleCallback(Callback callback).<p>
  +    * 
  +    * @param callback
  +    * @throws HandleCallbackException
  +    */
  +   public void handleCallbackOneway(Callback callback)
  +         throws HandleCallbackException
  +   {
  +      handleCallback(callback, true, false);
  +   }
  +   
  +   /**
  +    * For push callbacks:<p>
  +    *   if serverSide == false, will send the callback to the server invoker on
  +    *   the client side, hand off processing to a separate thread, and return.<p>
  +    *   
  +    *   if serverside == true, will hand off to a separate thread the sending
  +    *   of the callback and will then return.<p>
  +    * 
  +    * For pull callbacks, behaves the same as handleCallback(Callback callback).<p>
  +    * 
  +    * @param callback
  +    * @param serverSide
  +    * @throws HandleCallbackException
  +    */
  +   public void handleCallbackOneway(Callback callback, boolean serverSide)
  +         throws HandleCallbackException
  +   {
  +      handleCallback(callback, true, serverSide);
  +   }
  +   
  +   /**
  +    * For push callbacks:<p>
  +    *   if asynch == false, behaves the same as handleCallback(Callback callback).<p>
  +    *   
  +    *   if asynch == true:<p>
  +    *     if serverSide == false, will send the callback to the server invoker on
  +    *     the client side, hand off processing to a separate thread, and return.<p>
  +    *   
  +    *     if serverside == true, will hand off to a separate thread the sending
  +    *     of the callback and will then return.<p>
  +    * 
  +    * For pull callbacks, behaves the same as handleCallback(Callback callback).<p>
  +    * 
  +    * @param callback
  +    * @param asynch
  +    * @param serverSide
  +    * @throws HandleCallbackException
  +    */
  +   public void handleCallback(Callback callback, boolean asynch, boolean serverSide)
  +   throws HandleCallbackException
  +   {
         try
         {
            Object callbackId = checkForCallbackListener(callback);
  @@ -620,10 +679,13 @@
                     else
                     {
                        Object o = returnPayload.remove(REMOTING_ACKNOWLEDGES_PUSH_CALLBACKS);
  +                     if (!asynch)
  +                     {
                        if (o instanceof String  && Boolean.valueOf((String)o).booleanValue() ||
                            o instanceof Boolean && ((Boolean)o).booleanValue())
                           handleAcknowledgement = true;
                     }
  +                  }
   
                     returnPayload.put(Callback.SERVER_LOCATOR_KEY, serverLocator);
                     callback.setReturnPayload(returnPayload);
  @@ -634,8 +696,15 @@
                  InternalInvocation internalInvocation = new InternalInvocation(InternalInvocation.HANDLECALLBACK,
                                                                                 new Object[]{callback});
                  callBackClient.setSessionId(sessionId);
  -               callBackClient.invoke(internalInvocation, callback.getRequestPayload());
                  
  +               if (asynch)
  +               {
  +                  callBackClient.invokeOneway(internalInvocation, callback.getRequestPayload(), serverSide);
  +               }
  +               else
  +               {
  +                  callBackClient.invoke(internalInvocation, callback.getRequestPayload());
  +               }
                  handlePushCallbackAcknowledgement(callbackId, handleAcknowledgement);
               }
               catch(Throwable ex)
  
  
  
  1.2       +88 -0     JBossRemoting/src/main/org/jboss/remoting/callback/AsynchInvokerCallbackHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: AsynchInvokerCallbackHandler.java
  ===================================================================
  RCS file: AsynchInvokerCallbackHandler.java
  diff -N AsynchInvokerCallbackHandler.java
  --- /dev/null	1 Jan 1970 00:00:00 -0000
  +++ AsynchInvokerCallbackHandler.java	28 Nov 2006 17:39:28 -0000	1.2
  @@ -0,0 +1,88 @@
  +/*
  + * JBoss, Home of Professional Open Source
  + * Copyright 2005, JBoss Inc., and individual contributors as indicated
  + * by the @authors tag. See the copyright.txt in the distribution for a
  + * full listing of individual contributors.
  + *
  + * This is free software; you can redistribute it and/or modify it
  + * under the terms of the GNU Lesser General Public License as
  + * published by the Free Software Foundation; either version 2.1 of
  + * the License, or (at your option) any later version.
  + *
  + * This software is distributed in the hope that it will be useful,
  + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  + * Lesser General Public License for more details.
  + *
  + * You should have received a copy of the GNU Lesser General Public
  + * License along with this software; if not, write to the Free
  + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  + */
  +package org.jboss.remoting.callback;
  +
  +
  +/** 
  + * AsynchInvokerCallbackHandler extends InvokerCallbackHandler with
  + * asynchronous callback handling.
  + * 
  + * @author <a href="ron.sigal at jboss.com">Ron Sigal</a>
  + * @version $Revision: 1.2 $
  + * <p>
  + * Copyright Nov 28, 2006
  + * </p>
  + */
  +public interface AsynchInvokerCallbackHandler extends InvokerCallbackHandler
  +{
  +   /**
  +    * For push callbacks, will send the callback to the server invoker on the
  +    * client side, hand off processing to a separate thread, and return.<p>
  +    * 
  +    * For pull callbacks, behaves the same as handleCallback(Callback callback).<p>
  +    * 
  +    * @param callback
  +    * @throws HandleCallbackException
  +    */
  +   public void handleCallbackOneway(Callback callback)
  +   throws HandleCallbackException;
  +   
  +   
  +   /**
  +    * For push callbacks:<p>
  +    *   if serverSide == false, will send the callback to the server invoker on
  +    *   the client side, hand off processing to a separate thread, and return.<p>
  +    *   
  +    *   if serverside == true, will hand off to a separate thread the sending
  +    *   of the callback and will then return.<p>
  +    * 
  +    * For pull callbacks, behaves the same as handleCallback(Callback callback).<p>
  +    * 
  +    * @param callback
  +    * @param serverSide
  +    * @throws HandleCallbackException
  +    */
  +   public void handleCallbackOneway(Callback callback, boolean serverSide)
  +   throws HandleCallbackException;
  +   
  +   
  +   /**
  +    * For push callbacks:<p>
  +    *   if asynch == false, behaves the same as handleCallback(Callback callback).<p>
  +    *   
  +    *   if asynch == true:<p>
  +    *     if serverSide == false, will send the callback to the server invoker on
  +    *     the client side, hand off processing to a separate thread, and return.<p>
  +    *   
  +    *     if serverside == true, will hand off to a separate thread the sending
  +    *     of the callback and will then return.<p>
  +    * 
  +    * For pull callbacks, behaves the same as handleCallback(Callback callback).<p>
  +    * 
  +    * @param callback
  +    * @param asynch
  +    * @param serverSide
  +    * @throws HandleCallbackException
  +    */
  +   public void handleCallback(Callback callback, boolean asynch, boolean serverSide)
  +   throws HandleCallbackException;
  +}
  
  
  



More information about the jboss-cvs-commits mailing list