Search in sources :

Example 1 with Processor

use of org.ballerinalang.siddhi.core.query.processor.Processor in project ballerina by ballerina-lang.

the class JoinInputStreamParser method insertJoinProcessorsAndGetFindable.

private static FindableProcessor insertJoinProcessorsAndGetFindable(JoinProcessor preJoinProcessor, JoinProcessor postJoinProcessor, SingleStreamRuntime streamRuntime, SiddhiAppContext siddhiAppContext, boolean outputExpectsExpiredEvents, String queryName, InputStream inputStream) {
    Processor lastProcessor = streamRuntime.getProcessorChain();
    Processor prevLastProcessor = null;
    if (lastProcessor != null) {
        while (lastProcessor.getNextProcessor() != null) {
            prevLastProcessor = lastProcessor;
            lastProcessor = lastProcessor.getNextProcessor();
        }
    }
    if (lastProcessor == null) {
        try {
            WindowProcessor windowProcessor = new LengthWindowProcessor();
            ExpressionExecutor[] expressionExecutors = new ExpressionExecutor[1];
            expressionExecutors[0] = new ConstantExpressionExecutor(0, Attribute.Type.INT);
            ConfigReader configReader = siddhiAppContext.getSiddhiContext().getConfigManager().generateConfigReader("", "length");
            windowProcessor.initProcessor(((MetaStreamEvent) streamRuntime.getMetaComplexEvent()).getLastInputDefinition(), expressionExecutors, configReader, siddhiAppContext, outputExpectsExpiredEvents, queryName, inputStream);
            lastProcessor = windowProcessor;
        } catch (Throwable t) {
            throw new SiddhiAppCreationException(t);
        }
    }
    if (lastProcessor instanceof FindableProcessor) {
        if (prevLastProcessor != null) {
            prevLastProcessor.setNextProcessor(preJoinProcessor);
        } else {
            streamRuntime.setProcessorChain(preJoinProcessor);
        }
        preJoinProcessor.setNextProcessor(lastProcessor);
        lastProcessor.setNextProcessor(postJoinProcessor);
        return (FindableProcessor) lastProcessor;
    } else {
        throw new OperationNotSupportedException("Stream " + ((MetaStreamEvent) streamRuntime.getMetaComplexEvent()).getLastInputDefinition().getId() + "'s last processor " + lastProcessor.getClass().getCanonicalName() + " is not an instance of " + FindableProcessor.class.getCanonicalName() + " hence join cannot be proceed");
    }
}
Also used : OperationNotSupportedException(org.ballerinalang.siddhi.core.exception.OperationNotSupportedException) LengthWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.LengthWindowProcessor) FindableProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.FindableProcessor) Processor(org.ballerinalang.siddhi.core.query.processor.Processor) LengthWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.LengthWindowProcessor) AggregateWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.AggregateWindowProcessor) JoinProcessor(org.ballerinalang.siddhi.core.query.input.stream.join.JoinProcessor) FindableProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.FindableProcessor) WindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.WindowProcessor) TableWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.TableWindowProcessor) WindowWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.WindowWindowProcessor) ConstantExpressionExecutor(org.ballerinalang.siddhi.core.executor.ConstantExpressionExecutor) ExpressionExecutor(org.ballerinalang.siddhi.core.executor.ExpressionExecutor) VariableExpressionExecutor(org.ballerinalang.siddhi.core.executor.VariableExpressionExecutor) SiddhiAppCreationException(org.ballerinalang.siddhi.core.exception.SiddhiAppCreationException) ConfigReader(org.ballerinalang.siddhi.core.util.config.ConfigReader) LengthWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.LengthWindowProcessor) AggregateWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.AggregateWindowProcessor) WindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.WindowProcessor) TableWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.TableWindowProcessor) WindowWindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.WindowWindowProcessor) MetaStreamEvent(org.ballerinalang.siddhi.core.event.stream.MetaStreamEvent) ConstantExpressionExecutor(org.ballerinalang.siddhi.core.executor.ConstantExpressionExecutor)

Example 2 with Processor

use of org.ballerinalang.siddhi.core.query.processor.Processor in project ballerina by ballerina-lang.

the class QueryParserHelper method initSingleStreamRuntime.

