public async void HandlePackets() { while (true) { while (this.packetQueue.TryDequeue(out PacketQueueEntry queueEntry)) { switch (queueEntry.PacketId) { case PacketId.PACKET_ID_PLAYER_JOIN: HandlePlayerJoin(queueEntry.Client); break; case PacketId.PACKET_ID_PLAYER_JOINDATA: PlayerJoinDataPacket joinDataPacket = new PlayerJoinDataPacket(); joinDataPacket.Read(queueEntry.Data); HandlePlayerJoinData(queueEntry.Client, joinDataPacket); break; case PacketId.PACKET_ID_PLAYER_QUIT: case PacketId.PACKET_ID_PLAYER_TIMEOUT: HandlePlayerQuit(queueEntry.Client); break; } } await Task.Delay(this.sleepInterval); } }
private void HandleClientJoinData(Client client, PlayerJoinDataPacket joinDataPacket) { string osName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "Windows" : RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "Mac OS" : RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "Linux" : RuntimeInformation.IsOSPlatform(OSPlatform.FreeBSD) ? "Free BSD" : "Unknown"; client.SendPacket(new JoinCompletePacket($"Slipe Server 0.1.0 [{osName}]\0", "1.5.7-9.0.0")); client.Player.Name = joinDataPacket.Nickname; client.SetVersion(joinDataPacket.BitStreamVersion); client.FetchSerial(); }
protected override void HandlePacket(PacketQueueEntry queueEntry) { switch (queueEntry.PacketId) { case PacketId.PACKET_ID_PLAYER_JOIN: HandleClientJoin(queueEntry.Client); break; case PacketId.PACKET_ID_PLAYER_JOINDATA: PlayerJoinDataPacket joinDataPacket = new PlayerJoinDataPacket(); joinDataPacket.Read(queueEntry.Data); HandleClientJoinData(queueEntry.Client, joinDataPacket); break; case PacketId.PACKET_ID_PLAYER_QUIT: case PacketId.PACKET_ID_PLAYER_TIMEOUT: HandleClientQuit(queueEntry.Client); break; } }