|
|
@ -1,10 +1,5 @@ |
|
|
|
package com.fr.third.redis.clients.jedis; |
|
|
|
package com.fr.third.redis.clients.jedis; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import java.util.Locale; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.fr.third.redis.clients.jedis.commands.ProtocolCommand; |
|
|
|
import com.fr.third.redis.clients.jedis.commands.ProtocolCommand; |
|
|
|
import com.fr.third.redis.clients.jedis.exceptions.JedisAskDataException; |
|
|
|
import com.fr.third.redis.clients.jedis.exceptions.JedisAskDataException; |
|
|
|
import com.fr.third.redis.clients.jedis.exceptions.JedisBusyException; |
|
|
|
import com.fr.third.redis.clients.jedis.exceptions.JedisBusyException; |
|
|
@ -17,6 +12,13 @@ import com.fr.third.redis.clients.jedis.util.RedisInputStream; |
|
|
|
import com.fr.third.redis.clients.jedis.util.RedisOutputStream; |
|
|
|
import com.fr.third.redis.clients.jedis.util.RedisOutputStream; |
|
|
|
import com.fr.third.redis.clients.jedis.util.SafeEncoder; |
|
|
|
import com.fr.third.redis.clients.jedis.util.SafeEncoder; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import java.util.Locale; |
|
|
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
|
|
public final class Protocol { |
|
|
|
public final class Protocol { |
|
|
|
|
|
|
|
|
|
|
|
private static final String ASK_RESPONSE = "ASK"; |
|
|
|
private static final String ASK_RESPONSE = "ASK"; |
|
|
@ -79,13 +81,44 @@ public final class Protocol { |
|
|
|
public static final byte[] POSITIVE_INFINITY_BYTES = "+inf".getBytes(); |
|
|
|
public static final byte[] POSITIVE_INFINITY_BYTES = "+inf".getBytes(); |
|
|
|
public static final byte[] NEGATIVE_INFINITY_BYTES = "-inf".getBytes(); |
|
|
|
public static final byte[] NEGATIVE_INFINITY_BYTES = "-inf".getBytes(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Map<ProtocolCommand, ProtocolCommand> commandMapping = new HashMap<ProtocolCommand, ProtocolCommand>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static volatile int commandMappingSize = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static synchronized void initCommandMapping(final Map<String, String> mapping) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
commandMapping.clear(); |
|
|
|
|
|
|
|
for (final Map.Entry<String, String> entry : mapping.entrySet()) { |
|
|
|
|
|
|
|
ProtocolCommand defaultCommand = Command.fromName(entry.getKey()); |
|
|
|
|
|
|
|
if (defaultCommand != null) { |
|
|
|
|
|
|
|
commandMapping.put(defaultCommand, new ProtocolCommand() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public byte[] getRaw() { |
|
|
|
|
|
|
|
return SafeEncoder.encode(entry.getValue()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
commandMappingSize = commandMapping.size(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Protocol() { |
|
|
|
private Protocol() { |
|
|
|
// this prevent the class from instantiation
|
|
|
|
// this prevent the class from instantiation
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static void sendCommand(final RedisOutputStream os, final ProtocolCommand command, |
|
|
|
public static void sendCommand(final RedisOutputStream os, final ProtocolCommand command, |
|
|
|
final byte[]... args) { |
|
|
|
final byte[]... args) { |
|
|
|
sendCommand(os, command.getRaw(), args); |
|
|
|
ProtocolCommand realCommand = getRealCommand(command); |
|
|
|
|
|
|
|
sendCommand(os, realCommand.getRaw(), args); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static ProtocolCommand getRealCommand(ProtocolCommand command) { |
|
|
|
|
|
|
|
if (commandMappingSize > 0 && commandMapping.containsKey(command)) { |
|
|
|
|
|
|
|
return commandMapping.get(command); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return command; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void sendCommand(final RedisOutputStream os, final byte[] command, |
|
|
|
private static void sendCommand(final RedisOutputStream os, final byte[] command, |
|
|
@ -268,6 +301,17 @@ public final class Protocol { |
|
|
|
public byte[] getRaw() { |
|
|
|
public byte[] getRaw() { |
|
|
|
return raw; |
|
|
|
return raw; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static ProtocolCommand fromName(String commandName) { |
|
|
|
|
|
|
|
Command[] commands = values(); |
|
|
|
|
|
|
|
for (Command command : commands) { |
|
|
|
|
|
|
|
if (command.name().equals(commandName)) { |
|
|
|
|
|
|
|
return command; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static enum Keyword { |
|
|
|
public static enum Keyword { |
|
|
|