Exemple #1
0
        public static void Dispatching(this Network network, Packet packet)
        {
            var type = MessageCommandStorage.GetMsgType(packet.MsgTypeCode);

            if (MessageSubscriberStorage.TryGetSubscriber(packet.NetCommand, type, out ISubscriber subscriber))
            {
                subscriber.Receive(network);
                return;
            }

            Log.Fatal($"消息命令:{packet.NetCommand} 消息类型:{packet.MsgTypeCode}找不到订阅器。", LoggerBllType.Network, packet.ToJson());
        }
        public void Receive(Network network)
        {
            if (this.MsgTypeCode != network.RecvPacket.MsgTypeCode)
            {
                if (network.RecvPacket.MsgTypeCode != (int)BasicMessageType.Int)
                {
                    return;
                }

                if (this.MessageType.BaseType != typeof(Enum))
                {
                    return;
                }
            }

            if (!MessageSubscriberStorage.ExistSubscriberCmd(network.RecvPacket.NetCommand, this.MessageType))
            {
                return;
            }

            var message = network.RecvPacket.Read <Message>();

            Subscribe(network, message, network.RecvPacket.NetCommand);
        }