// 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.Reactive.Concurrency; namespace System.Reactive.Linq { public static partial class Observable { #region + Subscribe + /// /// Subscribes an observer to an enumerable sequence. /// /// The type of the elements in the source sequence. /// Enumerable sequence to subscribe to. /// Observer that will receive notifications from the enumerable sequence. /// Disposable object that can be used to unsubscribe the observer from the enumerable /// or is null. public static IDisposable Subscribe(this IEnumerable source, IObserver observer) { if (source == null) throw new ArgumentNullException("source"); if (observer == null) throw new ArgumentNullException("observer"); return s_impl.Subscribe(source, observer); } /// /// Subscribes an observer to an enumerable sequence, using the specified scheduler to run the enumeration loop. /// /// The type of the elements in the source sequence. /// Enumerable sequence to subscribe to. /// Observer that will receive notifications from the enumerable sequence. /// Scheduler to perform the enumeration on. /// Disposable object that can be used to unsubscribe the observer from the enumerable /// or or is null. public static IDisposable Subscribe(this IEnumerable source, IObserver observer, IScheduler scheduler) { if (source == null) throw new ArgumentNullException("source"); if (observer == null) throw new ArgumentNullException("observer"); if (scheduler == null) throw new ArgumentNullException("scheduler"); return s_impl.Subscribe(source, observer, scheduler); } #endregion #region + ToEnumerable + /// /// Converts an observable sequence to an enumerable sequence. /// /// The type of the elements in the source sequence. /// An observable sequence to convert to an enumerable sequence. /// The enumerable sequence containing the elements in the observable sequence. /// is null. public static IEnumerable ToEnumerable(this IObservable source) { if (source == null) throw new ArgumentNullException("source"); return s_impl.ToEnumerable(source); } #endregion #region ToEvent /// /// Exposes an observable sequence as an object with an Action-based .NET event. /// /// Observable source sequence. /// The event source object. /// is null. public static IEventSource ToEvent(this IObservable source) { if (source == null) throw new ArgumentNullException("source"); return s_impl.ToEvent(source); } /// /// Exposes an observable sequence as an object with an Action<TSource>-based .NET event. /// /// The type of the elements in the source sequence. /// Observable source sequence. /// The event source object. /// is null. public static IEventSource ToEvent(this IObservable source) { if (source == null) throw new ArgumentNullException("source"); return s_impl.ToEvent(source); } #endregion #region ToEventPattern /// /// Exposes an observable sequence as an object with a .NET event, conforming to the standard .NET event pattern. /// /// The type of the event data generated by the event. /// Observable source sequence. /// The event source object. /// is null. public static IEventPatternSource ToEventPattern(this IObservable> source) #if !NO_EVENTARGS_CONSTRAINT where TEventArgs : EventArgs #endif { if (source == null) throw new ArgumentNullException("source"); return s_impl.ToEventPattern(source); } #endregion #region + ToObservable + /// /// Converts an enumerable sequence to an observable sequence. /// /// The type of the elements in the source sequence. /// Enumerable sequence to convert to an observable sequence. /// The observable sequence whose elements are pulled from the given enumerable sequence. /// is null. public static IObservable ToObservable(this IEnumerable source) { if (source == null) throw new ArgumentNullException("source"); return s_impl.ToObservable(source); } /// /// Converts an enumerable sequence to an observable sequence, using the specified scheduler to run the enumeration loop. /// /// The type of the elements in the source sequence. /// Enumerable sequence to convert to an observable sequence. /// Scheduler to run the enumeration of the input sequence on. /// The observable sequence whose elements are pulled from the given enumerable sequence. /// or is null. public static IObservable ToObservable(this IEnumerable source, IScheduler scheduler) { if (source == null) throw new ArgumentNullException("source"); if (scheduler == null) throw new ArgumentNullException("scheduler"); return s_impl.ToObservable(source, scheduler); } #endregion } }