// 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.Diagnostics.CodeAnalysis; using System.Linq; using System.Reactive.Concurrency; using System.Reactive.Joins; using System.Reactive.Subjects; using System.Threading; using System.Threading.Tasks; namespace System.Reactive.Linq { /// /// Internal interface describing the LINQ to Events query language. /// internal partial interface IQueryLanguage { #region * Aggregates * IObservable Aggregate(IObservable source, TAccumulate seed, Func accumulator); IObservable Aggregate(IObservable source, TAccumulate seed, Func accumulator, Func resultSelector); IObservable Aggregate(IObservable source, Func accumulator); IObservable All(IObservable source, Func predicate); IObservable Any(IObservable source); IObservable Any(IObservable source, Func predicate); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Average(IObservable source, Func selector); IObservable Contains(IObservable source, TSource value); IObservable Contains(IObservable source, TSource value, IEqualityComparer comparer); IObservable Count(IObservable source); IObservable Count(IObservable source, Func predicate); IObservable ElementAt(IObservable source, int index); IObservable ElementAtOrDefault(IObservable source, int index); IObservable FirstAsync(IObservable source); IObservable FirstAsync(IObservable source, Func predicate); IObservable FirstOrDefaultAsync(IObservable source); IObservable FirstOrDefaultAsync(IObservable source, Func predicate); IObservable IsEmpty(IObservable source); IObservable LastAsync(IObservable source); IObservable LastAsync(IObservable source, Func predicate); IObservable LastOrDefaultAsync(IObservable source); IObservable LastOrDefaultAsync(IObservable source, Func predicate); IObservable LongCount(IObservable source); IObservable LongCount(IObservable source, Func predicate); IObservable Max(IObservable source); IObservable Max(IObservable source, IComparer comparer); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector, IComparer comparer); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable Max(IObservable source, Func selector); IObservable> MaxBy(IObservable source, Func keySelector); IObservable> MaxBy(IObservable source, Func keySelector, IComparer comparer); IObservable Min(IObservable source); IObservable Min(IObservable source, IComparer comparer); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector, IComparer comparer); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable Min(IObservable source, Func selector); IObservable> MinBy(IObservable source, Func keySelector); IObservable> MinBy(IObservable source, Func keySelector, IComparer comparer); IObservable SequenceEqual(IObservable first, IObservable second); IObservable SequenceEqual(IObservable first, IObservable second, IEqualityComparer comparer); IObservable SequenceEqual(IObservable first, IEnumerable second); IObservable SequenceEqual(IObservable first, IEnumerable second, IEqualityComparer comparer); IObservable SingleAsync(IObservable source); IObservable SingleAsync(IObservable source, Func predicate); IObservable SingleOrDefaultAsync(IObservable source); IObservable SingleOrDefaultAsync(IObservable source, Func predicate); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable Sum(IObservable source, Func selector); IObservable ToArray(IObservable source); IObservable> ToDictionary(IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) where TKey : notnull; IObservable> ToDictionary(IObservable source, Func keySelector, Func elementSelector) where TKey : notnull; IObservable> ToDictionary(IObservable source, Func keySelector, IEqualityComparer comparer) where TKey : notnull; IObservable> ToDictionary(IObservable source, Func keySelector) where TKey : notnull; IObservable> ToList(IObservable source); IObservable> ToLookup(IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer); IObservable> ToLookup(IObservable source, Func keySelector, IEqualityComparer comparer); IObservable> ToLookup(IObservable source, Func keySelector, Func elementSelector); IObservable> ToLookup(IObservable source, Func keySelector); #endregion #region * Async * Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Func end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); IObservable Start(Func function); IObservable Start(Func function, IScheduler scheduler); IObservable StartAsync(Func> functionAsync); IObservable StartAsync(Func> functionAsync); IObservable StartAsync(Func> functionAsync, in TaskObservationOptions.Value options); IObservable StartAsync(Func> functionAsync, in TaskObservationOptions.Value options); IObservable Start(Action action); IObservable Start(Action action, IScheduler scheduler); IObservable StartAsync(Func actionAsync); IObservable StartAsync(Func actionAsync); IObservable StartAsync(Func actionAsync, in TaskObservationOptions.Value options); IObservable StartAsync(Func actionAsync, in TaskObservationOptions.Value options); IObservable FromAsync(Func> functionAsync); IObservable FromAsync(Func> functionAsync); IObservable FromAsync(Func actionAsync); IObservable FromAsync(Func actionAsync); IObservable FromAsync(Func> functionAsync, TaskObservationOptions.Value options); IObservable FromAsync(Func> functionAsync, TaskObservationOptions.Value options); IObservable FromAsync(Func actionAsync, TaskObservationOptions.Value options); IObservable FromAsync(Func actionAsync, TaskObservationOptions.Value options); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Func function); Func> ToAsync(Func function, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); Func> ToAsync(Action action); Func> ToAsync(Action action, IScheduler scheduler); #endregion #region * Awaiter * AsyncSubject GetAwaiter(IObservable source); AsyncSubject GetAwaiter(IConnectableObservable source); AsyncSubject RunAsync(IObservable source, CancellationToken cancellationToken); AsyncSubject RunAsync(IConnectableObservable source, CancellationToken cancellationToken); #endregion #region * Binding * IConnectableObservable Multicast(IObservable source, ISubject subject); IObservable Multicast(IObservable source, Func> subjectSelector, Func, IObservable> selector); IConnectableObservable Publish(IObservable source); IObservable Publish(IObservable source, Func, IObservable> selector); IConnectableObservable Publish(IObservable source, TSource initialValue); IObservable Publish(IObservable source, Func, IObservable> selector, TSource initialValue); IConnectableObservable PublishLast(IObservable source); IObservable PublishLast(IObservable source, Func, IObservable> selector); IObservable RefCount(IConnectableObservable source); IObservable RefCount(IConnectableObservable source, TimeSpan disconnectDelay); IObservable RefCount(IConnectableObservable source, TimeSpan disconnectDelay, IScheduler schedulder); IObservable RefCount(IConnectableObservable source, int minObservers); IObservable RefCount(IConnectableObservable source, int minObservers, TimeSpan disconnectDelay); IObservable RefCount(IConnectableObservable source, int minObservers, TimeSpan disconnectDelay, IScheduler schedulder); IConnectableObservable Replay(IObservable source); IConnectableObservable Replay(IObservable source, IScheduler scheduler); IObservable Replay(IObservable source, Func, IObservable> selector); IObservable Replay(IObservable source, Func, IObservable> selector, IScheduler scheduler); IConnectableObservable Replay(IObservable source, TimeSpan window); IObservable Replay(IObservable source, Func, IObservable> selector, TimeSpan window); IConnectableObservable Replay(IObservable source, TimeSpan window, IScheduler scheduler); IObservable Replay(IObservable source, Func, IObservable> selector, TimeSpan window, IScheduler scheduler); IConnectableObservable Replay(IObservable source, int bufferSize, IScheduler scheduler); IObservable Replay(IObservable source, Func, IObservable> selector, int bufferSize, IScheduler scheduler); IConnectableObservable Replay(IObservable source, int bufferSize); IObservable Replay(IObservable source, Func, IObservable> selector, int bufferSize); IConnectableObservable Replay(IObservable source, int bufferSize, TimeSpan window); IObservable Replay(IObservable source, Func, IObservable> selector, int bufferSize, TimeSpan window); IConnectableObservable Replay(IObservable source, int bufferSize, TimeSpan window, IScheduler scheduler); IObservable Replay(IObservable source, Func, IObservable> selector, int bufferSize, TimeSpan window, IScheduler scheduler); IObservable AutoConnect(IConnectableObservable source, int minObservers, Action? onConnect); #endregion #region * Blocking * IEnumerable> Chunkify(IObservable source); IEnumerable Collect(IObservable source, Func newCollector, Func merge); IEnumerable Collect(IObservable source, Func getInitialCollector, Func merge, Func getNewCollector); TSource First(IObservable source); TSource First(IObservable source, Func predicate); [return: MaybeNull] TSource FirstOrDefault(IObservable source); [return: MaybeNull] TSource FirstOrDefault(IObservable source, Func predicate); void ForEach(IObservable source, Action onNext); void ForEach(IObservable source, Action onNext); IEnumerator GetEnumerator(IObservable source); TSource Last(IObservable source); TSource Last(IObservable source, Func predicate); [return: MaybeNull] TSource LastOrDefault(IObservable source); [return: MaybeNull] TSource LastOrDefault(IObservable source, Func predicate); IEnumerable Latest(IObservable source); IEnumerable MostRecent(IObservable source, TSource initialValue); IEnumerable Next(IObservable source); TSource Single(IObservable source); [return: MaybeNull] TSource SingleOrDefault(IObservable source, Func predicate); [return: MaybeNull] TSource SingleOrDefault(IObservable source); TSource Single(IObservable source, Func predicate); TSource Wait(IObservable source); #endregion #region * Concurrency * IObservable ObserveOn(IObservable source, IScheduler scheduler); IObservable ObserveOn(IObservable source, SynchronizationContext context); IObservable SubscribeOn(IObservable source, IScheduler scheduler); IObservable SubscribeOn(IObservable source, SynchronizationContext context); IObservable Synchronize(IObservable source); IObservable Synchronize(IObservable source, object gate); #endregion #region * Conversions * IDisposable Subscribe(IEnumerable source, IObserver observer); IDisposable Subscribe(IEnumerable source, IObserver observer, IScheduler scheduler); IEnumerable ToEnumerable(IObservable source); IEventSource ToEvent(IObservable source); IEventSource ToEvent(IObservable source); IEventPatternSource ToEventPattern(IObservable> source); IObservable ToObservable(IEnumerable source); IObservable ToObservable(IEnumerable source, IScheduler scheduler); #endregion #region * Creation * IObservable Create(Func, IDisposable> subscribe); IObservable Create(Func, Action> subscribe); IObservable Create(Func, CancellationToken, Task> subscribeAsync); IObservable Create(Func, Task> subscribeAsync); IObservable Create(Func, CancellationToken, Task> subscribeAsync); IObservable Create(Func, Task> subscribeAsync); IObservable Create(Func, CancellationToken, Task> subscribeAsync); IObservable Create(Func, Task> subscribeAsync); IObservable Defer(Func> observableFactory); IObservable Defer(Func>> observableFactoryAsync, bool ignoreExceptionsAfterUnsubscribe); IObservable Defer(Func>> observableFactoryAsync, bool ignoreExceptionsAfterUnsubscribe); IObservable Empty(); IObservable Empty(IScheduler scheduler); IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector); IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, IScheduler scheduler); IObservable Never(); IObservable Range(int start, int count); IObservable Range(int start, int count, IScheduler scheduler); IObservable Repeat(TResult value); IObservable Repeat(TResult value, IScheduler scheduler); IObservable Repeat(TResult value, int repeatCount); IObservable Repeat(TResult value, int repeatCount, IScheduler scheduler); IObservable Return(TResult value); IObservable Return(TResult value, IScheduler scheduler); IObservable Throw(Exception exception); IObservable Throw(Exception exception, IScheduler scheduler); IObservable Using(Func resourceFactory, Func> observableFactory) where TResource : IDisposable; IObservable Using(Func> resourceFactoryAsync, Func>> observableFactoryAsync) where TResource : IDisposable; #endregion #region * Events * IObservable> FromEventPattern(Action addHandler, Action removeHandler); IObservable> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler); IObservable> FromEventPattern(Action addHandler, Action removeHandler); IObservable> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler); IObservable> FromEventPattern(Func, TDelegate> conversion, Action addHandler, Action removeHandler); IObservable> FromEventPattern(Func, TDelegate> conversion, Action addHandler, Action removeHandler, IScheduler scheduler); IObservable> FromEventPattern(Action> addHandler, Action> removeHandler); IObservable> FromEventPattern(Action> addHandler, Action> removeHandler, IScheduler scheduler); IObservable> FromEventPattern(Action addHandler, Action removeHandler); IObservable> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(object target, string eventName); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(object target, string eventName); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(object target, string eventName); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(Type type, string eventName); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(Type type, string eventName); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(Type type, string eventName); #if HAS_TRIMMABILITY_ATTRIBUTES [RequiresUnreferencedCode(Constants_Core.EventReflectionTrimIncompatibilityMessage)] #endif IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler); IObservable FromEvent(Func, TDelegate> conversion, Action addHandler, Action removeHandler); IObservable FromEvent(Func, TDelegate> conversion, Action addHandler, Action removeHandler, IScheduler scheduler); IObservable FromEvent(Action addHandler, Action removeHandler); IObservable FromEvent(Action addHandler, Action removeHandler, IScheduler scheduler); IObservable FromEvent(Action> addHandler, Action> removeHandler); IObservable FromEvent(Action> addHandler, Action> removeHandler, IScheduler scheduler); IObservable FromEvent(Action addHandler, Action removeHandler); IObservable FromEvent(Action addHandler, Action removeHandler, IScheduler scheduler); #endregion #region * Imperative * Task ForEachAsync(IObservable source, Action onNext); Task ForEachAsync(IObservable source, Action onNext, CancellationToken cancellationToken); Task ForEachAsync(IObservable source, Action onNext); Task ForEachAsync(IObservable source, Action onNext, CancellationToken cancellationToken); IObservable Case(Func selector, IDictionary> sources, IObservable defaultSource) where TValue : notnull; IObservable Case(Func selector, IDictionary> sources, IScheduler scheduler) where TValue : notnull; IObservable Case(Func selector, IDictionary> sources) where TValue : notnull; IObservable DoWhile(IObservable source, Func condition); IObservable For(IEnumerable source, Func> resultSelector); IObservable If(Func condition, IObservable thenSource, IObservable elseSource); IObservable If(Func condition, IObservable thenSource); IObservable If(Func condition, IObservable thenSource, IScheduler scheduler); IObservable While(Func condition, IObservable source); #endregion #region * Joins * Pattern And(IObservable left, IObservable right); Plan Then(IObservable source, Func selector); IObservable When(params Plan[] plans); IObservable When(IEnumerable> plans); #endregion #region * Multiple * IObservable Amb(IObservable first, IObservable second); IObservable Amb(params IObservable[] sources); IObservable Amb(IEnumerable> sources); IObservable> Buffer(IObservable source, Func> bufferClosingSelector); IObservable> Buffer(IObservable source, IObservable bufferOpenings, Func> bufferClosingSelector); IObservable> Buffer(IObservable source, IObservable bufferBoundaries); IObservable Catch(IObservable source, Func> handler) where TException : Exception; IObservable Catch(IObservable first, IObservable second); IObservable Catch(params IObservable[] sources); IObservable Catch(IEnumerable> sources); // NB: N-ary overloads of CombineLatest are generated in IQueryLanguage.tt. IObservable CombineLatest(IEnumerable> sources, Func, TResult> resultSelector); IObservable> CombineLatest(IEnumerable> sources); IObservable> CombineLatest(params IObservable[] sources); IObservable Concat(IObservable first, IObservable second); IObservable Concat(params IObservable[] sources); IObservable Concat(IEnumerable> sources); IObservable Concat(IObservable> sources); IObservable Merge(IObservable> sources); IObservable Merge(IObservable> sources, int maxConcurrent); IObservable Merge(IEnumerable> sources, int maxConcurrent); IObservable Merge(IEnumerable> sources, int maxConcurrent, IScheduler scheduler); IObservable Merge(IObservable first, IObservable second); IObservable Merge(IObservable first, IObservable second, IScheduler scheduler); IObservable Merge(params IObservable[] sources); IObservable Merge(IScheduler scheduler, params IObservable[] sources); IObservable Merge(IEnumerable> sources); IObservable Merge(IEnumerable> sources, IScheduler scheduler); IObservable OnErrorResumeNext(IObservable first, IObservable second); IObservable OnErrorResumeNext(params IObservable[] sources); IObservable OnErrorResumeNext(IEnumerable> sources); IObservable SkipUntil(IObservable source, IObservable other); IObservable Switch(IObservable> sources); IObservable TakeUntil(IObservable source, IObservable other); IObservable TakeUntil(IObservable source, Func stopPredicate); IObservable TakeUntil(IObservable source, CancellationToken cancellationToken); IObservable> Window(IObservable source, Func> windowClosingSelector); IObservable> Window(IObservable source, IObservable windowOpenings, Func> windowClosingSelector); IObservable> Window(IObservable source, IObservable windowBoundaries); IObservable WithLatestFrom(IObservable first, IObservable second, Func resultSelector); IObservable Zip(IEnumerable> sources, Func, TResult> resultSelector); IObservable> Zip(IEnumerable> sources); IObservable> Zip(params IObservable[] sources); // NB: N-ary overloads of Zip are generated in IQueryLanguage.tt. IObservable Zip(IObservable first, IEnumerable second, Func resultSelector); IObservable Concat(IObservable> sources); IObservable Merge(IObservable> sources); IObservable Switch(IObservable> sources); #endregion #region * Single * IObservable Append(IObservable source, TSource value); IObservable Append(IObservable source, TSource value, IScheduler scheduler); IObservable AsObservable(IObservable source); IObservable> Buffer(IObservable source, int count); IObservable> Buffer(IObservable source, int count, int skip); IObservable ResetExceptionDispatchState(IObservable source); IObservable Dematerialize(IObservable> source); IObservable DistinctUntilChanged(IObservable source); IObservable DistinctUntilChanged(IObservable source, IEqualityComparer comparer); IObservable DistinctUntilChanged(IObservable source, Func keySelector); IObservable DistinctUntilChanged(IObservable source, Func keySelector, IEqualityComparer comparer); IObservable Do(IObservable source, Action onNext); IObservable Do(IObservable source, Action onNext, Action onCompleted); IObservable Do(IObservable source, Action onNext, Action onError); IObservable Do(IObservable source, Action onNext, Action onError, Action onCompleted); IObservable Do(IObservable source, IObserver observer); IObservable Finally(IObservable source, Action finallyAction); IObservable IgnoreElements(IObservable source); IObservable> Materialize(IObservable source); IObservable Prepend(IObservable source, TSource value); IObservable Prepend(IObservable source, TSource value, IScheduler scheduler); IObservable Repeat(IObservable source); IObservable Repeat(IObservable source, int repeatCount); IObservable RepeatWhen(IObservable source, Func, IObservable> handler); IObservable Retry(IObservable source); IObservable Retry(IObservable source, int retryCount); IObservable RetryWhen(IObservable source, Func, IObservable> handler); IObservable Scan(IObservable source, TAccumulate seed, Func accumulator); IObservable Scan(IObservable source, Func accumulator); IObservable SkipLast(IObservable source, int count); IObservable StartWith(IObservable source, params TSource[] values); IObservable StartWith(IObservable source, IScheduler scheduler, params TSource[] values); IObservable StartWith(IObservable source, IEnumerable values); IObservable StartWith(IObservable source, IScheduler scheduler, IEnumerable values); IObservable TakeLast(IObservable source, int count); IObservable TakeLast(IObservable source, int count, IScheduler scheduler); IObservable> TakeLastBuffer(IObservable source, int count); IObservable> Window(IObservable source, int count, int skip); IObservable> Window(IObservable source, int count); #endregion #region * StandardSequenceOperators * IObservable Cast(IObservable source); IObservable DefaultIfEmpty(IObservable source); IObservable DefaultIfEmpty(IObservable source, TSource defaultValue); IObservable Distinct(IObservable source); IObservable Distinct(IObservable source, IEqualityComparer comparer); IObservable Distinct(IObservable source, Func keySelector); IObservable Distinct(IObservable source, Func keySelector, IEqualityComparer comparer); IObservable> GroupBy(IObservable source, Func keySelector, Func elementSelector); IObservable> GroupBy(IObservable source, Func keySelector, IEqualityComparer comparer); IObservable> GroupBy(IObservable source, Func keySelector); IObservable> GroupBy(IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer); IObservable> GroupBy(IObservable source, Func keySelector, Func elementSelector, int capacity); IObservable> GroupBy(IObservable source, Func keySelector, int capacity, IEqualityComparer comparer); IObservable> GroupBy(IObservable source, Func keySelector, int capacity); IObservable> GroupBy(IObservable source, Func keySelector, Func elementSelector, int capacity, IEqualityComparer comparer); IObservable> GroupByUntil(IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector, IEqualityComparer comparer); IObservable> GroupByUntil(IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector); IObservable> GroupByUntil(IObservable source, Func keySelector, Func, IObservable> durationSelector, IEqualityComparer comparer); IObservable> GroupByUntil(IObservable source, Func keySelector, Func, IObservable> durationSelector); IObservable> GroupByUntil(IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector, int capacity, IEqualityComparer comparer); IObservable> GroupByUntil(IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector, int capacity); IObservable> GroupByUntil(IObservable source, Func keySelector, Func, IObservable> durationSelector, int capacity, IEqualityComparer comparer); IObservable> GroupByUntil(IObservable source, Func keySelector, Func, IObservable> durationSelector, int capacity); IObservable GroupJoin(IObservable left, IObservable right, Func> leftDurationSelector, Func> rightDurationSelector, Func, TResult> resultSelector); IObservable Join(IObservable left, IObservable right, Func> leftDurationSelector, Func> rightDurationSelector, Func resultSelector); IObservable OfType(IObservable source); IObservable Select(IObservable source, Func selector); IObservable Select(IObservable source, Func selector); IObservable SelectMany(IObservable source, IObservable other); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> collectionSelector, Func resultSelector); IObservable SelectMany(IObservable source, Func> collectionSelector, Func resultSelector); IObservable SelectMany(IObservable source, Func> onNext, Func> onError, Func> onCompleted); IObservable SelectMany(IObservable source, Func> onNext, Func> onError, Func> onCompleted); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> collectionSelector, Func resultSelector); IObservable SelectMany(IObservable source, Func> collectionSelector, Func resultSelector); IObservable Skip(IObservable source, int count); IObservable SkipWhile(IObservable source, Func predicate); IObservable SkipWhile(IObservable source, Func predicate); IObservable Take(IObservable source, int count); IObservable Take(IObservable source, int count, IScheduler scheduler); IObservable TakeWhile(IObservable source, Func predicate); IObservable TakeWhile(IObservable source, Func predicate); IObservable Where(IObservable source, Func predicate); IObservable Where(IObservable source, Func predicate); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> selector); IObservable SelectMany(IObservable source, Func> taskSelector, Func resultSelector); IObservable SelectMany(IObservable source, Func> taskSelector, Func resultSelector); IObservable SelectMany(IObservable source, Func> taskSelector, Func resultSelector); IObservable SelectMany(IObservable source, Func> taskSelector, Func resultSelector); #endregion #region * Time * IObservable> Buffer(IObservable source, TimeSpan timeSpan); IObservable> Buffer(IObservable source, TimeSpan timeSpan, IScheduler scheduler); IObservable> Buffer(IObservable source, TimeSpan timeSpan, TimeSpan timeShift); IObservable> Buffer(IObservable source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler); IObservable> Buffer(IObservable source, TimeSpan timeSpan, int count); IObservable> Buffer(IObservable source, TimeSpan timeSpan, int count, IScheduler scheduler); IObservable Delay(IObservable source, TimeSpan dueTime); IObservable Delay(IObservable source, TimeSpan dueTime, IScheduler scheduler); IObservable Delay(IObservable source, DateTimeOffset dueTime); IObservable Delay(IObservable source, DateTimeOffset dueTime, IScheduler scheduler); IObservable Delay(IObservable source, Func> delayDurationSelector); IObservable Delay(IObservable source, IObservable subscriptionDelay, Func> delayDurationSelector); IObservable DelaySubscription(IObservable source, TimeSpan dueTime); IObservable DelaySubscription(IObservable source, TimeSpan dueTime, IScheduler scheduler); IObservable DelaySubscription(IObservable source, DateTimeOffset dueTime); IObservable DelaySubscription(IObservable source, DateTimeOffset dueTime, IScheduler scheduler); IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector); IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector, IScheduler scheduler); IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector); IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector, IScheduler scheduler); IObservable Interval(TimeSpan period); IObservable Interval(TimeSpan period, IScheduler scheduler); IObservable Sample(IObservable source, TimeSpan interval); IObservable Sample(IObservable source, TimeSpan interval, IScheduler scheduler); IObservable Sample(IObservable source, IObservable sampler); IObservable Skip(IObservable source, TimeSpan duration); IObservable Skip(IObservable source, TimeSpan duration, IScheduler scheduler); IObservable SkipLast(IObservable source, TimeSpan duration); IObservable SkipLast(IObservable source, TimeSpan duration, IScheduler scheduler); IObservable SkipUntil(IObservable source, DateTimeOffset startTime); IObservable SkipUntil(IObservable source, DateTimeOffset startTime, IScheduler scheduler); IObservable Take(IObservable source, TimeSpan duration); IObservable Take(IObservable source, TimeSpan duration, IScheduler scheduler); IObservable TakeLast(IObservable source, TimeSpan duration); IObservable TakeLast(IObservable source, TimeSpan duration, IScheduler scheduler); IObservable TakeLast(IObservable source, TimeSpan duration, IScheduler timerScheduler, IScheduler loopScheduler); IObservable> TakeLastBuffer(IObservable source, TimeSpan duration); IObservable> TakeLastBuffer(IObservable source, TimeSpan duration, IScheduler scheduler); IObservable TakeUntil(IObservable source, DateTimeOffset endTime); IObservable TakeUntil(IObservable source, DateTimeOffset endTime, IScheduler scheduler); IObservable Throttle(IObservable source, TimeSpan dueTime); IObservable Throttle(IObservable source, TimeSpan dueTime, IScheduler scheduler); IObservable Throttle(IObservable source, Func> throttleDurationSelector); IObservable> TimeInterval(IObservable source); IObservable> TimeInterval(IObservable source, IScheduler scheduler); IObservable Timeout(IObservable source, TimeSpan dueTime); IObservable Timeout(IObservable source, TimeSpan dueTime, IScheduler scheduler); IObservable Timeout(IObservable source, TimeSpan dueTime, IObservable other); IObservable Timeout(IObservable source, TimeSpan dueTime, IObservable other, IScheduler scheduler); IObservable Timeout(IObservable source, DateTimeOffset dueTime); IObservable Timeout(IObservable source, DateTimeOffset dueTime, IScheduler scheduler); IObservable Timeout(IObservable source, DateTimeOffset dueTime, IObservable other); IObservable Timeout(IObservable source, DateTimeOffset dueTime, IObservable other, IScheduler scheduler); IObservable Timeout(IObservable source, Func> timeoutDurationSelector); IObservable Timeout(IObservable source, Func> timeoutDurationSelector, IObservable other); IObservable Timeout(IObservable source, IObservable firstTimeout, Func> timeoutDurationSelector); IObservable Timeout(IObservable source, IObservable firstTimeout, Func> timeoutDurationSelector, IObservable other); IObservable Timer(TimeSpan dueTime); IObservable Timer(DateTimeOffset dueTime); IObservable Timer(TimeSpan dueTime, TimeSpan period); IObservable Timer(DateTimeOffset dueTime, TimeSpan period); IObservable Timer(TimeSpan dueTime, IScheduler scheduler); IObservable Timer(DateTimeOffset dueTime, IScheduler scheduler); IObservable Timer(TimeSpan dueTime, TimeSpan period, IScheduler scheduler); IObservable Timer(DateTimeOffset dueTime, TimeSpan period, IScheduler scheduler); IObservable> Timestamp(IObservable source); IObservable> Timestamp(IObservable source, IScheduler scheduler); IObservable> Window(IObservable source, TimeSpan timeSpan); IObservable> Window(IObservable source, TimeSpan timeSpan, IScheduler scheduler); IObservable> Window(IObservable source, TimeSpan timeSpan, TimeSpan timeShift); IObservable> Window(IObservable source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler); IObservable> Window(IObservable source, TimeSpan timeSpan, int count); IObservable> Window(IObservable source, TimeSpan timeSpan, int count, IScheduler scheduler); #endregion } }