Beispiel #1
0
        protected override IStream <Correlated <TOut> > CreateOutputStream(WithPreviousCorrelatedArgs <TIn, TOut> args)
        {
            var obs = args.Stream.Observable
                      .Scan <Correlated <TIn>, (FixedQueue <Correlated <TIn> > Queue, TIn[] Items, HashSet <Guid> CorrelationKeys)>((new FixedQueue <Correlated <TIn> >(args.Count), new TIn[] { }, new HashSet <Guid>()), (a, v) =>
            {
                a.Queue.Enqueue(v);
                return(
                    a.Queue,
                    a.Queue.ToArray().Reverse().Select(i => i.Row).ToArray(),
                    a.Queue.ToArray().SelectMany(i => i.CorrelationKeys).ToHashSet());
            })
                      .Map(i => new Correlated <TOut>
            {
                Row             = args.GetResult(i.Items),
                CorrelationKeys = i.CorrelationKeys
            });

            return(base.CreateUnsortedStream(obs));
        }
Beispiel #2
0
 public WithPreviousCorrelatedStreamNode(string name, WithPreviousCorrelatedArgs <TIn, TOut> args) : base(name, args)
 {
 }