net.rubyeye.xmemcached.command.kestrel.KestrelDeleteCommand Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xmemcached Show documentation
Show all versions of xmemcached Show documentation
Extreme performance modern memcached client for java
The newest version!
package net.rubyeye.xmemcached.command.kestrel;
import java.nio.ByteBuffer;
import java.util.concurrent.CountDownLatch;
import net.rubyeye.xmemcached.command.text.TextDeleteCommand;
import net.rubyeye.xmemcached.impl.MemcachedTCPSession;
import net.rubyeye.xmemcached.utils.ByteUtils;
public class KestrelDeleteCommand extends TextDeleteCommand {
public KestrelDeleteCommand(String key, byte[] keyBytes, int time, CountDownLatch latch,
boolean noreply) {
super(key, keyBytes, time, latch, noreply);
}
@Override
public boolean decode(MemcachedTCPSession session, ByteBuffer buffer) {
if (buffer == null || !buffer.hasRemaining()) {
return false;
}
if (this.result == null) {
if (buffer.remaining() < 2) {
return false;
}
byte first = buffer.get(buffer.position());
byte second = buffer.get(buffer.position() + 1);
if (first == 'E' && second == 'N') {
this.setResult(Boolean.TRUE);
this.countDownLatch();
// END\r\n
return ByteUtils.stepBuffer(buffer, 5);
} else if (first == 'D' && second == 'E') {
this.setResult(Boolean.TRUE);
this.countDownLatch();
// DELETED\r\n
return ByteUtils.stepBuffer(buffer, 9);
} else {
return this.decodeError(session, buffer);
}
} else {
Boolean result = (Boolean) this.result;
if (result) {
// END\r\n
return ByteUtils.stepBuffer(buffer, 5);
} else {
return this.decodeError(session, buffer);
}
}
}
}