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

DistributedRequest.java

00001 /**
00002  * C-JDBC: Clustered JDBC.
00003  * Copyright (C) 2002-2005 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.virtualdatabase.protocol;
00026 
00027 import java.io.Serializable;
00028 import java.sql.SQLException;
00029 
00030 import org.objectweb.cjdbc.common.sql.AbstractRequest;
00031 import org.objectweb.cjdbc.controller.requestmanager.distributed.DistributedRequestManager;
00032 
00033 /**
00034  * <code>DistributedRequest</code> is an abstract class that defines the
00035  * interface for distributed execution of a request (horizontal scalability).
00036  * 
00037  * @author <a href="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet </a>
00038  * @version 1.0
00039  */
00040 public abstract class DistributedRequest implements Serializable
00041 {
00042   protected AbstractRequest request;
00043 
00044   /**
00045    * Builds a new <code>DistributedRequest</code> object.
00046    * 
00047    * @param request request to execute
00048    */
00049   public DistributedRequest(AbstractRequest request)
00050   {
00051     this.request = request;
00052   }
00053 
00054   /**
00055    * Returns the request value.
00056    * 
00057    * @return Returns the request.
00058    */
00059   public final AbstractRequest getRequest()
00060   {
00061     return request;
00062   }
00063 
00064   /**
00065    * Schedule the request. This method blocks until the request is scheduled.
00066    * 
00067    * @param drm a distributed request manager
00068    * @throws SQLException if an error occurs.
00069    */
00070   public abstract void scheduleRequest(DistributedRequestManager drm)
00071       throws SQLException;
00072 
00073   /**
00074    * Code to be executed by the distributed request manager receiving the
00075    * request.
00076    * 
00077    * @param drm a distributed request manager
00078    * @return an Object to be sent back to the caller
00079    * @throws SQLException if an error occurs.
00080    */
00081   public abstract Object executeScheduledRequest(DistributedRequestManager drm)
00082       throws SQLException;
00083 
00084 }

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