|
@@ -10,6 +10,11 @@ import com.dzdy.dim.protocol.response.HeartBeatResponsePacket;
|
|
|
import com.dzdy.dim.protocol.response.LoginResponsePacket;
|
|
|
import com.dzdy.dim.protocol.response.LogoutResponsePacket;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* 操作指令枚举
|
|
|
*
|
|
@@ -62,6 +67,16 @@ public enum Command {
|
|
|
*/
|
|
|
MESSAGE(91, SockData.class);
|
|
|
|
|
|
+ /**
|
|
|
+ * 数据 map, 用于加快查找, O(n) -> O(1)
|
|
|
+ */
|
|
|
+ private static final Map<Byte, Command> DATA_MAP;
|
|
|
+
|
|
|
+ static {
|
|
|
+ DATA_MAP = Collections.unmodifiableMap(Arrays.stream(Command.values())
|
|
|
+ .collect(Collectors.toMap(Command::getCode, commandEnum -> commandEnum)));
|
|
|
+ }
|
|
|
+
|
|
|
private Byte code;
|
|
|
private Class<? extends Packet> clazz;
|
|
|
|
|
@@ -71,12 +86,7 @@ public enum Command {
|
|
|
}
|
|
|
|
|
|
public static Command getCommand(byte command) {
|
|
|
- for (Command value : Command.values()) {
|
|
|
- if (value.getCode() == command) {
|
|
|
- return value;
|
|
|
- }
|
|
|
- }
|
|
|
- return null;
|
|
|
+ return DATA_MAP.get(command);
|
|
|
}
|
|
|
|
|
|
public Byte getCode() {
|