示例#1
0
        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();
            }
        }