Files
MauMau-Server/Room/RoomManager.cs
DTieman d51df88fec
All checks were successful
Build Mau & Deploy Mau / build (push) Successful in 1m32s
Build Mau & Deploy Mau / deploy (push) Has been skipped
Garbage collection setup that might be needed later
2024-04-19 23:05:56 +02:00

54 lines
1.2 KiB
C#

namespace MauMau_Server.Websockets;
public class RoomManager : IRoomManager
{
private static readonly Dictionary<string, Room> Rooms = new();
public string CreateRoom()
{
var roomId = Guid.NewGuid().ToString();
var room = new Room(this, roomId);
Rooms.Add(roomId, room);
return roomId;
}
public Room GetRoom(string roomId)
{
return Rooms[roomId];
}
public List<string> GetAllRooms()
{
return Rooms.Keys.ToList();
}
public void RemoveRoom(string roomId)
{
Rooms.Remove(roomId);
}
public bool RoomExists(string roomId)
{
return Rooms.ContainsKey(roomId);
}
public void ClearGhostRooms()
{
var ghostRooms = Rooms.Where(room => room.Value.IsEmpty());
foreach (var room in ghostRooms)
{
GC.Collect(GC.GetGeneration(room.Value));
RemoveRoom(room.Key);
}
}
}
public interface IRoomManager
{
public string CreateRoom();
public Room GetRoom(string roomId);
public List<string> GetAllRooms();
public void RemoveRoom(string roomId);
public bool RoomExists(string roomId);
public void ClearGhostRooms();
}