using System; using System.Net; using System.Reflection; using FilterAPI.Networking; namespace FilterZone.LocalNetworking { internal class LocalClient : Client, IDisposable { public LocalClient() : base(IPAddress.Parse(Program.Auth.ConfigValues["CentralBindIP"]), Convert.ToInt32(Program.Auth.ConfigValues["CentralBindPort"])) { } public override void Connected() { using (var P = new Packet(2, 1)) { P.PacketWriter.Write(String.Concat("FilterZone", Program.ZoneId)); SendPacket(P); } } public override void Received(Byte[] Buffer) { using (var ClientPacket = new Packet(Buffer)) { if (!ClientPacket.SetHeaderAndType()) { Dispose(); } else if (Program.LocalHandlers.HasHandler(ClientPacket.Header, ClientPacket.Type)) { try { MethodInfo PacketMethod = Program.LocalHandlers.GetHandler(ClientPacket.Header, ClientPacket.Type); Action PacketAction = Program.LocalHandlers.GetAction(PacketMethod, this, ClientPacket); PacketAction(); } catch { } } } } public void SendPacket(Packet ServerPacket) { Byte[] PacketBuffer; ServerPacket.ToArray(out PacketBuffer); Send(PacketBuffer); } public override void Disconnected() { Program.LocalClient = new LocalClient(); } } }