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); }
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); }