private void WithSubstreamsSupport(int splitWhen = 3, int elementCount = 6,
                                           SubstreamCancelStrategy substreamCancelStrategy = SubstreamCancelStrategy.Drain,
                                           Action <TestSubscriber.ManualProbe <Source <int, NotUsed> >, ISubscription, Func <Source <int, NotUsed> > > run = null)
        {
            var source      = Source.From(Enumerable.Range(1, elementCount));
            var groupStream =
                source.SplitWhen(substreamCancelStrategy, i => i == splitWhen)
                .Lift()
                .RunWith(Sink.AsPublisher <Source <int, NotUsed> >(false), Materializer);
            var masterSubscriber = TestSubscriber.CreateManualSubscriberProbe <Source <int, NotUsed> >(this);

            groupStream.Subscribe(masterSubscriber);
            var masterSubscription = masterSubscriber.ExpectSubscription();

            run?.Invoke(masterSubscriber, masterSubscription, () =>
            {
                masterSubscription.Request(1);
                return(masterSubscriber.ExpectNext());
            });
        }
        private void WithSubstreamsSupport(int splitAfter = 3, int elementCount = 6,
            SubstreamCancelStrategy substreamCancelStrategy = SubstreamCancelStrategy.Drain,
            Action<TestSubscriber.ManualProbe<Source<int, NotUsed>>, ISubscription, Func<Source<int, NotUsed>>> run = null)
        {

            var source = Source.From(Enumerable.Range(1, elementCount));
            var groupStream =
                source.SplitAfter(substreamCancelStrategy, i => i == splitAfter)
                    .Lift()
                    .RunWith(Sink.AsPublisher<Source<int, NotUsed>>(false), Materializer);
            var masterSubscriber = TestSubscriber.CreateManualProbe<Source<int, NotUsed>>(this);
            groupStream.Subscribe(masterSubscriber);
            var masterSubscription = masterSubscriber.ExpectSubscription();

            run?.Invoke(masterSubscriber, masterSubscription, () =>
            {
                masterSubscription.Request(1);
                return masterSubscriber.ExpectNext();
            });
        }
Exemple #3
0
 public static IGraph <FlowShape <T, Source <T, NotUsed> >, NotUsed> After <T>(Func <T, bool> p, SubstreamCancelStrategy substreamCancelStrategy) => new Split <T>(SplitDecision.SplitAfter, p, substreamCancelStrategy);