Class OperationImpl
java.lang.Object
net.spy.memcached.compat.SpyObject
net.spy.memcached.protocol.BaseOperationImpl
net.spy.memcached.protocol.binary.OperationImpl
- All Implemented Interfaces:
Operation
- Direct Known Subclasses:
FlushOperationImpl
,MultiKeyOperationImpl
,NoopOperationImpl
,SASLBaseOperationImpl
,SASLMechsOperationImpl
,SingleKeyOperationImpl
,StatsOperationImpl
,TapOperationImpl
,VersionOperationImpl
Base class for binary operations.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final byte
protected static final byte
protected static final byte[]
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected int
private byte[]
private final byte[]
private int
protected int
protected static final int
protected final int
private byte[]
private int
protected static final byte
protected static final byte
protected long
protected byte
protected int
private static final AtomicInteger
protected static final OperationStatus
protected static final int
Error code for operations.protected short
Fields inherited from class net.spy.memcached.protocol.BaseOperationImpl
callback, CANCELLED, notMyVbucketNodes, TIMED_OUT
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
OperationImpl
(byte c, int o, OperationCallback cb) Construct with opaque. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addExtraHeaders
(ByteBuffer bb, Object... extraHeaders) Add the extra headers to the writeByteBuffer
.private int
calculateExtraLength
(Object... extraHeaders) Calculate the length of all extra headers.(package private) static int
decodeByte
(byte[] data, int i) (package private) static int
decodeInt
(byte[] data, int i) (package private) static long
decodeLong
(byte[] data, int i) protected void
decodePayload
(byte[] pl) Decode the given payload for this command.(package private) static int
decodeShort
(byte[] data, int i) (package private) static long
decodeUnsignedInt
(byte[] data, int i) protected void
finishedPayload
(byte[] pl) (package private) static int
Generate an opaque ID.byte[]
Returns the raw bytes of the error message content.protected OperationStatus
getStatusForErrorCode
(int errCode, byte[] errPl) Get the OperationStatus object for the given error code.protected boolean
Validate an opaque value from the header.private void
Parse the header info out of the buffer.protected void
prepareBuffer
(String key, long cas, byte[] val, Object... extraHeaders) Prepare the buffer for sending.void
readFromBuffer
(ByteBuffer buffer) Read from the incomingByteBuffer
.private void
readHeaderFromBuffer
(ByteBuffer buffer) Read the header bytes from the incomingByteBuffer
.private void
readPayloadFromBuffer
(ByteBuffer buffer) Read the payload from the buffer.protected void
toString()
Methods inherited from class net.spy.memcached.protocol.BaseOperationImpl
addClone, cancel, getBuffer, getCallback, getCloneCount, getException, getHandlingNode, getState, getWriteCompleteTimestamp, handleError, handleRead, hasErrored, initialize, isCancelled, isTimedOut, isTimedOut, isTimedOutUnsent, setBuffer, setCallback, setCloneCount, setHandlingNode, timeOut, transitionState, wasCancelled, writeComplete, writing
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface net.spy.memcached.ops.Operation
addClone, cancel, getBuffer, getCallback, getCloneCount, getException, getHandlingNode, getState, getWriteCompleteTimestamp, handleRead, hasErrored, initialize, isCancelled, isTimedOut, isTimedOut, isTimedOutUnsent, setCloneCount, setHandlingNode, timeOut, writeComplete, writing
-
Field Details
-
REQ_MAGIC
protected static final byte REQ_MAGIC- See Also:
-
RES_MAGIC
protected static final byte RES_MAGIC- See Also:
-
DUMMY_OPCODE
protected static final byte DUMMY_OPCODE- See Also:
-
MIN_RECV_PACKET
protected static final int MIN_RECV_PACKET- See Also:
-
SUCCESS
protected static final int SUCCESSError code for operations.- See Also:
-
ERR_NOT_FOUND
protected static final int ERR_NOT_FOUND- See Also:
-
ERR_EXISTS
protected static final int ERR_EXISTS- See Also:
-
ERR_2BIG
protected static final int ERR_2BIG- See Also:
-
ERR_INVAL
protected static final int ERR_INVAL- See Also:
-
ERR_NOT_STORED
protected static final int ERR_NOT_STORED- See Also:
-
ERR_DELTA_BADVAL
protected static final int ERR_DELTA_BADVAL- See Also:
-
ERR_NOT_MY_VBUCKET
protected static final int ERR_NOT_MY_VBUCKET- See Also:
-
ERR_UNKNOWN_COMMAND
protected static final int ERR_UNKNOWN_COMMAND- See Also:
-
ERR_NO_MEM
protected static final int ERR_NO_MEM- See Also:
-
ERR_NOT_SUPPORTED
protected static final int ERR_NOT_SUPPORTED- See Also:
-
ERR_INTERNAL
protected static final int ERR_INTERNAL- See Also:
-
ERR_BUSY
protected static final int ERR_BUSY- See Also:
-
ERR_TEMP_FAIL
protected static final int ERR_TEMP_FAIL- See Also:
-
EMPTY_BYTES
protected static final byte[] EMPTY_BYTES -
STATUS_OK
-
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 Details
-
OperationImpl
Construct with opaque.- Parameters:
o
- the opaque value.cb
-
-
-
Method Details
-
resetInput
protected void resetInput() -
readFromBuffer
Read from the incomingByteBuffer
. 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 byMIN_RECV_PACKET
). Then, the payload is read (if one is available for this operation and can be loaded fully).- Specified by:
readFromBuffer
in interfaceOperation
- Specified by:
readFromBuffer
in classBaseOperationImpl
- Parameters:
buffer
- the buffer to read from.- Throws:
IOException
- if an error happened during parsing/reading.
-
readHeaderFromBuffer
Read the header bytes from the incomingByteBuffer
.- Parameters:
buffer
- the buffer to read from.
-
parseHeaderFromBuffer
private void parseHeaderFromBuffer()Parse the header info out of the buffer. -
readPayloadFromBuffer
Read the payload from the buffer.- Parameters:
buffer
- the buffer to read from.- Throws:
IOException
- if an error occures during payload finishing.
-
finishedPayload
- Throws:
IOException
-
getStatusForErrorCode
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:
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
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
Add the extra headers to the writeByteBuffer
.- Parameters:
bb
- the buffer where to append.extraHeaders
- the headers to append.
-
calculateExtraLength
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
-
getErrorMsg
public byte[] getErrorMsg()Description copied from interface:Operation
Returns the raw bytes of the error message content.- Specified by:
getErrorMsg
in interfaceOperation
- Returns:
- the raw error message content.
-