1 /** 2 * C-JDBC: Clustered JDBC. 3 * Copyright (C) 2002-2005 French National Institute For Research In Computer 4 * Science And Control (INRIA). 5 * Contact: c-jdbc@objectweb.org 6 * 7 * This library is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as published by the 9 * Free Software Foundation; either version 2.1 of the License, or any later 10 * version. 11 * 12 * This library is distributed in the hope that it will be useful, but WITHOUT 13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 15 * for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public License 18 * along with this library; if not, write to the Free Software Foundation, 19 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 20 * 21 * Initial developer(s): Emmanuel Cecchet. 22 * Contributor(s): ______________________. 23 */ 24 25 package org.objectweb.cjdbc.controller.virtualdatabase.protocol; 26 27 import java.io.Serializable; 28 import java.sql.SQLException; 29 30 import org.objectweb.cjdbc.common.sql.AbstractRequest; 31 import org.objectweb.cjdbc.controller.requestmanager.distributed.DistributedRequestManager; 32 33 /** 34 * <code>DistributedRequest</code> is an abstract class that defines the 35 * interface for distributed execution of a request (horizontal scalability). 36 * 37 * @author <a HREF="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet </a> 38 * @version 1.0 39 */ 40 public abstract class DistributedRequest implements Serializable 41 { 42 protected AbstractRequest request; 43 44 /** 45 * Builds a new <code>DistributedRequest</code> object. 46 * 47 * @param request request to execute 48 */ 49 public DistributedRequest(AbstractRequest request) 50 { 51 this.request = request; 52 } 53 54 /** 55 * Returns the request value. 56 * 57 * @return Returns the request. 58 */ 59 public final AbstractRequest getRequest() 60 { 61 return request; 62 } 63 64 /** 65 * Schedule the request. This method blocks until the request is scheduled. 66 * 67 * @param drm a distributed request manager 68 * @throws SQLException if an error occurs. 69 */ 70 public abstract void scheduleRequest(DistributedRequestManager drm) 71 throws SQLException; 72 73 /** 74 * Code to be executed by the distributed request manager receiving the 75 * request. 76 * 77 * @param drm a distributed request manager 78 * @return an Object to be sent back to the caller 79 * @throws SQLException if an error occurs. 80 */ 81 public abstract Object executeScheduledRequest(DistributedRequestManager drm) 82 throws SQLException; 83 84 }