![JAR search and dependency download from the Maven repository](/logo.png)
org.infinispan.server.resp.commands.string.MSET Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of infinispan-server-resp Show documentation
Show all versions of infinispan-server-resp Show documentation
Infinispan Resp Protocol Server
package org.infinispan.server.resp.commands.string;
import java.lang.invoke.MethodHandles;
import java.util.List;
import java.util.concurrent.CompletionStage;
import org.infinispan.commons.logging.LogFactory;
import org.infinispan.commons.util.concurrent.AggregateCompletionStage;
import org.infinispan.commons.util.concurrent.CompletionStages;
import org.infinispan.server.core.logging.Log;
import org.infinispan.server.resp.Resp3Handler;
import org.infinispan.server.resp.RespCommand;
import org.infinispan.server.resp.RespErrorUtil;
import org.infinispan.server.resp.RespRequestHandler;
import org.infinispan.server.resp.commands.Resp3Command;
import org.infinispan.server.resp.serialization.Resp3Response;
import io.netty.channel.ChannelHandlerContext;
/**
* @link https://redis.io/commands/mset/
* @since 14.0
*/
public class MSET extends RespCommand implements Resp3Command {
private static final Log log = LogFactory.getLog(MethodHandles.lookup().lookupClass(), Log.class);
public MSET() {
super(-3, 1, -1, 2);
}
@Override
public CompletionStage perform(Resp3Handler handler,
ChannelHandlerContext ctx,
List arguments) {
int keyValuePairCount = arguments.size();
if ((keyValuePairCount & 1) == 1) {
log.tracef("Received: %s count for keys and values combined, should be even for MSET", keyValuePairCount);
RespErrorUtil.customError("Missing a value for a key", handler.allocator());
return handler.myStage();
}
AggregateCompletionStage setStage = CompletionStages.aggregateCompletionStage();
for (int i = 0; i < keyValuePairCount; i += 2) {
byte[] keyBytes = arguments.get(i);
byte[] valueBytes = arguments.get(i + 1);
setStage.dependsOn(handler.cache().putAsync(keyBytes, valueBytes));
}
return handler.stageToReturn(setStage.freeze(), ctx, Resp3Response.OK);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy