Class OperationImpl

    • Field Detail

      • EMPTY_BYTES

        protected static final byte[] EMPTY_BYTES
      • SEQ_NUMBER

        private static final java.util.concurrent.atomic.AtomicInteger SEQ_NUMBER
      • cmd

        private final byte cmd
      • vbucket

        protected short vbucket
      • opaque

        protected final int opaque
      • header

        private final byte[] header
      • headerOffset

        private int headerOffset
      • payload

        private byte[] payload
      • errorMsg

        private byte[] errorMsg
      • keyLen

        protected int keyLen
      • responseCmd

        protected byte responseCmd
      • errorCode

        protected int errorCode
      • responseOpaque

        protected int responseOpaque
      • responseCas

        protected long responseCas
      • payloadOffset

        private int payloadOffset
    • Constructor Detail

      • OperationImpl

        protected OperationImpl​(byte c,
                                int o,
                                OperationCallback cb)
        Construct with opaque.
        Parameters:
        o - the opaque value.
        cb -
    • Method Detail

      • resetInput

        protected void resetInput()
      • readFromBuffer

        public void readFromBuffer​(java.nio.ByteBuffer buffer)
                            throws java.io.IOException
        Read from the incoming ByteBuffer. Reading from the buffer is done in stages, depending on how much data can be read at once. First, the header is read and then parsed (24 bytes, indicated by MIN_RECV_PACKET). Then, the payload is read (if one is available for this operation and can be loaded fully).
        Specified by:
        readFromBuffer in interface Operation
        Specified by:
        readFromBuffer in class BaseOperationImpl
        Parameters:
        buffer - the buffer to read from.
        Throws:
        java.io.IOException - if an error happened during parsing/reading.
      • readHeaderFromBuffer

        private void readHeaderFromBuffer​(java.nio.ByteBuffer buffer)
        Read the header bytes from the incoming ByteBuffer.
        Parameters:
        buffer - the buffer to read from.
      • parseHeaderFromBuffer

        private void parseHeaderFromBuffer()
        Parse the header info out of the buffer.
      • readPayloadFromBuffer

        private void readPayloadFromBuffer​(java.nio.ByteBuffer buffer)
                                    throws java.io.IOException
        Read the payload from the buffer.
        Parameters:
        buffer - the buffer to read from.
        Throws:
        java.io.IOException - if an error occures during payload finishing.
      • finishedPayload

        protected void finishedPayload​(byte[] pl)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • getStatusForErrorCode

        protected OperationStatus getStatusForErrorCode​(int errCode,
                                                        byte[] errPl)
                                                 throws java.io.IOException
        Get the OperationStatus object for the given error code.
        Parameters:
        errCode - the error code
        Returns:
        the status to return, or null if this is an exceptional case
        Throws:
        java.io.IOException
      • decodePayload

        protected void decodePayload​(byte[] pl)
        Decode the given payload for this command.
        Parameters:
        pl - the payload.
      • opaqueIsValid

        protected boolean opaqueIsValid()
        Validate an opaque value from the header. This may be overridden from a subclass where the opaque isn't expected to always be the same as the request opaque.
      • decodeShort

        static int decodeShort​(byte[] data,
                               int i)
      • decodeByte

        static int decodeByte​(byte[] data,
                              int i)
      • decodeInt

        static int decodeInt​(byte[] data,
                             int i)
      • decodeUnsignedInt

        static long decodeUnsignedInt​(byte[] data,
                                      int i)
      • decodeLong

        static long decodeLong​(byte[] data,
                               int i)
      • prepareBuffer

        protected void prepareBuffer​(java.lang.String key,
                                     long cas,
                                     byte[] val,
                                     java.lang.Object... extraHeaders)
        Prepare the buffer for sending.
        Parameters:
        key - the key (for keyed ops).
        cas - the cas value.
        val - the data payload.
        extraHeaders - any additional headers that need to be sent.
      • addExtraHeaders

        private void addExtraHeaders​(java.nio.ByteBuffer bb,
                                     java.lang.Object... extraHeaders)
        Add the extra headers to the write ByteBuffer.
        Parameters:
        bb - the buffer where to append.
        extraHeaders - the headers to append.
      • calculateExtraLength

        private int calculateExtraLength​(java.lang.Object... extraHeaders)
        Calculate the length of all extra headers.
        Parameters:
        extraHeaders - the list of extra headers to count.
        Returns:
        the length of the extra headers.
      • generateOpaque

        static int generateOpaque()
        Generate an opaque ID.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getErrorMsg

        public byte[] getErrorMsg()
        Description copied from interface: Operation
        Returns the raw bytes of the error message content.
        Specified by:
        getErrorMsg in interface Operation
        Returns:
        the raw error message content.