private void ReceiveWfc29900(NetState ns, byte[] buffer, int length) { try { int offset = 0; while (offset < length && !ns.IsDisposing) { GsTcpReader reader = new GsTcpReader(buffer, offset, length); switch (reader.RecordType) { case "login": OnReceive_Login(ns, reader); break; case "logout": OnReceive_Logout(ns, reader); break; case "getprofile": OnReceive_GetProfile(ns, reader); break; case "updatepro": OnReceive_UpdateProfile(ns, reader); break; case "status": OnReceive_Status(ns, reader); break; default: Kernel.WriteLine(TypeName, $"{ns} sent unhandled Wfc29900 message."); Console.WriteLine(BufferFormat.AsString(buffer, length)); break; } offset = reader.Position; } } catch (Exception e) { Console.Write($"{TypeName}: {e.Message}"); ns.DisposeAfterNextFlush(); } }