Class BaseOperationImpl

    • Field Detail

      • CANCELLED

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

        private java.nio.ByteBuffer cmd
      • cancelled

        private boolean cancelled
      • timedout

        private volatile boolean timedout
      • creationTime

        private long creationTime
      • timedOutUnsent

        private boolean timedOutUnsent
      • notMyVbucketNodes

        protected java.util.Collection<MemcachedNode> notMyVbucketNodes
      • writeCompleteTimestamp

        private long writeCompleteTimestamp
      • clones

        private java.util.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 Detail

      • BaseOperationImpl

        public BaseOperationImpl()
    • Method Detail

      • 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
      • 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.
      • getBuffer

        public final java.nio.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​(java.nio.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​(java.nio.ByteBuffer data)
                                     throws java.io.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:
        java.io.IOException
      • handleError

        protected void handleError​(OperationErrorType eType,
                                   java.lang.String line)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • handleRead

        public void handleRead​(java.nio.ByteBuffer data)
        Description copied from interface: Operation
        Handle a raw data read.
        Specified by:
        handleRead 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