Kit.Core/LibExternal/System.Reactive/Linq/QueryLanguage.Time.cs

667 lines
27 KiB
C#

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT License.
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Reactive.Concurrency;
namespace System.Reactive.Linq
{
using ObservableImpl;
internal partial class QueryLanguage
{
#region + Buffer +
#region TimeSpan only
public virtual IObservable<IList<TSource>> Buffer<TSource>(IObservable<TSource> source, TimeSpan timeSpan)
{
return Buffer_(source, timeSpan, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<IList<TSource>> Buffer<TSource>(IObservable<TSource> source, TimeSpan timeSpan, IScheduler scheduler)
{
return Buffer_(source, timeSpan, scheduler);
}
private static IObservable<IList<TSource>> Buffer_<TSource>(IObservable<TSource> source, TimeSpan timeSpan, IScheduler scheduler)
{
return new Buffer<TSource>.TimeHopping(source, timeSpan, scheduler);
}
public virtual IObservable<IList<TSource>> Buffer<TSource>(IObservable<TSource> source, TimeSpan timeSpan, TimeSpan timeShift)
{
return Buffer_(source, timeSpan, timeShift, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<IList<TSource>> Buffer<TSource>(IObservable<TSource> source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler)
{
return Buffer_(source, timeSpan, timeShift, scheduler);
}
private static IObservable<IList<TSource>> Buffer_<TSource>(IObservable<TSource> source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler)
{
return new Buffer<TSource>.TimeSliding(source, timeSpan, timeShift, scheduler);
}
#endregion
#region TimeSpan + int
public virtual IObservable<IList<TSource>> Buffer<TSource>(IObservable<TSource> source, TimeSpan timeSpan, int count)
{
return Buffer_(source, timeSpan, count, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<IList<TSource>> Buffer<TSource>(IObservable<TSource> source, TimeSpan timeSpan, int count, IScheduler scheduler)
{
return Buffer_(source, timeSpan, count, scheduler);
}
private static IObservable<IList<TSource>> Buffer_<TSource>(IObservable<TSource> source, TimeSpan timeSpan, int count, IScheduler scheduler)
{
return new Buffer<TSource>.Ferry(source, timeSpan, count, scheduler);
}
#endregion
#endregion
#region + Delay +
#region TimeSpan
public virtual IObservable<TSource> Delay<TSource>(IObservable<TSource> source, TimeSpan dueTime)
{
return Delay_(source, dueTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Delay<TSource>(IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)
{
return Delay_(source, dueTime, scheduler);
}
private static IObservable<TSource> Delay_<TSource>(IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)
{
return new Delay<TSource>.Relative(source, dueTime, scheduler);
}
#endregion
#region DateTimeOffset
public virtual IObservable<TSource> Delay<TSource>(IObservable<TSource> source, DateTimeOffset dueTime)
{
return Delay_(source, dueTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Delay<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IScheduler scheduler)
{
return Delay_(source, dueTime, scheduler);
}
private static IObservable<TSource> Delay_<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IScheduler scheduler)
{
return new Delay<TSource>.Absolute(source, dueTime, scheduler);
}
#endregion
#region Duration selector
public virtual IObservable<TSource> Delay<TSource, TDelay>(IObservable<TSource> source, Func<TSource, IObservable<TDelay>> delayDurationSelector)
{
return new Delay<TSource, TDelay>.Selector(source, delayDurationSelector);
}
public virtual IObservable<TSource> Delay<TSource, TDelay>(IObservable<TSource> source, IObservable<TDelay> subscriptionDelay, Func<TSource, IObservable<TDelay>> delayDurationSelector)
{
return new Delay<TSource, TDelay>.SelectorWithSubscriptionDelay(source, subscriptionDelay, delayDurationSelector);
}
#endregion
#endregion
#region + DelaySubscription +
public virtual IObservable<TSource> DelaySubscription<TSource>(IObservable<TSource> source, TimeSpan dueTime)
{
return DelaySubscription_(source, dueTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> DelaySubscription<TSource>(IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)
{
return DelaySubscription_(source, dueTime, scheduler);
}
private static IObservable<TSource> DelaySubscription_<TSource>(IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)
{
return new DelaySubscription<TSource>.Relative(source, dueTime, scheduler);
}
public virtual IObservable<TSource> DelaySubscription<TSource>(IObservable<TSource> source, DateTimeOffset dueTime)
{
return DelaySubscription_(source, dueTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> DelaySubscription<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IScheduler scheduler)
{
return DelaySubscription_(source, dueTime, scheduler);
}
private static IObservable<TSource> DelaySubscription_<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IScheduler scheduler)
{
return new DelaySubscription<TSource>.Absolute(source, dueTime, scheduler);
}
#endregion
#region + Generate +
public virtual IObservable<TResult> Generate<TState, TResult>(TState initialState, Func<TState, bool> condition, Func<TState, TState> iterate, Func<TState, TResult> resultSelector, Func<TState, TimeSpan> timeSelector)
{
return Generate_(initialState, condition, iterate, resultSelector, timeSelector, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TResult> Generate<TState, TResult>(TState initialState, Func<TState, bool> condition, Func<TState, TState> iterate, Func<TState, TResult> resultSelector, Func<TState, TimeSpan> timeSelector, IScheduler scheduler)
{
return Generate_(initialState, condition, iterate, resultSelector, timeSelector, scheduler);
}
private static IObservable<TResult> Generate_<TState, TResult>(TState initialState, Func<TState, bool> condition, Func<TState, TState> iterate, Func<TState, TResult> resultSelector, Func<TState, TimeSpan> timeSelector, IScheduler scheduler)
{
return new Generate<TState, TResult>.Relative(initialState, condition, iterate, resultSelector, timeSelector, scheduler);
}
public virtual IObservable<TResult> Generate<TState, TResult>(TState initialState, Func<TState, bool> condition, Func<TState, TState> iterate, Func<TState, TResult> resultSelector, Func<TState, DateTimeOffset> timeSelector)
{
return Generate_(initialState, condition, iterate, resultSelector, timeSelector, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TResult> Generate<TState, TResult>(TState initialState, Func<TState, bool> condition, Func<TState, TState> iterate, Func<TState, TResult> resultSelector, Func<TState, DateTimeOffset> timeSelector, IScheduler scheduler)
{
return Generate_(initialState, condition, iterate, resultSelector, timeSelector, scheduler);
}
private static IObservable<TResult> Generate_<TState, TResult>(TState initialState, Func<TState, bool> condition, Func<TState, TState> iterate, Func<TState, TResult> resultSelector, Func<TState, DateTimeOffset> timeSelector, IScheduler scheduler)
{
return new Generate<TState, TResult>.Absolute(initialState, condition, iterate, resultSelector, timeSelector, scheduler);
}
#endregion
#region + Interval +
public virtual IObservable<long> Interval(TimeSpan period)
{
return Timer_(period, period, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<long> Interval(TimeSpan period, IScheduler scheduler)
{
return Timer_(period, period, scheduler);
}
#endregion
#region + Sample +
public virtual IObservable<TSource> Sample<TSource>(IObservable<TSource> source, TimeSpan interval)
{
return Sample_(source, interval, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Sample<TSource>(IObservable<TSource> source, TimeSpan interval, IScheduler scheduler)
{
return Sample_(source, interval, scheduler);
}
private static IObservable<TSource> Sample_<TSource>(IObservable<TSource> source, TimeSpan interval, IScheduler scheduler)
{
return new Sample<TSource>(source, interval, scheduler);
}
public virtual IObservable<TSource> Sample<TSource, TSample>(IObservable<TSource> source, IObservable<TSample> sampler)
{
return Sample_(source, sampler);
}
private static IObservable<TSource> Sample_<TSource, TSample>(IObservable<TSource> source, IObservable<TSample> sampler)
{
return new Sample<TSource, TSample>(source, sampler);
}
#endregion
#region + Skip +
public virtual IObservable<TSource> Skip<TSource>(IObservable<TSource> source, TimeSpan duration)
{
return Skip_(source, duration, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Skip<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
return Skip_(source, duration, scheduler);
}
private static IObservable<TSource> Skip_<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
if (source is Skip<TSource>.Time skip && skip._scheduler == scheduler)
{
return skip.Combine(duration);
}
return new Skip<TSource>.Time(source, duration, scheduler);
}
#endregion
#region + SkipLast +
public virtual IObservable<TSource> SkipLast<TSource>(IObservable<TSource> source, TimeSpan duration)
{
return SkipLast_(source, duration, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> SkipLast<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
return SkipLast_(source, duration, scheduler);
}
private static IObservable<TSource> SkipLast_<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
return new SkipLast<TSource>.Time(source, duration, scheduler);
}
#endregion
#region + SkipUntil +
public virtual IObservable<TSource> SkipUntil<TSource>(IObservable<TSource> source, DateTimeOffset startTime)
{
return SkipUntil_(source, startTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> SkipUntil<TSource>(IObservable<TSource> source, DateTimeOffset startTime, IScheduler scheduler)
{
return SkipUntil_(source, startTime, scheduler);
}
private static IObservable<TSource> SkipUntil_<TSource>(IObservable<TSource> source, DateTimeOffset startTime, IScheduler scheduler)
{
if (source is SkipUntil<TSource> skipUntil && skipUntil._scheduler == scheduler)
{
return skipUntil.Combine(startTime);
}
return new SkipUntil<TSource>(source, startTime, scheduler);
}
#endregion
#region + Take +
public virtual IObservable<TSource> Take<TSource>(IObservable<TSource> source, TimeSpan duration)
{
return Take_(source, duration, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Take<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
return Take_(source, duration, scheduler);
}
private static IObservable<TSource> Take_<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
if (source is Take<TSource>.Time take && take._scheduler == scheduler)
{
return take.Combine(duration);
}
return new Take<TSource>.Time(source, duration, scheduler);
}
#endregion
#region + TakeLast +
public virtual IObservable<TSource> TakeLast<TSource>(IObservable<TSource> source, TimeSpan duration)
{
return TakeLast_(source, duration, SchedulerDefaults.TimeBasedOperations, SchedulerDefaults.Iteration);
}
public virtual IObservable<TSource> TakeLast<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
return TakeLast_(source, duration, scheduler, SchedulerDefaults.Iteration);
}
public virtual IObservable<TSource> TakeLast<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler timerScheduler, IScheduler loopScheduler)
{
return TakeLast_(source, duration, timerScheduler, loopScheduler);
}
private static IObservable<TSource> TakeLast_<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler timerScheduler, IScheduler loopScheduler)
{
return new TakeLast<TSource>.Time(source, duration, timerScheduler, loopScheduler);
}
public virtual IObservable<IList<TSource>> TakeLastBuffer<TSource>(IObservable<TSource> source, TimeSpan duration)
{
return TakeLastBuffer_(source, duration, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<IList<TSource>> TakeLastBuffer<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
return TakeLastBuffer_(source, duration, scheduler);
}
private static IObservable<IList<TSource>> TakeLastBuffer_<TSource>(IObservable<TSource> source, TimeSpan duration, IScheduler scheduler)
{
return new TakeLastBuffer<TSource>.Time(source, duration, scheduler);
}
#endregion
#region + TakeUntil +
public virtual IObservable<TSource> TakeUntil<TSource>(IObservable<TSource> source, DateTimeOffset endTime)
{
return TakeUntil_(source, endTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> TakeUntil<TSource>(IObservable<TSource> source, DateTimeOffset endTime, IScheduler scheduler)
{
return TakeUntil_(source, endTime, scheduler);
}
private static IObservable<TSource> TakeUntil_<TSource>(IObservable<TSource> source, DateTimeOffset endTime, IScheduler scheduler)
{
if (source is TakeUntil<TSource> takeUntil && takeUntil._scheduler == scheduler)
{
return takeUntil.Combine(endTime);
}
return new TakeUntil<TSource>(source, endTime, scheduler);
}
#endregion
#region + Throttle +
public virtual IObservable<TSource> Throttle<TSource>(IObservable<TSource> source, TimeSpan dueTime)
{
return Throttle_(source, dueTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Throttle<TSource>(IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)
{
return Throttle_(source, dueTime, scheduler);
}
private static IObservable<TSource> Throttle_<TSource>(IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)
{
return new Throttle<TSource>(source, dueTime, scheduler);
}
public virtual IObservable<TSource> Throttle<TSource, TThrottle>(IObservable<TSource> source, Func<TSource, IObservable<TThrottle>> throttleDurationSelector)
{
return new Throttle<TSource, TThrottle>(source, throttleDurationSelector);
}
#endregion
#region + TimeInterval +
public virtual IObservable<Reactive.TimeInterval<TSource>> TimeInterval<TSource>(IObservable<TSource> source)
{
return TimeInterval_(source, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<Reactive.TimeInterval<TSource>> TimeInterval<TSource>(IObservable<TSource> source, IScheduler scheduler)
{
return TimeInterval_(source, scheduler);
}
private static IObservable<Reactive.TimeInterval<TSource>> TimeInterval_<TSource>(IObservable<TSource> source, IScheduler scheduler)
{
return new TimeInterval<TSource>(source, scheduler);
}
#endregion
#region + Timeout +
#region TimeSpan
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, TimeSpan dueTime)
{
return Timeout_(source, dueTime, Observable.Throw<TSource>(new TimeoutException()), SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)
{
return Timeout_(source, dueTime, Observable.Throw<TSource>(new TimeoutException()), scheduler);
}
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, TimeSpan dueTime, IObservable<TSource> other)
{
return Timeout_(source, dueTime, other, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, TimeSpan dueTime, IObservable<TSource> other, IScheduler scheduler)
{
return Timeout_(source, dueTime, other, scheduler);
}
private static IObservable<TSource> Timeout_<TSource>(IObservable<TSource> source, TimeSpan dueTime, IObservable<TSource> other, IScheduler scheduler)
{
return new Timeout<TSource>.Relative(source, dueTime, other, scheduler);
}
#endregion
#region DateTimeOffset
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, DateTimeOffset dueTime)
{
return Timeout_(source, dueTime, Observable.Throw<TSource>(new TimeoutException()), SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IScheduler scheduler)
{
return Timeout_(source, dueTime, Observable.Throw<TSource>(new TimeoutException()), scheduler);
}
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IObservable<TSource> other)
{
return Timeout_(source, dueTime, other, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<TSource> Timeout<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IObservable<TSource> other, IScheduler scheduler)
{
return Timeout_(source, dueTime, other, scheduler);
}
private static IObservable<TSource> Timeout_<TSource>(IObservable<TSource> source, DateTimeOffset dueTime, IObservable<TSource> other, IScheduler scheduler)
{
return new Timeout<TSource>.Absolute(source, dueTime, other, scheduler);
}
#endregion
#region Duration selector
public virtual IObservable<TSource> Timeout<TSource, TTimeout>(IObservable<TSource> source, Func<TSource, IObservable<TTimeout>> timeoutDurationSelector)
{
return Timeout_(source, Observable.Never<TTimeout>(), timeoutDurationSelector, Observable.Throw<TSource>(new TimeoutException()));
}
public virtual IObservable<TSource> Timeout<TSource, TTimeout>(IObservable<TSource> source, Func<TSource, IObservable<TTimeout>> timeoutDurationSelector, IObservable<TSource> other)
{
return Timeout_(source, Observable.Never<TTimeout>(), timeoutDurationSelector, other);
}
public virtual IObservable<TSource> Timeout<TSource, TTimeout>(IObservable<TSource> source, IObservable<TTimeout> firstTimeout, Func<TSource, IObservable<TTimeout>> timeoutDurationSelector)
{
return Timeout_(source, firstTimeout, timeoutDurationSelector, Observable.Throw<TSource>(new TimeoutException()));
}
public virtual IObservable<TSource> Timeout<TSource, TTimeout>(IObservable<TSource> source, IObservable<TTimeout> firstTimeout, Func<TSource, IObservable<TTimeout>> timeoutDurationSelector, IObservable<TSource> other)
{
return Timeout_(source, firstTimeout, timeoutDurationSelector, other);
}
private static IObservable<TSource> Timeout_<TSource, TTimeout>(IObservable<TSource> source, IObservable<TTimeout> firstTimeout, Func<TSource, IObservable<TTimeout>> timeoutDurationSelector, IObservable<TSource> other)
{
return new Timeout<TSource, TTimeout>(source, firstTimeout, timeoutDurationSelector, other);
}
#endregion
#endregion
#region + Timer +
public virtual IObservable<long> Timer(TimeSpan dueTime)
{
return Timer_(dueTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<long> Timer(DateTimeOffset dueTime)
{
return Timer_(dueTime, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<long> Timer(TimeSpan dueTime, TimeSpan period)
{
return Timer_(dueTime, period, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<long> Timer(DateTimeOffset dueTime, TimeSpan period)
{
return Timer_(dueTime, period, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<long> Timer(TimeSpan dueTime, IScheduler scheduler)
{
return Timer_(dueTime, scheduler);
}
public virtual IObservable<long> Timer(DateTimeOffset dueTime, IScheduler scheduler)
{
return Timer_(dueTime, scheduler);
}
public virtual IObservable<long> Timer(TimeSpan dueTime, TimeSpan period, IScheduler scheduler)
{
return Timer_(dueTime, period, scheduler);
}
public virtual IObservable<long> Timer(DateTimeOffset dueTime, TimeSpan period, IScheduler scheduler)
{
return Timer_(dueTime, period, scheduler);
}
private static IObservable<long> Timer_(TimeSpan dueTime, IScheduler scheduler)
{
return new Timer.Single.Relative(dueTime, scheduler);
}
private static IObservable<long> Timer_(TimeSpan dueTime, TimeSpan period, IScheduler scheduler)
{
return new Timer.Periodic.Relative(dueTime, period, scheduler);
}
private static IObservable<long> Timer_(DateTimeOffset dueTime, IScheduler scheduler)
{
return new Timer.Single.Absolute(dueTime, scheduler);
}
private static IObservable<long> Timer_(DateTimeOffset dueTime, TimeSpan period, IScheduler scheduler)
{
return new Timer.Periodic.Absolute(dueTime, period, scheduler);
}
#endregion
#region + Timestamp +
public virtual IObservable<Timestamped<TSource>> Timestamp<TSource>(IObservable<TSource> source)
{
return Timestamp_(source, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<Timestamped<TSource>> Timestamp<TSource>(IObservable<TSource> source, IScheduler scheduler)
{
return Timestamp_(source, scheduler);
}
private static IObservable<Timestamped<TSource>> Timestamp_<TSource>(IObservable<TSource> source, IScheduler scheduler)
{
return new Timestamp<TSource>(source, scheduler);
}
#endregion
#region + Window +
#region TimeSpan only
public virtual IObservable<IObservable<TSource>> Window<TSource>(IObservable<TSource> source, TimeSpan timeSpan)
{
return Window_(source, timeSpan, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<IObservable<TSource>> Window<TSource>(IObservable<TSource> source, TimeSpan timeSpan, IScheduler scheduler)
{
return Window_(source, timeSpan, scheduler);
}
private static IObservable<IObservable<TSource>> Window_<TSource>(IObservable<TSource> source, TimeSpan timeSpan, IScheduler scheduler)
{
return new Window<TSource>.TimeHopping(source, timeSpan, scheduler);
}
public virtual IObservable<IObservable<TSource>> Window<TSource>(IObservable<TSource> source, TimeSpan timeSpan, TimeSpan timeShift)
{
return Window_(source, timeSpan, timeShift, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<IObservable<TSource>> Window<TSource>(IObservable<TSource> source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler)
{
return Window_(source, timeSpan, timeShift, scheduler);
}
private static IObservable<IObservable<TSource>> Window_<TSource>(IObservable<TSource> source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler)
{
return new Window<TSource>.TimeSliding(source, timeSpan, timeShift, scheduler);
}
#endregion
#region TimeSpan + int
public virtual IObservable<IObservable<TSource>> Window<TSource>(IObservable<TSource> source, TimeSpan timeSpan, int count)
{
return Window_(source, timeSpan, count, SchedulerDefaults.TimeBasedOperations);
}
public virtual IObservable<IObservable<TSource>> Window<TSource>(IObservable<TSource> source, TimeSpan timeSpan, int count, IScheduler scheduler)
{
return Window_(source, timeSpan, count, scheduler);
}
private static IObservable<IObservable<TSource>> Window_<TSource>(IObservable<TSource> source, TimeSpan timeSpan, int count, IScheduler scheduler)
{
return new Window<TSource>.Ferry(source, timeSpan, count, scheduler);
}
#endregion
#endregion
}
}