Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@apache.org Received: (qmail 25861 invoked from network); 31 Dec 2001 16:47:09 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 31 Dec 2001 16:47:09 -0000 Received: (qmail 15732 invoked by uid 97); 31 Dec 2001 16:46:45 -0000 Delivered-To: qmlist-jakarta-archive-commons-dev@jakarta.apache.org Received: (qmail 15720 invoked by uid 97); 31 Dec 2001 16:46:45 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 6078 invoked by uid 97); 31 Dec 2001 12:48:43 -0000 Date: 31 Dec 2001 12:48:42 -0000 Message-ID: <20011231124842.26270.qmail@icarus.apache.org> From: hammant@apache.org To: jakarta-commons-sandbox-cvs@apache.org Subject: cvs commit: jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl AbstractServer.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N hammant 01/12/31 04:48:42 Modified: armi/src/java/org/apache/commons/armi/client/impl ObjectStreamInvocationHandler.java armi/src/java/org/apache/commons/armi/client/impl/direct DirectInvocationHandler.java armi/src/java/org/apache/commons/armi/client/impl/rmi RmiInvocationHandler.java armi/src/java/org/apache/commons/armi/server ArmiServer.java armi/src/java/org/apache/commons/armi/server/impl AbstractServer.java Added: armi/src/java/org/apache/commons/armi/common TryLaterReply.java Log: suspend() & resume() functionality added Revision Changes Path 1.2 +20 -9 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ObjectStreamInvocationHandler.java Index: ObjectStreamInvocationHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ObjectStreamInvocationHandler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ObjectStreamInvocationHandler.java 28 Dec 2001 18:08:37 -0000 1.1 +++ ObjectStreamInvocationHandler.java 31 Dec 2001 12:48:41 -0000 1.2 @@ -1,8 +1,8 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ObjectStreamInvocationHandler.java,v 1.1 2001/12/28 18:08:37 hammant Exp $ - * $Revision: 1.1 $ - * $Date: 2001/12/28 18:08:37 $ + * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ObjectStreamInvocationHandler.java,v 1.2 2001/12/31 12:48:41 hammant Exp $ + * $Revision: 1.2 $ + * $Date: 2001/12/31 12:48:41 $ * * ==================================================================== * @@ -68,6 +68,7 @@ import org.apache.commons.armi.common.ArmiRequest; import org.apache.commons.armi.common.MethodRequest; import org.apache.commons.armi.common.ArmiInvocationException; +import org.apache.commons.armi.common.TryLaterReply; import java.io.IOException; import java.io.ObjectOutputStream; @@ -79,7 +80,7 @@ * * * @author Paul Hammant Paul_Hammant@yahoo.com - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class ObjectStreamInvocationHandler implements ArmiInvocationHandler { @@ -123,11 +124,21 @@ try { while (true) { - mOOS.writeObject(request); - mOOS.flush(); - - ArmiReply reply = (ArmiReply) mOIS.readObject(); - + boolean again = true; + ArmiReply reply = null; + while (again) { + again = false; + mOOS.writeObject(request); + mOOS.flush(); + reply = (ArmiReply) mOIS.readObject(); + if (reply instanceof TryLaterReply) { + int millis = ((TryLaterReply) reply).getDelayMillis(); + try { + Thread.sleep(millis); + } catch (InterruptedException ie) {} + again = true; + } + } return reply; } } catch (IOException e) { 1.2 +19 -5 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/direct/DirectInvocationHandler.java Index: DirectInvocationHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/direct/DirectInvocationHandler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DirectInvocationHandler.java 28 Dec 2001 18:08:37 -0000 1.1 +++ DirectInvocationHandler.java 31 Dec 2001 12:48:42 -0000 1.2 @@ -1,8 +1,8 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/direct/DirectInvocationHandler.java,v 1.1 2001/12/28 18:08:37 hammant Exp $ - * $Revision: 1.1 $ - * $Date: 2001/12/28 18:08:37 $ + * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/direct/DirectInvocationHandler.java,v 1.2 2001/12/31 12:48:42 hammant Exp $ + * $Revision: 1.2 $ + * $Date: 2001/12/31 12:48:42 $ * * ==================================================================== * @@ -67,6 +67,7 @@ import org.apache.commons.armi.common.ArmiConnectionException; import org.apache.commons.armi.common.ArmiReply; import org.apache.commons.armi.common.ArmiRequest; +import org.apache.commons.armi.common.TryLaterReply; /** @@ -74,7 +75,7 @@ * * * @author Paul Hammant Paul_Hammant@yahoo.com - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public final class DirectInvocationHandler implements ArmiInvocationHandler { @@ -104,6 +105,19 @@ * */ public ArmiReply handleInvocation(ArmiRequest request) { - return mArmiInvocationHandler.handleInvocation(request); + boolean again = true; + ArmiReply reply = null; + while (again) { + again = false; + reply = mArmiInvocationHandler.handleInvocation(request); + if (reply instanceof TryLaterReply) { + int millis = ((TryLaterReply) reply).getDelayMillis(); + try { + Thread.sleep(millis); + } catch (InterruptedException ie) {} + again = true; + } + } + return reply; } } 1.2 +22 -7 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/rmi/RmiInvocationHandler.java Index: RmiInvocationHandler.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/rmi/RmiInvocationHandler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- RmiInvocationHandler.java 28 Dec 2001 18:08:38 -0000 1.1 +++ RmiInvocationHandler.java 31 Dec 2001 12:48:42 -0000 1.2 @@ -1,8 +1,8 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/rmi/RmiInvocationHandler.java,v 1.1 2001/12/28 18:08:38 hammant Exp $ - * $Revision: 1.1 $ - * $Date: 2001/12/28 18:08:38 $ + * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/rmi/RmiInvocationHandler.java,v 1.2 2001/12/31 12:48:42 hammant Exp $ + * $Revision: 1.2 $ + * $Date: 2001/12/31 12:48:42 $ * * ==================================================================== * @@ -69,6 +69,7 @@ import org.apache.commons.armi.common.ArmiRequest; import org.apache.commons.armi.common.ArmiInvocationException; import org.apache.commons.armi.common.ArmiConnectionException; +import org.apache.commons.armi.common.TryLaterReply; import java.rmi.Naming; import java.rmi.RemoteException; @@ -82,11 +83,11 @@ * * * @author Paul Hammant Paul_Hammant@yahoo.com - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public final class RmiInvocationHandler implements ArmiInvocationHandler { - RmiArmiInvocationHandler mServer; + RmiArmiInvocationHandler mRmiArmiInvocationHandler; /** * Constructor RmiInvocationHandler @@ -104,7 +105,7 @@ + RmiArmiInvocationHandler.class.getName(); try { - mServer = (RmiArmiInvocationHandler) Naming.lookup(url); + mRmiArmiInvocationHandler = (RmiArmiInvocationHandler) Naming.lookup(url); } catch (NotBoundException nbe) { throw new ArmiConnectionException( "Cannot bind to the remote RMI service. Either an IP or RMI issue."); @@ -128,8 +129,22 @@ public ArmiReply handleInvocation(ArmiRequest request) { try { - return mServer.handleInvocation(request); + boolean again = true; + ArmiReply reply = null; + while (again) { + again = false; + reply = mRmiArmiInvocationHandler.handleInvocation(request); + if (reply instanceof TryLaterReply) { + int millis = ((TryLaterReply) reply).getDelayMillis(); + try { + Thread.sleep(millis); + } catch (InterruptedException ie) {} + again = true; + } + } + return reply; } catch (RemoteException re) { + // should impl so automagic try again here (for n times at least). throw new ArmiInvocationException("Unknown RMI problem : " + re.getMessage()); } } 1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/TryLaterReply.java Index: TryLaterReply.java =================================================================== /* * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/TryLaterReply.java,v 1.1 2001/12/31 12:48:42 hammant Exp $ * $Revision: 1.1 $ * $Date: 2001/12/31 12:48:42 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * . * */ package org.apache.commons.armi.common; /** * Class TryLaterReply * * * @author Paul Hammant Paul_Hammant@yahoo.com * @version $Revision: 1.1 $ */ public class TryLaterReply extends ArmiReply { private final int mDelayMillis; /** * Constructor TryLaterReply * */ public TryLaterReply() { mDelayMillis = 5 * 1000; // ten seconds. } /** * Constructor TryLaterReply * * * @param delayMillis * */ public TryLaterReply(int delayMillis) { mDelayMillis = delayMillis; } /** * Method getDelayMillis * * * @return * */ public int getDelayMillis() { return mDelayMillis; } } 1.2 +17 -4 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/ArmiServer.java Index: ArmiServer.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/ArmiServer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ArmiServer.java 28 Dec 2001 18:08:38 -0000 1.1 +++ ArmiServer.java 31 Dec 2001 12:48:42 -0000 1.2 @@ -1,8 +1,8 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/ArmiServer.java,v 1.1 2001/12/28 18:08:38 hammant Exp $ - * $Revision: 1.1 $ - * $Date: 2001/12/28 18:08:38 $ + * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/ArmiServer.java,v 1.2 2001/12/31 12:48:42 hammant Exp $ + * $Revision: 1.2 $ + * $Date: 2001/12/31 12:48:42 $ * * ==================================================================== * @@ -72,7 +72,7 @@ * * * @author Paul Hammant Paul_Hammant@yahoo.com - * @version * $Revision: 1.1 $ + * @version * $Revision: 1.2 $ */ public interface ArmiServer { @@ -108,4 +108,17 @@ * */ ArmiReply processRequest(ArmiRequest request); + + /** + * Method suspend + * + */ + void suspend(); + + /** + * Method resume + * + */ + void resume(); + } 1.3 +26 -4 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java Index: AbstractServer.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractServer.java 30 Dec 2001 00:42:10 -0000 1.2 +++ AbstractServer.java 31 Dec 2001 12:48:42 -0000 1.3 @@ -1,8 +1,8 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java,v 1.2 2001/12/30 00:42:10 hammant Exp $ - * $Revision: 1.2 $ - * $Date: 2001/12/30 00:42:10 $ + * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java,v 1.3 2001/12/31 12:48:42 hammant Exp $ + * $Revision: 1.3 $ + * $Date: 2001/12/31 12:48:42 $ * * ==================================================================== * @@ -74,6 +74,7 @@ import org.apache.commons.armi.common.ArmiConnectionException; import org.apache.commons.armi.common.ClassReply; import org.apache.commons.armi.common.RequestFailedReply; +import org.apache.commons.armi.common.TryLaterReply; import org.apache.commons.armi.client.impl.BaseServedObject; import java.lang.reflect.Method; @@ -87,11 +88,12 @@ * * * @author Paul Hammant Paul_Hammant@yahoo.com - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ public class AbstractServer extends AbstractMethodHandler implements ArmiServer { private HashMap publishedObjects = new HashMap(); + private boolean mSuspend = false; /** * Method publish @@ -153,6 +155,10 @@ */ public ArmiReply processRequest(ArmiRequest request) { + if (mSuspend == true) { + return new TryLaterReply(); + } + if (request instanceof MethodRequest) { MethodRequest mr = (MethodRequest) request; String as = mr.getPublishedObjectName(); @@ -178,5 +184,21 @@ } else { return new RequestFailedReply("Unknown request :" + request.getClass().getName()); } + } + + /** + * Method suspend + * + */ + public void suspend() { + mSuspend = true; + } + + /** + * Method resume + * + */ + public void resume() { + mSuspend = false; } } -- To unsubscribe, e-mail: For additional commands, e-mail: