/// <summary> /// Removes client from the queue, does not call MqClient's remove method /// </summary> internal async Task RemoveClientSilent(QueueClient client) { _clients.Remove(client); foreach (IQueueEventHandler handler in Server.QueueEventHandlers) { await handler.OnConsumerUnsubscribed(client); } OnConsumerUnsubscribed.Trigger(client); }
/// <summary> /// Removes client from the queue /// </summary> public async Task RemoveClient(QueueClient client) { _clients.Remove(client); client.Client.RemoveSubscription(client); foreach (IQueueEventHandler handler in Server.QueueEventHandlers) { await handler.OnConsumerUnsubscribed(client); } OnConsumerUnsubscribed.Trigger(client); }
/// <summary> /// Destorys the queue /// </summary> public async Task Destroy() { IsDestroyed = true; try { await TimeKeeper.Destroy(); OnMessageProduced.Dispose(); lock (PriorityMessagesList) PriorityMessagesList.Clear(); lock (MessagesList) MessagesList.Clear(); if (_ackSync != null) { _ackSync.Dispose(); _ackSync = null; } if (_listSync != null) { _listSync.Dispose(); } if (_pushSync != null) { _pushSync.Dispose(); } if (_triggerTimer != null) { await _triggerTimer.DisposeAsync(); _triggerTimer = null; } } finally { OnDestroyed?.Invoke(this); } _clients.Clear(); OnConsumerSubscribed.Dispose(); OnConsumerUnsubscribed.Dispose(); }
/// <summary> /// Removes client from the queue /// </summary> public async Task <bool> RemoveClient(MqClient client) { QueueClient cc = _clients.FindAndRemove(x => x.Client == client); if (cc == null) { return(false); } client.RemoveSubscription(cc); foreach (IQueueEventHandler handler in Server.QueueEventHandlers) { await handler.OnConsumerUnsubscribed(cc); } OnConsumerUnsubscribed.Trigger(cc); return(true); }