Exemplo n.º 1
0
        public LeftAntiSemiJoinPipe(LeftAntiSemiJoinStreamable <TKey, TLeft, TRight> stream, IStreamObserver <TKey, TLeft> observer)
            : base(stream, observer)
        {
            this.keyComparer       = stream.Properties.KeyEqualityComparer.GetEqualsExpr();
            this.keyComparerEquals = this.keyComparer.Compile();

            this.leftComparer       = stream.LeftComparer.GetEqualsExpr();
            this.leftComparerEquals = this.leftComparer.Compile();

            if (stream.Left.Properties.IsConstantDuration)
            {
                this.leftEndPointHeap = new EndPointQueue();
            }
            else
            {
                this.leftEndPointHeap = new EndPointHeap();
            }
            if (stream.Right.Properties.IsConstantDuration)
            {
                this.rightEndPointHeap = new EndPointQueue();
            }
            else
            {
                this.rightEndPointHeap = new EndPointHeap();
            }

            this.pool = MemoryManager.GetMemoryPool <TKey, TLeft>(stream.Properties.IsColumnar);
            this.pool.Get(out this.output);
            this.output.Allocate();
        }
Exemplo n.º 2
0
        public FixedIntervalEquiJoinPipe(
            BinaryStreamable <TKey, TLeft, TRight, TResult> stream,
            Expression <Func <TLeft, TRight, TResult> > selector,
            IStreamObserver <TKey, TResult> observer)
            : base(stream, observer)
        {
            this.selector      = selector.Compile();
            this.leftDuration  = stream.Left.Properties.ConstantDurationLength.Value;
            this.rightDuration = stream.Right.Properties.ConstantDurationLength.Value;

            this.keyComparer       = stream.Properties.KeyEqualityComparer.GetEqualsExpr();
            this.keyComparerEquals = this.keyComparer.Compile();

            if (this.leftDuration == this.rightDuration)
            {
                this.endPointHeap = new EndPointQueue();
            }
            else
            {
                this.endPointHeap = new EndPointHeap();
            }

            this.pool = MemoryManager.GetMemoryPool <TKey, TResult>(stream.Properties.IsColumnar);
            this.pool.Get(out this.output);
            this.output.Allocate();
        }
Exemplo n.º 3
0
 public PartitionEntry(PartitionedLeftAntiSemiJoinPipe <TKey, TLeft, TRight, TPartitionKey> parent)
 {
     this.leftEndPointHeap  = parent.leftEndPointGenerator();
     this.rightEndPointHeap = parent.rightEndPointGenerator();
 }
Exemplo n.º 4
0
 public PartitionEntry(PartitionedEquiJoinPipeSimple <TLeft, TRight, TResult, TPartitionKey> parent, TPartitionKey key)
 {
     this.endPointHeap = parent.endpointGenerator();
     this.key          = key;
 }