private void OnChannelStateChanged(SubscribeOperation operation, string channel) { List <SubscribeOperationState> completedOperations = new List <SubscribeOperationState>(); foreach (SubscribeOperationState operationState in this.subscribeOperations.Where(o => o.Operation == operation)) { operationState.Channels.Remove(channel); if (operationState.Channels.Count == 0) { completedOperations.Add(operationState); } } foreach (SubscribeOperationState completedOperation in completedOperations) { completedOperation.Blocker.Set(); this.subscribeOperations.Remove(completedOperation); } }
internal SubscribeOperationState(SubscribeOperation operation, IEnumerable <string> channels) { this.channels = new ConcurrentHashSet <string>(channels); this.operation = operation; }
public WebhookController(DequeueOperation dequeueOperation, SubscribeOperation subscribeOperation) { _dequeueOperation = dequeueOperation; _subscribeOperation = subscribeOperation; }