net.spy.memcached.protocol.GetCallbackWrapper Maven / Gradle / Ivy
The newest version!
/**
*
*/
package net.spy.memcached.protocol;
import net.spy.memcached.ops.GetOperation;
import net.spy.memcached.ops.OperationStatus;
import net.spy.memcached.ops.StatusCode;
/**
* Wrapper callback for use in optimized gets.
*/
public class GetCallbackWrapper implements GetOperation.Callback {
private static final OperationStatus END =
new OperationStatus(true, "END", StatusCode.SUCCESS);
private boolean completed = false;
private int remainingKeys = 0;
private GetOperation.Callback cb = null;
public GetCallbackWrapper(int k, GetOperation.Callback c) {
super();
remainingKeys = k;
cb = c;
}
public void gotData(String key, int flags, byte[] data) {
assert !completed : "Got data for a completed wrapped op";
cb.gotData(key, flags, data);
if (--remainingKeys == 0) {
// Fake a status line
receivedStatus(END);
}
}
public void receivedStatus(OperationStatus status) {
if (!completed) {
cb.receivedStatus(status);
}
}
public void complete() {
assert !completed;
cb.complete();
completed = true;
}
}