public static AsyncObserverExpression <TSource> Then([NotNull] AsyncObserverExpression <TSource> left, [NotNull] AsyncObserverExpression <TSource> right) { if (left == null) { throw new ArgumentNullException("left"); } if (right == null) { throw new ArgumentNullException("right"); } if (left.m_handler != null) { var f = left.m_handler; if (right.m_handler != null) { var g = right.m_handler; return(new AsyncObserverExpression <TSource>((x) => { f(x); g(x); })); } else { var g = right.m_asyncHandler; return(new AsyncObserverExpression <TSource>((x, ct) => { f(x); return g(x, ct); })); } } else { var f = left.m_asyncHandler; if (right.m_asyncHandler != null) { var g = right.m_asyncHandler; return(new AsyncObserverExpression <TSource>(async(x, ct) => { await f(x, ct).ConfigureAwait(false); await g(x, ct).ConfigureAwait(false); })); } else { var g = right.m_handler; return(new AsyncObserverExpression <TSource>(async(x, ct) => { await f(x, ct).ConfigureAwait(false); g(x); })); } } }
public FdbObserverIterator(IFdbAsyncEnumerable <TSource> source, AsyncObserverExpression <TSource> observer) : base(source) { Contract.Requires(observer != null); m_observer = observer; }
public AsyncObserverExpression <TSource> Then([NotNull] AsyncObserverExpression <TSource> expr) { return(Then(this, expr)); }