private static void initSingleStreamRuntime(SingleStreamRuntime singleStreamRuntime, int streamEventChainIndex, MetaComplexEvent metaComplexEvent, StateEventPool stateEventPool, LockWrapper lockWrapper, String queryName) {
    MetaStreamEvent metaStreamEvent;
    if (metaComplexEvent instanceof MetaStateEvent) {
        metaStreamEvent = ((MetaStateEvent) metaComplexEvent).getMetaStreamEvent(streamEventChainIndex);
    } else {
        metaStreamEvent = (MetaStreamEvent) metaComplexEvent;
    }
    StreamEventPool streamEventPool = new StreamEventPool(metaStreamEvent, 5);
    ProcessStreamReceiver processStreamReceiver = singleStreamRuntime.getProcessStreamReceiver();
    processStreamReceiver.setMetaStreamEvent(metaStreamEvent);
    processStreamReceiver.setStreamEventPool(streamEventPool);
    processStreamReceiver.setLockWrapper(lockWrapper);
    processStreamReceiver.init();
    Processor processor = singleStreamRuntime.getProcessorChain();
    while (processor != null) {
        if (processor instanceof SchedulingProcessor) {
            ((SchedulingProcessor) processor).getScheduler().setStreamEventPool(streamEventPool);
            ((SchedulingProcessor) processor).getScheduler().init(lockWrapper, queryName);
        }
        if (processor instanceof AbstractStreamProcessor) {
            ((AbstractStreamProcessor) processor).setStreamEventCloner(new StreamEventCloner(metaStreamEvent, streamEventPool));
            ((AbstractStreamProcessor) processor).constructStreamEventPopulater(metaStreamEvent, streamEventChainIndex);
        }
        if (stateEventPool != null && processor instanceof JoinProcessor) {
            if (((JoinProcessor) processor).getCompiledCondition() instanceof IncrementalAggregateCompileCondition) {
                IncrementalAggregateCompileCondition compiledCondition = (IncrementalAggregateCompileCondition) ((JoinProcessor) processor).getCompiledCondition();
                ComplexEventPopulater complexEventPopulater = StreamEventPopulaterFactory.constructEventPopulator(metaStreamEvent, 0, compiledCondition.getAdditionalAttributes());
                compiledCondition.setComplexEventPopulater(complexEventPopulater);
            }
            ((JoinProcessor) processor).setStateEventPool(stateEventPool);
            ((JoinProcessor) processor).setJoinLock(lockWrapper);
        }
        if (stateEventPool != null && processor instanceof StreamPreStateProcessor) {
            ((StreamPreStateProcessor) processor).setStateEventPool(stateEventPool);
            ((StreamPreStateProcessor) processor).setStreamEventPool(streamEventPool);
            ((StreamPreStateProcessor) processor).setStreamEventCloner(new StreamEventCloner(metaStreamEvent, streamEventPool));
            if (metaComplexEvent instanceof MetaStateEvent) {
                ((StreamPreStateProcessor) processor).setStateEventCloner(new StateEventCloner(((MetaStateEvent) metaComplexEvent), stateEventPool));
            }
        }
        processor = processor.getNextProcessor();
    }
}
Also used : ProcessStreamReceiver(org.ballerinalang.siddhi.core.query.input.ProcessStreamReceiver) Processor(org.ballerinalang.siddhi.core.query.processor.Processor) StreamPreStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.StreamPreStateProcessor) JoinProcessor(org.ballerinalang.siddhi.core.query.input.stream.join.JoinProcessor) AbstractStreamProcessor(org.ballerinalang.siddhi.core.query.processor.stream.AbstractStreamProcessor) SchedulingProcessor(org.ballerinalang.siddhi.core.query.processor.SchedulingProcessor) AbstractStreamProcessor(org.ballerinalang.siddhi.core.query.processor.stream.AbstractStreamProcessor) IncrementalAggregateCompileCondition(org.ballerinalang.siddhi.core.util.collection.operator.IncrementalAggregateCompileCondition) ComplexEventPopulater(org.ballerinalang.siddhi.core.event.stream.populater.ComplexEventPopulater) StreamPreStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.StreamPreStateProcessor) MetaStateEvent(org.ballerinalang.siddhi.core.event.state.MetaStateEvent) SchedulingProcessor(org.ballerinalang.siddhi.core.query.processor.SchedulingProcessor) StreamEventPool(org.ballerinalang.siddhi.core.event.stream.StreamEventPool) StreamEventCloner(org.ballerinalang.siddhi.core.event.stream.StreamEventCloner) JoinProcessor(org.ballerinalang.siddhi.core.query.input.stream.join.JoinProcessor) StateEventCloner(org.ballerinalang.siddhi.core.event.state.StateEventCloner) MetaStreamEvent(org.ballerinalang.siddhi.core.event.stream.MetaStreamEvent)

Example 3 with Processor

use of org.ballerinalang.siddhi.core.query.processor.Processor in project ballerina by ballerina-lang.

the class JoinStreamRuntime method clone.

