Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

WaitForCompletionPolicy.java

00001 /**
00002  * C-JDBC: Clustered JDBC.
00003  * Copyright (C) 2002-2004 French National Institute For Research In Computer
00004  * Science And Control (INRIA).
00005  * Contact: c-jdbc@objectweb.org
00006  * 
00007  * This library is free software; you can redistribute it and/or modify it
00008  * under the terms of the GNU Lesser General Public License as published by the
00009  * Free Software Foundation; either version 2.1 of the License, or any later
00010  * version.
00011  * 
00012  * This library is distributed in the hope that it will be useful, but WITHOUT
00013  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00014  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
00015  * for more details.
00016  * 
00017  * You should have received a copy of the GNU Lesser General Public License
00018  * along with this library; if not, write to the Free Software Foundation,
00019  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
00020  *
00021  * Initial developer(s): Emmanuel Cecchet.
00022  * Contributor(s): ______________________________________.
00023  */
00024 
00025 package org.objectweb.cjdbc.controller.loadbalancer.policies;
00026 
00027 import org.objectweb.cjdbc.common.xml.DatabasesXmlTags;
00028 /**
00029  * Defines the policy to adopt before returning a result to the client.
00030  * 
00031  * @author <a href="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet</a>
00032  * @version 1.0
00033  */
00034 public class WaitForCompletionPolicy
00035 {
00036   /** Return as soon as one node has completed the request. */
00037   public static final int FIRST = 0;
00038 
00039   /**
00040    * Return as soon as a majority (n/2+1) of nodes has completed the request.
00041    */
00042   public static final int MAJORITY = 1;
00043 
00044   /** Wait for all nodes to complete the request before returning the result. */
00045   public static final int ALL = 2;
00046 
00047   /** Policy (default is {@link #FIRST}). */
00048   private int policy = FIRST;
00049 
00050   /**
00051    * Returns the policy.
00052    * 
00053    * @return an <code>int</code> value
00054    */
00055   public int getPolicy()
00056   {
00057     return policy;
00058   }
00059 
00060   /**
00061    * Sets the policy.
00062    * 
00063    * @param policy the policy to set
00064    */
00065   public void setPolicy(int policy)
00066   {
00067     this.policy = policy;
00068   }
00069 
00070   /**
00071    * Gives information about the current policy.
00072    * 
00073    * @return a <code>String</code> value
00074    */
00075   public String getInformation()
00076   {
00077     switch (policy)
00078     {
00079       case FIRST :
00080         return "return when first node completes";
00081       case MAJORITY :
00082         return "return when a majority of nodes completes";
00083       case ALL :
00084         return "return when all nodes have completed";
00085       default :
00086         return "unknown policy";
00087     }
00088   }
00089 
00090   /**
00091    * Returns this wait policy in xml format.
00092    * 
00093    * @return xml formatted string
00094    */
00095   public String getXml()
00096   {
00097     StringBuffer info = new StringBuffer();
00098     info.append(
00099       "<"
00100         + DatabasesXmlTags.ELT_WaitForCompletion
00101         + " "
00102         + DatabasesXmlTags.ATT_policy
00103         + "=\"");
00104     switch (policy)
00105     {
00106       case FIRST :
00107         info.append(DatabasesXmlTags.VAL_first);
00108         break;
00109       case ALL :
00110         info.append(DatabasesXmlTags.VAL_all);
00111         break;
00112       case MAJORITY :
00113         info.append(DatabasesXmlTags.VAL_majority);
00114         break;
00115       default :
00116         }
00117     info.append("\"/>");
00118     return info.toString();
00119   }
00120 }

Generated on Mon Apr 11 22:01:35 2005 for C-JDBC by  doxygen 1.3.9.1