/// <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));
        }
Ejemplo n.º 6
0
 /// <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;
 }
Ejemplo n.º 8
0
 /// <summary>
 ///
 /// </summary>
 public UnaryBStream(BStreamable <TInput> stream, long period, long offset) : base(period, offset)
 {
     Stream = stream;
 }
Ejemplo n.º 9
0
 /// <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;
 }
Ejemplo n.º 10
0
 /// <summary>
 ///
 /// </summary>
 public SelectBStream(BStreamable <TInput> stream, Func <TInput, TOutput> select)
     : base(stream, stream.Period, stream.Offset)
 {
     Select = select;
 }
Ejemplo n.º 11
0
 /// <summary>
 ///
 /// </summary>
 public BinaryBStream(BStreamable <TLeft> left, BStreamable <TRight> right, long period, long offset)
     : base(period, offset)
 {
     Left  = left;
     Right = right;
 }