package com.seer.teach.netty.im.handler.im;


import com.seer.teach.netty.common.proto.MessageProtobuf;
import io.netty.channel.ChannelHandlerContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public interface ImMessageContentHandler {

    void handle(ChannelHandlerContext ctx, MessageProtobuf.Msg msg);

    default void handleWithLog(ChannelHandlerContext ctx, MessageProtobuf.Msg msg) {
        Logger log = LoggerFactory.getLogger(getClass());
        String device = (msg != null && msg.hasHead()) ? msg.getHead().getDevice() : "-";
        String msgId = (msg != null && msg.hasHead()) ? msg.getHead().getMsgId() : "-";
        int msgType = (msg != null && msg.hasHead()) ? msg.getHead().getMsgType() : -1;
        int msgContentType = (msg != null && msg.hasHead()) ? msg.getHead().getMsgContentType() : -1;
        log.info("\n====== IM 收到消息 ======\n" +
                        "Device   : {}\n" +
                        "MessageId : {}\n" +
                        "MsgType: {}\n" +
                        "MsgContentType: {}\n" +
                        "======================",
                device, msgId, msgType,msgContentType);
        handle(ctx, msg);
    }
}
