public void Subscribe(ISubscriber <T> s)
        {
            if (TrySingleSchedule(source, s, scheduler))
            {
                return;
            }

            var worker = scheduler.CreateWorker();

            if (s is IConditionalSubscriber <T> )
            {
                var parent = new SubscribeOnConditionalSubscriber((IConditionalSubscriber <T>)s, worker);

                s.OnSubscribe(parent);

                worker.Schedule(() => source.Subscribe(parent));
            }
            else
            {
                var parent = new SubscribeOnSubscriber(s, worker);

                s.OnSubscribe(parent);

                worker.Schedule(() => source.Subscribe(parent));
            }
        }
Example #2
0
        public override void Subscribe(IFlowableSubscriber <T> subscriber)
        {
            IExecutorWorker worker = executor.Worker;
            var             s      = new SubscribeOnSubscriber(subscriber, worker, requestOn, source);

            subscriber.OnSubscribe(s);
            worker.Schedule(s.Run);
        }