protected static int SearchPacketHandlers(string version, Assembly assembly) { int num = 0; Type[] types = assembly.GetTypes(); for (int i = 0; i < types.Length; i++) { Type type = types[i]; if (type.IsClass && type.GetInterface("Game.Server.Packets.Client.IPacketHandler") != null) { PacketHandlerAttribute[] array = (PacketHandlerAttribute[])type.GetCustomAttributes(typeof(PacketHandlerAttribute), true); if (array.Length > 0) { num++; PacketProcessor.RegisterPacketHandler(array[0].Code, (IPacketHandler)Activator.CreateInstance(type)); } } } return(num); }
/// <summary> /// 收到协议包 /// </summary> /// <param name="pkg"></param> public override void OnRecvPacket(GSPacketIn pkg) { if (m_packetProcessor == null) { m_packetLib = AbstractPacketLib.CreatePacketLibForVersion(1, this); m_packetProcessor = new PacketProcessor(this); } if (m_player != null) { pkg.ClientID = m_player.PlayerId; pkg.WriteHeader(); } //LogMsg(Marshal.ToHexDump("recevie:", pkg.Buffer, 0, pkg.Length)); m_packetProcessor.HandlePacket(pkg); }