@Override
public StreamRuntime clone(String key) {
    JoinStreamRuntime joinStreamRuntime = new JoinStreamRuntime(siddhiAppContext, metaStateEvent);
    for (SingleStreamRuntime singleStreamRuntime : singleStreamRuntimeList) {
        joinStreamRuntime.addRuntime((SingleStreamRuntime) singleStreamRuntime.clone(key));
    }
    SingleStreamRuntime leftSingleStreamRuntime = joinStreamRuntime.getSingleStreamRuntimes().get(0);
    SingleStreamRuntime rightSingleStreamRuntime = joinStreamRuntime.getSingleStreamRuntimes().get(1);
    Processor lastLeftProcessor = leftSingleStreamRuntime.getProcessorChain();
    while (!(lastLeftProcessor instanceof JoinProcessor)) {
        lastLeftProcessor = lastLeftProcessor.getNextProcessor();
    }
    JoinProcessor leftPreJoinProcessor = (JoinProcessor) lastLeftProcessor;
    WindowProcessor leftWindowProcessor = (WindowProcessor) leftPreJoinProcessor.getNextProcessor();
    JoinProcessor leftPostJoinProcessor = (JoinProcessor) leftWindowProcessor.getNextProcessor();
    Processor lastRightProcessor = rightSingleStreamRuntime.getProcessorChain();
    while (!(lastRightProcessor instanceof JoinProcessor)) {
        lastRightProcessor = lastRightProcessor.getNextProcessor();
    }
    JoinProcessor rightPreJoinProcessor = (JoinProcessor) lastRightProcessor;
    WindowProcessor rightWindowProcessor = (WindowProcessor) rightPreJoinProcessor.getNextProcessor();
    JoinProcessor rightPostJoinProcessor = (JoinProcessor) rightWindowProcessor.getNextProcessor();
    rightPostJoinProcessor.setFindableProcessor((FindableProcessor) leftWindowProcessor);
    rightPreJoinProcessor.setFindableProcessor((FindableProcessor) leftWindowProcessor);
    leftPreJoinProcessor.setFindableProcessor((FindableProcessor) rightWindowProcessor);
    leftPostJoinProcessor.setFindableProcessor((FindableProcessor) rightWindowProcessor);
    return joinStreamRuntime;
}
Also used : Processor(org.ballerinalang.siddhi.core.query.processor.Processor) FindableProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.FindableProcessor) WindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.WindowProcessor) SingleStreamRuntime(org.ballerinalang.siddhi.core.query.input.stream.single.SingleStreamRuntime) WindowProcessor(org.ballerinalang.siddhi.core.query.processor.stream.window.WindowProcessor)

Example 4 with Processor

use of org.ballerinalang.siddhi.core.query.processor.Processor in project ballerina by ballerina-lang.

the class SingleStreamRuntime method clone.

@Override
public StreamRuntime clone(String key) {
    ProcessStreamReceiver clonedProcessStreamReceiver = this.processStreamReceiver.clone(key);
    EntryValveProcessor entryValveProcessor = null;
    SchedulingProcessor schedulingProcessor;
    Processor clonedProcessorChain = null;
    if (processorChain != null) {
        if (!(processorChain instanceof QuerySelector || processorChain instanceof OutputRateLimiter)) {
            clonedProcessorChain = processorChain.cloneProcessor(key);
            if (clonedProcessorChain instanceof EntryValveProcessor) {
                entryValveProcessor = (EntryValveProcessor) clonedProcessorChain;
            }
        }
        Processor processor = processorChain.getNextProcessor();
        while (processor != null) {
            if (!(processor instanceof QuerySelector || processor instanceof OutputRateLimiter)) {
                Processor clonedProcessor = processor.cloneProcessor(key);
                clonedProcessorChain.setToLast(clonedProcessor);
                if (clonedProcessor instanceof EntryValveProcessor) {
                    entryValveProcessor = (EntryValveProcessor) clonedProcessor;
                } else if (clonedProcessor instanceof SchedulingProcessor) {
                    schedulingProcessor = (SchedulingProcessor) clonedProcessor;
                    schedulingProcessor.setScheduler(((SchedulingProcessor) processor).getScheduler().clone(key, entryValveProcessor));
                }
            }
            processor = processor.getNextProcessor();
        }
    }
    return new SingleStreamRuntime(clonedProcessStreamReceiver, clonedProcessorChain, metaComplexEvent);
}
Also used : ProcessStreamReceiver(org.ballerinalang.siddhi.core.query.input.ProcessStreamReceiver) SchedulingProcessor(org.ballerinalang.siddhi.core.query.processor.SchedulingProcessor) Processor(org.ballerinalang.siddhi.core.query.processor.Processor) SchedulingProcessor(org.ballerinalang.siddhi.core.query.processor.SchedulingProcessor) OutputRateLimiter(org.ballerinalang.siddhi.core.query.output.ratelimit.OutputRateLimiter) QuerySelector(org.ballerinalang.siddhi.core.query.selector.QuerySelector)

