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