void Process() { while (IsThreadRunning) { //System.Threading.Thread.Sleep(64); //테스트 용 try { var packet = MsgBuffer.Receive(); var header = new MsgPackPacketHeadInfo(); header.Read(packet.Data); if (PacketHandlerMap.ContainsKey(header.Id)) { PacketHandlerMap[header.Id](packet); } else { //System.Diagnostics.Debug.WriteLine("세션 번호 {0}, PacketID {1}, 받은 데이터 크기: {2}", packet.SessionID, packet.PacketID, packet.BodyData.Length); } } catch (Exception ex) { if (IsThreadRunning) { MainServer.MainLogger.Error(ex.ToString()); } } } }
public void WriteHeaderInfo(PACKETID packetId, byte[] packetData) { var header = new MsgPackPacketHeadInfo(); header.TotalSize = (UInt16)packetData.Length; header.Id = (UInt16)packetId; header.Type = 0; header.Write(packetData); }
public static EFBinaryRequestInfo MakeNTFInConnectOrDisConnectClientPacket(bool isConnect, string sessionID) { var packet = new EFBinaryRequestInfo(null); packet.Data = new byte[MsgPackPacketHeadInfo.HeadSize]; if (isConnect) { MsgPackPacketHeadInfo.WritePacketId(packet.Data, (UInt16)PACKETID.NTF_IN_CONNECT_CLIENT); } else { MsgPackPacketHeadInfo.WritePacketId(packet.Data, (UInt16)PACKETID.NTF_IN_DISCONNECT_CLIENT); } packet.SessionID = sessionID; return(packet); }