// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. using System.Collections.Generic; using System.Linq; using System.Reactive.Concurrency; using System.Reactive.Joins; using System.Reactive.Subjects; using System.Threading; #if !NO_REMOTING #endif #if !NO_TPL using System.Threading.Tasks; #endif namespace System.Reactive.Linq { /// /// Internal interface describing the LINQ to Events query language. /// internal 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); IObservable> ToDictionary(IObservable source, Func keySelector, Func elementSelector); IObservable> ToDictionary(IObservable source, Func keySelector, IEqualityComparer comparer); IObservable> ToDictionary(IObservable source, Func keySelector); 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); #if !NO_LARGEARITY 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); #endif Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); Func> FromAsyncPattern(Func begin, Action end); #if !NO_LARGEARITY 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); #endif IObservable Start(Func function); IObservable Start(Func function, IScheduler scheduler); #if !NO_TPL IObservable StartAsync(Func> functionAsync); IObservable StartAsync(Func> functionAsync); #endif IObservable Start(Action action); IObservable Start(Action action, IScheduler scheduler); #if !NO_TPL IObservable StartAsync(Func actionAsync); IObservable StartAsync(Func actionAsync); #endif #if !NO_TPL IObservable FromAsync(Func> functionAsync); IObservable FromAsync(Func> functionAsync); IObservable FromAsync(Func actionAsync); IObservable FromAsync(Func actionAsync); #endif 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); #if !NO_LARGEARITY 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); #endif 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); #if !NO_LARGEARITY 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); #endif #endregion #region * Awaiter * #if HAS_AWAIT AsyncSubject GetAwaiter(IObservable source); AsyncSubject GetAwaiter(IConnectableObservable source); AsyncSubject RunAsync(IObservable source, CancellationToken cancellationToken); AsyncSubject RunAsync(IConnectableObservable source, CancellationToken cancellationToken); #endif #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); 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); #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); TSource FirstOrDefault(IObservable source); 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); TSource LastOrDefault(IObservable source); TSource LastOrDefault(IObservable source, Func predicate); IEnumerable Latest(IObservable source); IEnumerable MostRecent(IObservable source, TSource initialValue); IEnumerable Next(IObservable source); TSource Single(IObservable source); TSource SingleOrDefault(IObservable source, Func predicate); TSource SingleOrDefault(IObservable source); TSource Single(IObservable source, Func predicate); TSource Wait(IObservable source); #endregion #region * Concurrency * IObservable ObserveOn(IObservable source, IScheduler scheduler); #if !NO_SYNCCTX IObservable ObserveOn(IObservable source, SynchronizationContext context); #endif IObservable SubscribeOn(IObservable source, IScheduler scheduler); #if !NO_SYNCCTX IObservable SubscribeOn(IObservable source, SynchronizationContext context); #endif 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); #if !NO_EVENTARGS_CONSTRAINT IEventPatternSource ToEventPattern(IObservable> source) where TEventArgs : EventArgs; #else IEventPatternSource ToEventPattern(IObservable> source); #endif IObservable ToObservable(IEnumerable source); IObservable ToObservable(IEnumerable source, IScheduler scheduler); #endregion #region * Creation * IObservable Create(Func, IDisposable> subscribe); IObservable Create(Func, Action> subscribe); #if !NO_TPL 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); #endif IObservable Defer(Func> observableFactory); #if !NO_TPL IObservable Defer(Func>> observableFactoryAsync); IObservable Defer(Func>> observableFactoryAsync); #endif 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; #if !NO_TPL IObservable Using(Func> resourceFactoryAsync, Func>> observableFactoryAsync) where TResource : IDisposable; #endif #endregion #region * Events * #if !NO_EVENTARGS_CONSTRAINT IObservable> FromEventPattern(Action addHandler, Action removeHandler); IObservable> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler); IObservable> FromEventPattern(Action addHandler, Action removeHandler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Func, TDelegate> conversion, Action addHandler, Action removeHandler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Func, TDelegate> conversion, Action addHandler, Action removeHandler, IScheduler scheduler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Action> addHandler, Action> removeHandler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Action> addHandler, Action> removeHandler, IScheduler scheduler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Action addHandler, Action removeHandler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler) where TEventArgs : EventArgs; IObservable> FromEventPattern(object target, string eventName); IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler); IObservable> FromEventPattern(object target, string eventName) where TEventArgs : EventArgs; IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs; IObservable> FromEventPattern(object target, string eventName) where TEventArgs : EventArgs; IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Type type, string eventName); IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler); IObservable> FromEventPattern(Type type, string eventName) where TEventArgs : EventArgs; IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs; IObservable> FromEventPattern(Type type, string eventName) where TEventArgs : EventArgs; IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler) where TEventArgs : EventArgs; #else 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); IObservable> FromEventPattern(object target, string eventName); IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler); IObservable> FromEventPattern(object target, string eventName); IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler); IObservable> FromEventPattern(object target, string eventName); IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler); IObservable> FromEventPattern(Type type, string eventName); IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler); IObservable> FromEventPattern(Type type, string eventName); IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler); IObservable> FromEventPattern(Type type, string eventName); IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler); #endif 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 * #if !NO_TPL 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); #endif IObservable Case(Func selector, IDictionary> sources, IObservable defaultSource); IObservable Case(Func selector, IDictionary> sources, IScheduler scheduler); IObservable Case(Func selector, IDictionary> sources); 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); IObservable CombineLatest(IObservable first, IObservable second, Func resultSelector); #if !NO_PERF IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, Func resultSelector); #if !NO_LARGEARITY IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, Func resultSelector); IObservable CombineLatest(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, IObservable source16, Func resultSelector); #endif #endif 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> Window(IObservable source, Func> windowClosingSelector); IObservable> Window(IObservable source, IObservable windowOpenings, Func> windowClosingSelector); IObservable> Window(IObservable source, IObservable windowBoundaries); IObservable Zip(IObservable first, IObservable second, Func resultSelector); IObservable Zip(IEnumerable> sources, Func, TResult> resultSelector); IObservable> Zip(IEnumerable> sources); IObservable> Zip(params IObservable[] sources); #if !NO_PERF IObservable Zip(IObservable source1, IObservable source2, IObservable source3, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, Func resultSelector); #if !NO_LARGEARITY IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, Func resultSelector); IObservable Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, IObservable source16, Func resultSelector); #endif #endif IObservable Zip(IObservable first, IEnumerable second, Func resultSelector); #if !NO_TPL IObservable Concat(IObservable> sources); IObservable Merge(IObservable> sources); IObservable Switch(IObservable> sources); #endif #endregion #region * Single * IObservable AsObservable(IObservable source); IObservable> Buffer(IObservable source, int count); IObservable> Buffer(IObservable source, int count, int skip); 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 Repeat(IObservable source); IObservable Repeat(IObservable source, int repeatCount); IObservable Retry(IObservable source); IObservable Retry(IObservable source, int retryCount); 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 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); #if !NO_TPL 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); #endif #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 } }