////最小游戏主码值 //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); } } }
/// <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); }