Explorar o código

refactor:优化日志和命令枚举

王智勇 %!s(int64=4) %!d(string=hai) anos
pai
achega
28df28355c

+ 16 - 6
dim-common/src/main/java/com/dzdy/dim/protocol/command/Command.java

@@ -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() {

+ 1 - 1
dim-service/src/main/java/com/dzdy/dim/handler/ConfirmRequestHandler.java

@@ -24,6 +24,6 @@ public class ConfirmRequestHandler extends SimpleChannelInboundHandler<ConfirmRe
 
     @Override
     protected void channelRead0(ChannelHandlerContext ctx, ConfirmRequestPacket packet) throws Exception {
-        log.info(String.format("id %s consumed", packet.getPacketId()));
+        log.info("messageId:{} is consumed", packet.getPacketId());
     }
 }

+ 1 - 1
dim-service/src/main/java/com/dzdy/dim/handler/HeartBeatRequestHandler.java

@@ -28,7 +28,7 @@ public class HeartBeatRequestHandler extends SimpleChannelInboundHandler<HeartBe
     protected void channelRead0(ChannelHandlerContext ctx, HeartBeatRequestPacket msg) {
         Session session = SessionUtil.getSession(ctx.channel());
         if (null != session) {
-            log.info(String.format(" receive [user:%s - session:%s] heartBeat", session.getUserId(), session.getSessionId()));
+            log.info(" receive [user:{} - session:{}] heartBeat", session.getUserId(), session.getSessionId());
         }
         ctx.writeAndFlush(new HeartBeatResponsePacket());
     }

+ 1 - 1
dim-service/src/main/java/com/dzdy/dim/handler/LoginRequestHandler.java

@@ -47,7 +47,7 @@ public class LoginRequestHandler extends SimpleChannelInboundHandler<LoginReques
                 Session session = new Session(sessionId, user.getUser_name(), null);
                 responsePacket.setSession(session);
                 SessionUtil.bind(session, ctx.channel());
-                log.info(String.format("[%s] login success .", user.getUser_name()));
+                log.info("[{}] login success .", user.getUser_name());
             }
         } catch (ExpiredJwtException e) {
             responsePacket.setSuccess(false);

+ 11 - 7
dim-service/src/main/java/com/dzdy/dim/util/PushUtil.java

@@ -25,12 +25,16 @@ public class PushUtil {
     public static void push(Session session, Command command, Object data) {
         SockData<Object> sockData = SockData.newData(command, data);
         Channel channel = SessionUtil.getChannel(session.getSessionId());
-        channel.writeAndFlush(sockData).addListener(future -> {
-            if (future.isSuccess()) {
-                log.info(session.getSessionId() + " push success.");
-            } else {
-                log.info(session.getSessionId() + " push failure.");
-            }
-        });
+        if (null != channel) {
+            channel.writeAndFlush(sockData).addListener(future -> {
+                if (future.isSuccess()) {
+                    log.info("sessionId:{} - messageId:{} push success.", session.getSessionId(), sockData.getId());
+                } else {
+                    log.error("sessionId:{} - messageId:{} push failure.", session.getSessionId(), sockData.getId());
+                }
+            });
+        } else {
+            log.error("push failure: can`t find sessionId.");
+        }
     }
 }