/** * Copies the siblings of the given {@code channel} into this instance. */ private void adoptSiblings(Channel channel) { for (Channel newSibling : channel.siblings) { this.addSibling(newSibling); } channel.removeSiblings(); }
@Override public Channel convert(Channel sourceChannel, Configuration configuration, Collection<OptimizationContext> optimizationContexts, CardinalityEstimate optCardinality) { // Create the ExecutionOperator. final ExecutionOperator executionOperator = this.executionOperatorFactory.apply(sourceChannel, configuration); assert executionOperator.getNumInputs() <= 1 && executionOperator.getNumOutputs() <= 1; executionOperator.setAuxiliary(true); // Set up the Channels and the ExecutionTask. final ExecutionTask task = new ExecutionTask(executionOperator, 1, 1); sourceChannel.addConsumer(task, 0); final Channel outputChannel = task.initializeOutputChannel(0, configuration); sourceChannel.addSibling(outputChannel); setCardinalityAndTimeEstimates(sourceChannel, optimizationContexts, optCardinality, task); return outputChannel; }