public TimestampsDiffStatisticsObserver(OutputDescriptor output) { Output = output; Results = Observable.Create <object>((observer) => { var inputs = new TimestampedDataCounter(); var outputs = new TimestampedDataCounter(); InputObserver = System.Reactive.Observer.Create <object>(v => inputs.Add(v)); OutputObserver = System.Reactive.Observer.Create <object>(v => outputs.Add(v), ex => observer.OnError(ex), () => Complete(inputs, outputs, observer)); return(Disposable.Empty); }).Publish().RefCount(); }
private void Complete(TimestampedDataCounter inputs, TimestampedDataCounter outputs, IObserver <object> observer) { var result = new TimestampsDiff ( outputs.Count, inputs.Duration, outputs.Duration, outputs.MinTicks - inputs.MinTicks, outputs.MaxTicks - inputs.MaxTicks, outputs.Duration - inputs.Duration ); observer.OnNext(result); observer.OnCompleted(); }