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);
            }
        }
Beispiel #2
0
        internal SubscribeOperationState(SubscribeOperation operation, IEnumerable <string> channels)
        {
            this.channels = new ConcurrentHashSet <string>(channels);

            this.operation = operation;
        }
Beispiel #3
0
 public WebhookController(DequeueOperation dequeueOperation, SubscribeOperation subscribeOperation)
 {
     _dequeueOperation   = dequeueOperation;
     _subscribeOperation = subscribeOperation;
 }