private static void AddEnvelopeReceiver <T>(
            IList <ReceiverFactoryPredicate <T> > envelopeReceivers,
            Func <IEnvelopeReceiver <T> > receiverFactory,
            Func <T, Task <bool> > predicate,
            int priority) where T : Envelope, new()
        {
            if (receiverFactory == null)
            {
                throw new ArgumentNullException(nameof(receiverFactory));
            }
            if (predicate == null)
            {
                predicate = envelope => TaskUtil.TrueCompletedTask;
            }

            var predicateReceiverFactory = new ReceiverFactoryPredicate <T>(receiverFactory, predicate, priority);

            envelopeReceivers.Add(predicateReceiverFactory);
        }
Beispiel #2
0
        private void AddEnvelopeReceiver <T>(
            IList <ReceiverFactoryPredicate <T> > envelopeReceivers,
            Func <IEnvelopeReceiver <T> > receiverFactory,
            Func <T, Task <bool> > predicate,
            int priority) where T : Envelope, new()
        {
            if (_listener.Listening)
            {
                throw new InvalidOperationException("Cannot add receivers while the listener is running");
            }
            if (receiverFactory == null)
            {
                throw new ArgumentNullException(nameof(receiverFactory));
            }
            if (predicate == null)
            {
                throw new ArgumentNullException(nameof(predicate));
            }

            var predicateReceiverFactory = new ReceiverFactoryPredicate <T>(receiverFactory, predicate, priority);

            envelopeReceivers.Add(predicateReceiverFactory);
        }