using System.Collections.Concurrent; using ASC.Common; using ASC.Common.Caching; using ASC.Web.Webhooks; namespace ASC.Webhooks { [Singletone] public class BuildQueueService { internal readonly ConcurrentQueue queue; private ICacheNotify WebhookNotify { get; } public BuildQueueService(ICacheNotify webhookNotify) { WebhookNotify = webhookNotify; queue = new ConcurrentQueue(); } public void Start() { WebhookNotify.Subscribe(BuildWebhooksQueue, CacheNotifyAction.Update); } public void Stop() { WebhookNotify.Unsubscribe(CacheNotifyAction.Update); } public void BuildWebhooksQueue(WebhookRequest request) { queue.Enqueue(request); } } }