Example 5 with Processor

use of org.ballerinalang.siddhi.core.query.processor.Processor in project ballerina by ballerina-lang.

the class StreamInnerStateRuntime method clone.

@Override
public InnerStateRuntime clone(String key) {
    StreamInnerStateRuntime streamInnerStateRuntime = new StreamInnerStateRuntime(stateType);
    for (SingleStreamRuntime singleStreamRuntime : singleStreamRuntimeList) {
        streamInnerStateRuntime.singleStreamRuntimeList.add((SingleStreamRuntime) singleStreamRuntime.clone(key));
    }
    Processor processor = streamInnerStateRuntime.singleStreamRuntimeList.get(0).getProcessorChain();
    streamInnerStateRuntime.firstProcessor = (StreamPreStateProcessor) processor;
    while (processor != null) {
        if (processor instanceof StreamPostStateProcessor) {
            streamInnerStateRuntime.lastProcessor = (StreamPostStateProcessor) processor;
            break;
        } else {
            processor = processor.getNextProcessor();
        }
    }
    ((StreamPostStateProcessor) streamInnerStateRuntime.lastProcessor).setThisStatePreProcessor((StreamPreStateProcessor) streamInnerStateRuntime.firstProcessor);
    ((StreamPreStateProcessor) streamInnerStateRuntime.firstProcessor).setThisStatePostProcessor((StreamPostStateProcessor) streamInnerStateRuntime.lastProcessor);
    ((StreamPreStateProcessor) streamInnerStateRuntime.firstProcessor).setThisLastProcessor((StreamPostStateProcessor) streamInnerStateRuntime.lastProcessor);
    return streamInnerStateRuntime;
}
Also used : Processor(org.ballerinalang.siddhi.core.query.processor.Processor) StreamPostStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.StreamPostStateProcessor) StreamPreStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.StreamPreStateProcessor) PostStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.PostStateProcessor) PreStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.PreStateProcessor) StreamPostStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.StreamPostStateProcessor) SingleStreamRuntime(org.ballerinalang.siddhi.core.query.input.stream.single.SingleStreamRuntime) StreamPreStateProcessor(org.ballerinalang.siddhi.core.query.input.stream.state.StreamPreStateProcessor)

Aggregations

Processor (org.ballerinalang.siddhi.core.query.processor.Processor)6 MetaStreamEvent (org.ballerinalang.siddhi.core.event.stream.MetaStreamEvent)3 SingleStreamRuntime (org.ballerinalang.siddhi.core.query.input.stream.single.SingleStreamRuntime)3 SchedulingProcessor (org.ballerinalang.siddhi.core.query.processor.SchedulingProcessor)3 WindowProcessor (org.ballerinalang.siddhi.core.query.processor.stream.window.WindowProcessor)3 MetaStateEvent (org.ballerinalang.siddhi.core.event.state.MetaStateEvent)2 OperationNotSupportedException (org.ballerinalang.siddhi.core.exception.OperationNotSupportedException)2 ProcessStreamReceiver (org.ballerinalang.siddhi.core.query.input.ProcessStreamReceiver)2 JoinProcessor (org.ballerinalang.siddhi.core.query.input.stream.join.JoinProcessor)2 StreamPreStateProcessor (org.ballerinalang.siddhi.core.query.input.stream.state.StreamPreStateProcessor)2 AbstractStreamProcessor (org.ballerinalang.siddhi.core.query.processor.stream.AbstractStreamProcessor)2 FindableProcessor (org.ballerinalang.siddhi.core.query.processor.stream.window.FindableProcessor)2 StateEventCloner (org.ballerinalang.siddhi.core.event.state.StateEventCloner)1 StreamEventCloner (org.ballerinalang.siddhi.core.event.stream.StreamEventCloner)1 StreamEventPool (org.ballerinalang.siddhi.core.event.stream.StreamEventPool)1 ComplexEventPopulater (org.ballerinalang.siddhi.core.event.stream.populater.ComplexEventPopulater)1 SiddhiAppCreationException (org.ballerinalang.siddhi.core.exception.SiddhiAppCreationException)1 ConstantExpressionExecutor (org.ballerinalang.siddhi.core.executor.ConstantExpressionExecutor)1 ExpressionExecutor (org.ballerinalang.siddhi.core.executor.ExpressionExecutor)1 VariableExpressionExecutor (org.ballerinalang.siddhi.core.executor.VariableExpressionExecutor)1