All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.spy.memcached.protocol.binary.GetAndTouchOperationImpl Maven / Gradle / Ivy

package net.spy.memcached.protocol.binary;

import net.spy.memcached.ops.GetAndTouchOperation;

public class GetAndTouchOperationImpl extends SingleKeyOperationImpl
		implements GetAndTouchOperation {

	static final byte GAT_CMD=0x1d;

	/**
	 * Length of the extra header stuff for a GET response.
	 */
	static final int EXTRA_HDR_LEN=4;

	private final int exp;

	public GetAndTouchOperationImpl(String k, int e, GetAndTouchOperation.Callback cb) {
		super(GAT_CMD, generateOpaque(), k, cb);
		exp=e;
	}

	@Override
	public void initialize() {
		prepareBuffer(key, 0, EMPTY_BYTES, exp);
	}

	@Override
	protected void decodePayload(byte[] pl) {
		final int flags=decodeInt(pl, 0);
		final byte[] data=new byte[pl.length - EXTRA_HDR_LEN];
		System.arraycopy(pl, EXTRA_HDR_LEN, data, 0, pl.length-EXTRA_HDR_LEN);
		GetAndTouchOperation.Callback gcb=(GetAndTouchOperation.Callback)getCallback();
		gcb.gotData(key, flags, responseCas, data);
		getCallback().receivedStatus(STATUS_OK);
	}

	@Override
	public String toString() {
		return super.toString() + " Exp: " + exp;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy