Class BaseOperationImpl

java.lang.Object
net.spy.memcached.compat.SpyObject
net.spy.memcached.protocol.BaseOperationImpl
All Implemented Interfaces:
Operation
Direct Known Subclasses:
OperationImpl, OperationImpl

public abstract class BaseOperationImpl extends SpyObject implements Operation
Base class for protocol-specific operation implementations.
  • Field Details

    • CANCELLED

      public static final OperationStatus CANCELLED
      Status object for canceled operations.
    • TIMED_OUT

      public static final OperationStatus TIMED_OUT
    • state

      private volatile OperationState state
    • cmd

      private ByteBuffer cmd
    • cancelled

      private boolean cancelled
    • exception

      private OperationException exception
    • callback

      protected OperationCallback callback
    • handlingNode

      private volatile MemcachedNode handlingNode
    • timedout

      private volatile boolean timedout
    • creationTime

      private long creationTime
    • timedOutUnsent

      private boolean timedOutUnsent
    • notMyVbucketNodes

      protected Collection<MemcachedNode> notMyVbucketNodes
    • writeCompleteTimestamp

      private long writeCompleteTimestamp
    • clones

      private List<Operation> clones
      If the operation gets cloned, the reference is used to cascade cancellations and timeouts.
    • cloneCount

      private volatile int cloneCount
      Number of clones for this operation.
  • Constructor Details

    • BaseOperationImpl

      public BaseOperationImpl()
  • Method Details

    • getCallback

      public final OperationCallback getCallback()
      Get the operation callback associated with this operation.
      Specified by:
      getCallback in interface Operation
    • setCallback

      protected void setCallback(OperationCallback to)
      Set the callback for this instance.
    • isCancelled

      public final boolean isCancelled()
      Description copied from interface: Operation
      Has this operation been cancelled?
      Specified by:
      isCancelled in interface Operation
    • hasErrored

      public final boolean hasErrored()
      Description copied from interface: Operation
      True if an error occurred while processing this operation.
      Specified by:
      hasErrored in interface Operation
    • getException

      public final OperationException getException()
      Description copied from interface: Operation
      Get the exception that occurred (or null if no exception occurred).
      Specified by:
      getException in interface Operation
    • cancel

      public final void cancel()
      Description copied from interface: Operation
      Cancel this operation.
      Specified by:
      cancel in interface Operation
    • wasCancelled

      protected void wasCancelled()
      This is called on each subclass whenever an operation was cancelled.
    • getState

      public final OperationState getState()
      Description copied from interface: Operation
      Get the current state of this operation.
      Specified by:
      getState in interface Operation
    • getBuffer

      public final ByteBuffer getBuffer()
      Description copied from interface: Operation
      Get the write buffer for this operation.
      Specified by:
      getBuffer in interface Operation
    • setBuffer

      protected final void setBuffer(ByteBuffer to)
      Set the write buffer for this operation.
    • transitionState

      protected final void transitionState(OperationState newState)
      Transition the state of this operation to the given state.
    • writing

      public final void writing()
      Description copied from interface: Operation
      Invoked when we start writing all of the bytes from this operation to the sockets write buffer.
      Specified by:
      writing in interface Operation
    • writeComplete

      public final void writeComplete()
      Description copied from interface: Operation
      Invoked after having written all of the bytes from the supplied output buffer.
      Specified by:
      writeComplete in interface Operation
    • initialize

      public abstract void initialize()
      Description copied from interface: Operation
      Initialize this operation. This is used to prepare output byte buffers and stuff.
      Specified by:
      initialize in interface Operation
    • readFromBuffer

      public abstract void readFromBuffer(ByteBuffer data) throws IOException
      Description copied from interface: Operation
      Read data from the given byte buffer and dispatch to the appropriate read mechanism.
      Specified by:
      readFromBuffer in interface Operation
      Throws:
      IOException
    • handleError

      protected void handleError(OperationErrorType eType, String line) throws IOException
      Throws:
      IOException
    • handleRead

      public void handleRead(ByteBuffer data)
      Description copied from interface: Operation
      Handle a raw data read.
      Specified by:
      handleRead in interface Operation
    • getHandlingNode

      public MemcachedNode getHandlingNode()
      Description copied from interface: Operation
      Get the node that should've been handling this operation.
      Specified by:
      getHandlingNode in interface Operation
    • setHandlingNode

      public void setHandlingNode(MemcachedNode to)
      Description copied from interface: Operation
      Set a reference to the node that will be/is handling this operation.
      Specified by:
      setHandlingNode in interface Operation
      Parameters:
      to - a memcached node
    • timeOut

      public void timeOut()
      Description copied from interface: Operation
      Mark this operation as one which has exceeded its timeout value.
      Specified by:
      timeOut in interface Operation
    • isTimedOut

      public boolean isTimedOut()
      Description copied from interface: Operation
      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.

      Specified by:
      isTimedOut in interface Operation
    • isTimedOut

      public boolean isTimedOut(long ttlMillis)
      Description copied from interface: Operation
      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.

      Specified by:
      isTimedOut in interface Operation
      Parameters:
      ttlMillis - the max amount of time an operation may have existed since its creation in milliseconds.
    • isTimedOutUnsent

      public boolean isTimedOutUnsent()
      Description copied from interface: Operation
      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.
      Specified by:
      isTimedOutUnsent in interface Operation
    • getWriteCompleteTimestamp

      public long getWriteCompleteTimestamp()
      Description copied from interface: Operation
      Returns the timestamp from the point where the WRITE was completed. This can be used to calculate the roundtrip time of the operation.
      Specified by:
      getWriteCompleteTimestamp in interface Operation
    • addClone

      public void addClone(Operation op)
      Description copied from interface: Operation
      Add the clone from this operation.
      Specified by:
      addClone in interface Operation
      Parameters:
      op - the cloned operation.
    • getCloneCount

      public int getCloneCount()
      Description copied from interface: Operation
      Returns the number of times this operation has been cloned.
      Specified by:
      getCloneCount in interface Operation
      Returns:
      the number of clones.
    • setCloneCount

      public void setCloneCount(int count)
      Description copied from interface: Operation
      Sets the clone count for this operation.
      Specified by:
      setCloneCount in interface Operation