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 byteprotected static final byteprotected static final byte[]protected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected intprivate byte[]private final byte[]private intprotected intprotected static final intprotected final intprivate byte[]private intprotected static final byteprotected static final byteprotected longprotected byteprotected intprivate static final AtomicIntegerprotected static final OperationStatusprotected static final intError code for operations.protected shortFields inherited from class BaseOperationImpl
callback, CANCELLED, notMyVbucketNodes, TIMED_OUT -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedOperationImpl(byte c, int o, OperationCallback cb) Construct with opaque. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddExtraHeaders(ByteBuffer bb, Object... extraHeaders) Add the extra headers to the writeByteBuffer.private intcalculateExtraLength(Object... extraHeaders) Calculate the length of all extra headers.(package private) static intdecodeByte(byte[] data, int i) (package private) static intdecodeInt(byte[] data, int i) (package private) static longdecodeLong(byte[] data, int i) protected voiddecodePayload(byte[] pl) Decode the given payload for this command.(package private) static intdecodeShort(byte[] data, int i) (package private) static longdecodeUnsignedInt(byte[] data, int i) protected voidfinishedPayload(byte[] pl) (package private) static intGenerate an opaque ID.byte[]Returns the raw bytes of the error message content.protected OperationStatusgetStatusForErrorCode(int errCode, byte[] errPl) Get the OperationStatus object for the given error code.protected booleanValidate an opaque value from the header.private voidParse the header info out of the buffer.protected voidprepareBuffer(String key, long cas, byte[] val, Object... extraHeaders) Prepare the buffer for sending.voidreadFromBuffer(ByteBuffer buffer) Read from the incomingByteBuffer.private voidreadHeaderFromBuffer(ByteBuffer buffer) Read the header bytes from the incomingByteBuffer.private voidreadPayloadFromBuffer(ByteBuffer buffer) Read the payload from the buffer.protected voidtoString()Methods inherited from class 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, writingMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface 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:
readFromBufferin interfaceOperation- Specified by:
readFromBufferin 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
-
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:OperationReturns the raw bytes of the error message content.- Specified by:
getErrorMsgin interfaceOperation- Returns:
- the raw error message content.
-