package voldemort.server.protocol;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import voldemort.VoldemortException;
/**
* Implements an iterator-esque streaming request handler wherein we keep
* executing handleRequest until it returns
* {@link StreamRequestHandlerState#COMPLETE}.
*
*/
public interface StreamRequestHandler {
public final static int STAT_RECORDS_INTERVAL = 100000;
/**
* Handles a "segment" of a streaming request.
*
* @param inputStream
* @param outputStream
*
* @return {@link StreamRequestHandlerState}
*
* @throws IOException
*/
public StreamRequestHandlerState handleRequest(DataInputStream inputStream,
DataOutputStream outputStream)
throws IOException;
public void close(DataOutputStream outputStream) throws IOException;
public void handleError(DataOutputStream outputStream, VoldemortException e) throws IOException;
public StreamRequestDirection getDirection();
public enum StreamRequestHandlerState {
COMPLETE,
READING,
WRITING,
INCOMPLETE_READ;
}
public enum StreamRequestDirection {
READING,
WRITING;
}
}