/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="predicate"></param> /// <typeparam name="TPayload"></typeparam> /// <returns></returns> public static BStreamable <TPayload> Where <TPayload>( this BStreamable <TPayload> source, Expression <Func <TPayload, bool> > predicate) { Invariant.IsNotNull(source, nameof(source)); Invariant.IsNotNull(predicate, nameof(predicate)); return(new WhereBStream <TPayload>(source, predicate.Compile())); }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="window"></param> /// <param name="offset"></param> /// <typeparam name="TPayload"></typeparam> /// <returns></returns> public static TumblingWindowBStream <TPayload> TumblingWindowLifetime <TPayload>( this BStreamable <TPayload> source, long window, long offset = 0 ) { Invariant.IsNotNull(source, nameof(source)); return(new TumblingWindowBStream <TPayload>(source, window, offset)); }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="selector"></param> /// <typeparam name="TPayload"></typeparam> /// <typeparam name="TResult"></typeparam> /// <returns></returns> public static BStreamable <TResult> Multicast <TPayload, TResult>( this BStreamable <TPayload> source, Func <BStreamable <TPayload>, BStreamable <TResult> > selector ) { Invariant.IsNotNull(source, nameof(source)); Invariant.IsNotNull(selector, nameof(selector)); return(selector(source)); }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="selector"></param> /// <typeparam name="TPayload"></typeparam> /// <typeparam name="TResult"></typeparam> /// <returns></returns> public static BStreamable <TResult> Select <TPayload, TResult>( this BStreamable <TPayload> source, Expression <Func <TPayload, TResult> > selector ) { Invariant.IsNotNull(source, nameof(source)); Invariant.IsNotNull(selector, nameof(selector)); return(new SelectBStream <TPayload, TResult>(source, selector.Compile())); }
/// <summary> /// /// </summary> /// <param name="left"></param> /// <param name="right"></param> /// <param name="resultSelector"></param> /// <typeparam name="TLeft"></typeparam> /// <typeparam name="TRight"></typeparam> /// <typeparam name="TResult"></typeparam> /// <returns></returns> public static BStreamable <TResult> Join <TLeft, TRight, TResult>( this BStreamable <TLeft> left, BStreamable <TRight> right, Func <TLeft, TRight, TResult> resultSelector ) { Invariant.IsNotNull(left, nameof(left)); Invariant.IsNotNull(right, nameof(right)); return(new JoinBStream <TLeft, TRight, TResult>(left, right, resultSelector)); }
/// <summary> /// /// </summary> public WhereBStream(BStreamable <TPayload> stream, Func <TPayload, bool> filter) : base(stream, stream.Period, stream.Offset) { Filter = filter; }
/// <summary> /// /// </summary> public TumblingWindowBStream(BStreamable <TPayload> stream, long window, long offset) : base(stream, window, offset) { Window = window; }
/// <summary> /// /// </summary> public UnaryBStream(BStreamable <TInput> stream, long period, long offset) : base(period, offset) { Stream = stream; }
/// <summary> /// /// </summary> /// <param name="left"></param> /// <param name="right"></param> /// <param name="joiner"></param> public JoinBStream(BStreamable <TLeft> left, BStreamable <TRight> right, Func <TLeft, TRight, TResult> joiner) : base(left, right, left.Period, left.Offset) { Joiner = joiner; }
/// <summary> /// /// </summary> public SelectBStream(BStreamable <TInput> stream, Func <TInput, TOutput> select) : base(stream, stream.Period, stream.Offset) { Select = select; }
/// <summary> /// /// </summary> public BinaryBStream(BStreamable <TLeft> left, BStreamable <TRight> right, long period, long offset) : base(period, offset) { Left = left; Right = right; }