using System; using System.Net; using System.Reflection; using FilterAPI.Networking; namespace FilterRest.LocalNetworking { internal class LocalClient : SingleClient, IDisposable { public LocalClient() : base(IPAddress.Parse(Program.Conf.GetConfigValue("MainBindIP")), Convert.ToInt32(Program.Conf.GetConfigValue("MainBindPort"))) { } public override void Connected() { using (var P = new Packet(NETCMD.LOCAL_NAME)) { P.PacketWriter.Write("FilterRest"); SendPacket(P); } } public void SendPacket(Packet ServerPacket) { Byte[] PacketBuffer; ServerPacket.ToArray(out PacketBuffer); Send(PacketBuffer); } public override void Received(Byte[] Buffer) { using (var ClientPacket = new Packet(Buffer)) { if (!ClientPacket.SetOPCode()) { Dispose(); } else if (Program.LocalHandlers.HasHandler(ClientPacket.OPCode)) { try { MethodInfo PacketMethod = Program.LocalHandlers.GetHandler(ClientPacket.OPCode); Action PacketAction = Program.LocalHandlers.GetAction(PacketMethod, this, ClientPacket); PacketAction(); } catch { } } } } public override void Disconnected() { Program.LocalClient = new LocalClient(); } } }