초기커밋
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
|
||||
using ServerCore;
|
||||
using ServerBase;
|
||||
|
||||
|
||||
namespace ServerCommon;
|
||||
|
||||
public class ReservationUserManager
|
||||
{
|
||||
private ServerLogicBase? m_server_logic { get; set; }
|
||||
|
||||
private ConcurrentDictionary<string, DateTime> m_reserved_user_ids { get; set; } = new();
|
||||
|
||||
public int Count => m_reserved_user_ids.Count;
|
||||
|
||||
public void onInit(ServerLogicBase serverLogic) => m_server_logic = serverLogic;
|
||||
|
||||
public bool AddReserved(string userGuid)
|
||||
{
|
||||
if (checkReserved(userGuid))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
NullReferenceCheckHelper.throwIfNull(m_server_logic, () => $"m_server_logic is null !!!");
|
||||
var config = m_server_logic.getServerConfig();
|
||||
return m_reserved_user_ids.TryAdd(userGuid, DateTime.UtcNow.AddMilliseconds(config.GameConfig.ReservationWaitTimeMSec));
|
||||
}
|
||||
|
||||
public bool checkReserved(string userGuid) => m_reserved_user_ids.ContainsKey(userGuid);
|
||||
|
||||
public bool deleteReserved(string userGuid) => m_reserved_user_ids.Remove(userGuid, out _);
|
||||
|
||||
public async Task checkLimitReservedUsers()
|
||||
{
|
||||
await Task.CompletedTask;
|
||||
|
||||
var delete_list = (from user in m_reserved_user_ids
|
||||
where user.Value <= DateTime.UtcNow select user.Key).ToList();
|
||||
|
||||
foreach (var del in delete_list)
|
||||
{
|
||||
deleteReserved(del);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user