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