// 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.Disposables;
using System.Reactive.Joins;
namespace System.Reactive.Linq
{
public static partial class Observable
{
#region And
///
/// Creates a pattern that matches when both observable sequences have an available element.
///
/// The type of the elements in the left sequence.
/// The type of the elements in the right sequence.
/// Observable sequence to match with the right sequence.
/// Observable sequence to match with the left sequence.
/// Pattern object that matches when both observable sequences have an available element.
/// or is null.
public static Pattern And(this IObservable left, IObservable right)
{
if (left == null)
throw new ArgumentNullException("left");
if (right == null)
throw new ArgumentNullException("right");
return s_impl.And(left, right);
}
#endregion
#region Then
///
/// Matches when the observable sequence has an available element and projects the element by invoking the selector function.
///
/// The type of the elements in the source sequence.
/// The type of the elements in the result sequence, returned by the selector function.
/// Observable sequence to apply the selector on.
/// Selector that will be invoked for elements in the source sequence.
/// Plan that produces the projected results, to be fed (with other plans) to the When operator.
/// or is null.
public static Plan Then(this IObservable source, Func selector)
{
if (source == null)
throw new ArgumentNullException("source");
if (selector == null)
throw new ArgumentNullException("selector");
return s_impl.Then(source, selector);
}
#endregion
#region When
///
/// Joins together the results from several patterns.
///
/// The type of the elements in the result sequence, obtained from the specified patterns.
/// A series of plans created by use of the Then operator on patterns.
/// An observable sequence with the results from matching several patterns.
/// is null.
public static IObservable When(params Plan[] plans)
{
if (plans == null)
throw new ArgumentNullException("plans");
return s_impl.When(plans);
}
///
/// Joins together the results from several patterns.
///
/// The type of the elements in the result sequence, obtained from the specified patterns.
/// A series of plans created by use of the Then operator on patterns.
/// An observable sequence with the results form matching several patterns.
/// is null.
public static IObservable When(this IEnumerable> plans)
{
if (plans == null)
throw new ArgumentNullException("plans");
return s_impl.When(plans);
}
#endregion
}
}