package net.spy.memcached.ops;
import java.io.IOException;
import java.nio.ByteBuffer;
/**
* Base interface for all operations.
*/
public interface Operation {
/**
* Has this operation been cancelled?
*/
boolean isCancelled();
/**
* True if an error occurred while processing this operation.
*/
boolean hasErrored();
/**
* Get the exception that occurred (or null if no exception occurred).
*/
OperationException getException();
/**
* Get the callback for this get operation.
*/
OperationCallback getCallback();
/**
* Cancel this operation.
*/
void cancel();
/**
* Get the current state of this operation.
*/
OperationState getState();
/**
* Get the write buffer for this operation.
*/
ByteBuffer getBuffer();
/**
* Invoked after having written all of the bytes from the supplied output
* buffer.
*/
void writeComplete();
/**
* Initialize this operation. This is used to prepare output byte buffers
* and stuff.
*/
void initialize();
/**
* Read data from the given byte buffer and dispatch to the appropriate
* read mechanism.
*/
void readFromBuffer(ByteBuffer data) throws IOException;
/**
* Handle a raw data read.
*/
void handleRead(ByteBuffer data);
}