// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. #if HAS_AWAIT using System.Threading; using System.Reactive.Disposables; using System.Reactive.Subjects; namespace System.Reactive.Linq { public static partial class Observable { /// /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. /// This operation subscribes to the observable sequence, making it hot. /// /// The type of the elements in the source sequence. /// Source sequence to await. /// Object that can be awaited. /// is null. public static AsyncSubject GetAwaiter(this IObservable source) { if (source == null) throw new ArgumentNullException("source"); return s_impl.GetAwaiter(source); } /// /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. /// This operation subscribes and connects to the observable sequence, making it hot. /// /// The type of the elements in the source sequence. /// Source sequence to await. /// Object that can be awaited. /// is null. public static AsyncSubject GetAwaiter(this IConnectableObservable source) { if (source == null) throw new ArgumentNullException("source"); return s_impl.GetAwaiter(source); } /// /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. /// This operation subscribes to the observable sequence, making it hot. The supplied CancellationToken can be used to cancel the subscription. /// /// The type of the elements in the source sequence. /// Source sequence to await. /// Cancellation token. /// Object that can be awaited. /// is null. public static AsyncSubject RunAsync(this IObservable source, CancellationToken cancellationToken) { if (source == null) throw new ArgumentNullException("source"); return s_impl.RunAsync(source, cancellationToken); } /// /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. /// This operation subscribes and connects to the observable sequence, making it hot. The supplied CancellationToken can be used to cancel the subscription and connection. /// /// The type of the elements in the source sequence. /// Source sequence to await. /// Cancellation token. /// Object that can be awaited. /// is null. public static AsyncSubject RunAsync(this IConnectableObservable source, CancellationToken cancellationToken) { if (source == null) throw new ArgumentNullException("source"); return s_impl.RunAsync(source, cancellationToken); } } } #endif