All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.spy.memcached.ops.Operation Maven / Gradle / Ivy

The newest version!
package net.spy.memcached.ops;

import java.io.IOException;
import java.nio.ByteBuffer;

import net.spy.memcached.MemcachedNode;


/**
 * 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);

	/**
	 * Get the node that should've been handling this operation.
	 */
	MemcachedNode getHandlingNode();

	/**
	 * Set a reference to the node that will be/is handling this operation.
	 *
	 * @param to a memcached node
	 */
	void setHandlingNode(MemcachedNode to);

	/**
	 * Mark this operation as one which has exceeded its timeout value.
	 */
	public void timeOut();

	/**
	 * True if the operation has timed out.
	 *
	 * 

A timed out operation may or may not have been sent to the server * already, but it exceeded either the specified or the default timeout * value. */ public boolean isTimedOut(); /** * True if the operation has timed out. * * The ttl allows the caller to specify how long the operation should * have been given since its creation, returning true if the operation * has exceeded that time period. * *

A timed out operation may or may not have been sent to the server * already, but it exceeded either the specified or the default timeout * value. * *

In the rare case this may be called with a longer timeout value * after having been called with a shorter value that caused the * operation to be timed out, an IllegalArgumentException may be thrown. * * @param ttlMillis the max amount of time an operation may have existed * since its creation in milliseconds. */ public boolean isTimedOut(long ttlMillis); /** * True if the operation has timed out and has not been sent. * * If the client has timed out this operation and knows it has not been * written to the network, this will be true. * */ public boolean isTimedOutUnsent(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy