Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Services/NotificationService.cs
T
Lacyway d468848b0c Improve MongoIds (#537)
* Mongoid improvements pt1

* Format Style Fixes

* Fix incorrect string

* Fix != comparison

---------

Co-authored-by: sp-tarkov-bot <singleplayertarkov@gmail.com>
2025-08-09 11:50:49 +01:00

72 lines
1.8 KiB
C#

using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Ws;
namespace SPTarkov.Server.Core.Services;
[Injectable(InjectionType.Singleton)]
public class NotificationService
{
protected readonly Dictionary<MongoId, List<WsNotificationEvent>> _messageQueue = new();
public Dictionary<MongoId, List<WsNotificationEvent>> GetMessageQueue()
{
return _messageQueue;
}
public List<WsNotificationEvent>? GetMessageFromQueue(MongoId sessionId)
{
return _messageQueue.GetValueOrDefault(sessionId);
}
public void UpdateMessageOnQueue(MongoId sessionId, List<WsNotificationEvent> value)
{
if (_messageQueue.ContainsKey(sessionId))
{
_messageQueue[sessionId] = value;
}
}
public bool Has(MongoId sessionID)
{
return _messageQueue.ContainsKey(sessionID);
}
/// <summary>
/// Pop first message from queue.
/// </summary>
public WsNotificationEvent Pop(MongoId sessionID)
{
var result = Get(sessionID).First();
Get(sessionID).Remove(result);
return result;
}
/// <summary>
/// Add message to queue
/// </summary>
public void Add(MongoId sessionID, WsNotificationEvent message)
{
Get(sessionID).Add(message);
}
/// <summary>
/// Get message queue for session
/// </summary>
/// <param name="sessionID">Session/player id</param>
public List<WsNotificationEvent> Get(MongoId sessionID)
{
if (sessionID.IsEmpty)
{
throw new Exception("sessionID missing");
}
if (!_messageQueue.ContainsKey(sessionID))
{
_messageQueue[sessionID] = [];
}
return _messageQueue[sessionID];
}
}