Example #1
0
        ////最小游戏主码值
        //private const byte GameMinMainCode = 40;
        //private const byte ServerMaxMainCode = 30;

        /// <summary>
        ///
        /// </summary>
        /// <param name="piep"></param>
        /// <param name="recbuffer"></param>
        /// <param name="OnMessageComing"></param>
        public static void OnMessageComing(IPipeline piep, ref NetworkStream recbuffer, Action <MessageComingArgs> OnMessageComing)
        {
            TransferPacket data;

            while (PacketCodecHandlerInternal.ParsePacketInternal(ref recbuffer, out data, true))
            {
                switch (data.Code)
                {
                case TransferPacketType.HeartBeatPing:
                {
                    piep.SendData(TransferPacket.HeartBeatPongData);
                    return;
                }

                case TransferPacketType.Binnary: break;

                default: return;
                }
                var msg = (TransferMessage)data;
                if (msg != null)
                {
                    MessageComingArgs args = new MessageComingArgs()
                    {
                        Message   = msg.Result,
                        PackData  = data.PayloadData,
                        SessionID = piep.SessionID,
                        wMainCode = msg.wMainCmdID,
                        wSuCode   = msg.wSubCmdID,
                    };
                    OnMessageComing?.Invoke(args);
                }
            }
        }
Example #2
0
        /// <summary>
        /// 向管道绑定的另一端发送数据
        /// </summary>
        /// <param name="msg"></param>
        public virtual void SendData(object msg)
        {
            if (Interlocked.CompareExchange(ref _isDisposed, 0, 0) != 0)
            {
                return;
            }
            var data = PacketCodecHandlerInternal.Encode(msg);

            StatisticsManage.AddSendMessages();
            this.SendData(data);
        }