public bool Process(AsyncSocketUserToken oUserToken, byte[] bytes, int offset, int count) { if (count < sizeof(int)) { return(false); // 判断包长度是否小于一个命令的长度 } int oPacketID = BitConverter.ToInt32(bytes, offset); // 获取命令ID IPacket oPacket = null; if (PacketTable.TryGetValue(oPacketID, out oPacket)) { IPacketCreate oIPacket = oPacket as IPacketCreate; IPacket oNewPacket = oIPacket.New() as IPacket; try { DynamicBuffer buffer = new DynamicBuffer(bytes, offset + sizeof(int), bytes.Length - offset - sizeof(int)); oNewPacket.Deserialization(buffer); oNewPacket.PacketID = oPacketID; oNewPacket.Owner = oUserToken; Packets.Enqueue(oNewPacket); return(true); } catch (Exception e) { Console.WriteLine(e); return(false); } } else { return(true); } }
public static void Start() { TestToPacket oPacket = new TestToPacket(); IPacketCreate oIPacket = oPacket as IPacketCreate; IPacket oNewPacket = oIPacket.New() as IPacket; Console.WriteLine(oIPacket); }
public bool Process(AsyncSocketUserToken oUserToken, byte[] bytes, int offset, int count) { if (count < sizeof(int)) { return(false); // 判断包长度是否小于一个命令的长度 } int oPacketID = BitConverter.ToInt32(bytes, offset); // 获取命令ID IProtocolProcess oProtocol = null; if (ProtocolTable.TryGetValue(oPacketID, out oProtocol)) { IPacket oPacket = null; if (PacketTable.TryGetValue(oPacketID, out oPacket)) { IPacketCreate oIPacket = oPacket as IPacketCreate; IPacket oNewPacket = oIPacket.New() as IPacket; try { DynamicBuffer buffer = new DynamicBuffer(bytes, offset + sizeof(int), bytes.Length - offset - sizeof(int)); oNewPacket.Deserialization(buffer); oProtocol.ToProcess(oUserToken, oNewPacket); } catch (Exception e) { App.Logger.Error(e.Message + "\n" + e.StackTrace); return(false); } return(true); } else { return(false); } } return(false); }