public static IDisposable Subscribe <T, TKey>(this IGroupedObservable <T, TKey> value, Action <T> onNext) { Observer <T> observer = new Observer <T>(onNext); IDisposable subject = value.Subscribe(observer); return(subject); }
public static IDisposable Subscribe <T, TKey>(this IGroupedObservable <T, TKey> value, Action <T> onNext, Action <Exception> onError, Action onCompleted) { Observer <T> observer = new Observer <T>(onNext, onError, onCompleted); IDisposable subject = value.Subscribe(observer); return(subject); }
private static IObservable <TValue> DebounceWithSelector <TKey, TValue>(this IGroupedObservable <TKey, TValue> source, TimeSpan dueTime, Func <TValue> itemSelector, IScheduler scheduler) { return(Observable.Create <TValue>(o => { var disposables = new CompositeDisposable(); var debounceDisposable = new SerialDisposable(); disposables.Add(debounceDisposable); Action debounce = () => { debounceDisposable.Disposable = scheduler.Schedule(dueTime, () => { var debouncedItem = itemSelector(); o.OnNext(debouncedItem); }); }; disposables.Add(source.Subscribe(x => { debounce(); o.OnNext(x); }, o.OnError, o.OnCompleted)); debounce(); return disposables; })); }
public void OnNext(IGroupedObservable <TKey, T> value) { AddStream(value); value.Subscribe(data => { /* OnNext = No-op */ }, ex => DropStream(value), () => DropStream(value)); }
private static void DumpGroup <T1, T2>(IGroupedObservable <T1, T2> seq) { Task.Factory.StartNew(() => { Console.Write($"Key={seq.Key}: "); var ev = new ManualResetEvent(false); using (var s = seq.Subscribe(a => DumpValue(a), () => ev.Set())) { ev.WaitOne(); } }); }