/*
* Copyright 2003-2006 Rick Knowles <winstone-devel at lists sourceforge net>
* Distributed under the terms of either:
* - the common development and distribution license (CDDL), v1.0; or
* - the GNU Lesser General Public License, v2.1 or later
*/
package winstone;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
* Represents a cluster implementation, which is basically the communication
* mechanism between a group of winstone containers.
*
* @author <a href="mailto:rick_knowles@hotmail.com">Rick Knowles</a>
* @version $Id: Cluster.java,v 1.5 2006/02/28 07:32:47 rickknowles Exp $
*/
public interface Cluster {
/**
* Destroy the maintenance thread if there is one. Prepare for shutdown
*/
public void destroy();
/**
* Check if the other nodes in this cluster have a session for this
* sessionId.
*
* @param sessionId The id of the session to check for
* @param webAppConfig The web app that owns the session we want
* @return A valid session instance
*/
public WinstoneSession askClusterForSession(String sessionId,
WebAppConfiguration webAppConfig);
/**
* Accept a control socket request related to the cluster functions and
* process the request.
*
* @param requestType A byte indicating the request type
* @param in Socket input stream
* @param outSocket output stream
* @param hostConfig The collection of all local webapps
* @throws IOException
*/
public void clusterRequest(byte requestType, InputStream in,
OutputStream out, Socket socket, HostGroup hostGroup)
throws IOException;
}