Search in sources :

Example 6 with RegionProvider

use of org.apache.geode.redis.internal.RegionProvider in project geode by apache.

the class ExpireExecutor method executeCommand.

@Override
public void executeCommand(Command command, ExecutionHandlerContext context) {
    List<byte[]> commandElems = command.getProcessedCommand();
    if (commandElems.size() < 3) {
        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), getArgsError()));
        return;
    }
    ByteArrayWrapper wKey = command.getKey();
    RegionProvider rC = context.getRegionProvider();
    byte[] delayByteArray = commandElems.get(SECONDS_INDEX);
    long delay;
    try {
        delay = Coder.bytesToLong(delayByteArray);
    } catch (NumberFormatException e) {
        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_SECONDS_NOT_USABLE));
        return;
    }
    if (delay <= 0) {
        command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), NOT_SET));
        return;
    }
    // If time unit given is not in millis convert to millis
    if (!timeUnitMillis())
        delay = delay * millisInSecond;
    boolean expirationSet = false;
    if (rC.hasExpiration(wKey))
        expirationSet = rC.modifyExpiration(wKey, delay);
    else
        expirationSet = rC.setExpiration(wKey, delay);
    if (expirationSet)
        command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), SET));
    else
        command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), NOT_SET));
}
Also used : ByteArrayWrapper(org.apache.geode.redis.internal.ByteArrayWrapper) RegionProvider(org.apache.geode.redis.internal.RegionProvider)

Aggregations

ByteArrayWrapper (org.apache.geode.redis.internal.ByteArrayWrapper)6 RegionProvider (org.apache.geode.redis.internal.RegionProvider)6 RedisDataType (org.apache.geode.redis.internal.RedisDataType)2 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Set (java.util.Set)1 InternalGemFireError (org.apache.geode.InternalGemFireError)1 AttributesFactory (org.apache.geode.cache.AttributesFactory)1 Region (org.apache.geode.cache.Region)1 InternalCache (org.apache.geode.internal.cache.InternalCache)1 InternalRegionArguments (org.apache.geode.internal.cache.InternalRegionArguments)1 HyperLogLogPlus (org.apache.geode.internal.hll.HyperLogLogPlus)1