public OutputProcessViewConditionDefault( ResultSetProcessor resultSetProcessor, long? afterConditionTime, int? afterConditionNumberOfEvents, bool afterConditionSatisfied, OutputProcessViewConditionFactory parent, AgentInstanceContext agentInstanceContext, bool isJoin, EventType[] eventTypes) : base( agentInstanceContext, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, afterConditionSatisfied) { _parent = parent; var outputCallback = GetCallbackToLocal(parent.StreamCount); _outputCondition = parent.OutputConditionFactory.InstantiateOutputCondition(agentInstanceContext, outputCallback); OptionalDeltaSet = agentInstanceContext.ResultSetProcessorHelperFactory.MakeOutputConditionChangeSet( eventTypes, agentInstanceContext); }
public EPPreparedQueryResult Execute( FAFQueryMethodSelect select, ContextPartitionSelector[] contextPartitionSelectors, FAFQueryMethodAssignerSetter assignerSetter, ContextManagementService contextManagementService) { FireAndForgetProcessor processor = select.Processors[0]; FireAndForgetInstance processorInstance = processor.ProcessorInstanceNoContext; ICollection<EventBean> events; AgentInstanceContext agentInstanceContext = null; if (processorInstance == null) { events = EmptyList<EventBean>.Instance; } else { agentInstanceContext = processorInstance.AgentInstanceContext; events = Snapshot(select.ConsumerFilters[0], processorInstance, select.QueryGraph, select.Annotations); } // get RSP ResultSetProcessor resultSetProcessor = ProcessorWithAssign( select.ResultSetProcessorFactoryProvider, agentInstanceContext, assignerSetter, select.TableAccesses, select.Subselects); if (select.WhereClause != null) { events = Filtered(events, select.WhereClause, agentInstanceContext); } return ProcessedNonJoin(resultSetProcessor, events, select.DistinctKeyGetter); }
/// <summary>The Update method is called if the view does not participate in a join. </summary> /// <param name="newData">new events</param> /// <param name="oldData">old events</param> public override void Update(EventBean[] newData, EventBean[] oldData) { if ((ExecutionPathDebugLog.IsEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".Update Received Update, " + " newData.Length==" + ((newData == null) ? 0 : newData.Length) + " oldData.Length==" + ((oldData == null) ? 0 : oldData.Length)); } ResultSetProcessor.ApplyViewResult(newData, oldData); if (!CheckAfterCondition(newData, _parent.StatementContext)) { return; } // add the incoming events to the event batches int newDataLength = 0; int oldDataLength = 0; if (newData != null) { newDataLength = newData.Length; } if (oldData != null) { oldDataLength = oldData.Length; } _outputCondition.UpdateOutputCondition(newDataLength, oldDataLength); }
/// <summary> /// This process (Update) method is for participation in a join. /// </summary> /// <param name="newEvents">new events</param> /// <param name="oldEvents">old events</param> /// <param name="exprEvaluatorContext">expression evaluation context</param> public override void Process(ISet <MultiKey <EventBean> > newEvents, ISet <MultiKey <EventBean> > oldEvents, ExprEvaluatorContext exprEvaluatorContext) { if ((ExecutionPathDebugLog.IsEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".process Received Update, " + " newData.Length==" + ((newEvents == null) ? 0 : newEvents.Count) + " oldData.Length==" + ((oldEvents == null) ? 0 : oldEvents.Count)); } ResultSetProcessor.ApplyJoinResult(newEvents, oldEvents); if (!CheckAfterCondition(newEvents, _parent.StatementContext)) { return; } int newEventsSize = 0; if (newEvents != null) { // add the incoming events to the event batches newEventsSize = newEvents.Count; } int oldEventsSize = 0; if (oldEvents != null) { oldEventsSize = oldEvents.Count; } _outputCondition.UpdateOutputCondition(newEventsSize, oldEventsSize); }
public NamedWindowConsumerPreloadAggregationJoin( JoinPreloadMethod joinPreloadMethod, ResultSetProcessor resultSetProcessor) { this._joinPreloadMethod = joinPreloadMethod; this._resultSetProcessor = resultSetProcessor; }
/// <summary> /// NOTE: Code-generation-invoked method, method name and parameter order matters /// </summary> /// <param name="joinExecutionStrategy">join strategy</param> /// <param name="resultSetProcessor">processor</param> /// <param name="parentView">view</param> /// <param name="distinct">flag</param> /// <param name="distinctKeyGetter"></param> /// <returns>iterator</returns> public static IEnumerator<EventBean> GetEnumerator( JoinExecutionStrategy joinExecutionStrategy, ResultSetProcessor resultSetProcessor, Viewable parentView, bool distinct, EventPropertyValueGetter distinctKeyGetter) { IEnumerator<EventBean> enumerator; if (joinExecutionStrategy != null) { var joinSet = joinExecutionStrategy.StaticJoin(); enumerator = resultSetProcessor.GetEnumerator(joinSet); } else if (resultSetProcessor != null) { enumerator = resultSetProcessor.GetEnumerator(parentView); } else { enumerator = parentView.GetEnumerator(); } if (!distinct) { return enumerator; } return EventDistinctEnumerator.For(enumerator, distinctKeyGetter); }
public override OutputProcessViewBase MakeView( ResultSetProcessor resultSetProcessor, AgentInstanceContext agentInstanceContext) { bool isAfterConditionSatisfied = true; long?afterConditionTime = null; if (AfterConditionNumberOfEvents != null) { isAfterConditionSatisfied = false; } else if (AfterTimePeriod != null) { isAfterConditionSatisfied = false; long delta = AfterTimePeriod.NonconstEvaluator().DeltaUseEngineTime(null, agentInstanceContext); afterConditionTime = agentInstanceContext.StatementContext.TimeProvider.Time + delta; } if (base.PostProcessFactory == null) { return(new OutputProcessViewDirectDistinctOrAfter( ResultSetProcessorHelperFactory, agentInstanceContext, resultSetProcessor, afterConditionTime, AfterConditionNumberOfEvents, isAfterConditionSatisfied, this)); } OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext); return(new OutputProcessViewDirectDistinctOrAfterPostProcess( ResultSetProcessorHelperFactory, agentInstanceContext, resultSetProcessor, afterConditionTime, AfterConditionNumberOfEvents, isAfterConditionSatisfied, this, postProcess)); }
public override OnExprViewResult DetermineOnExprView(AgentInstanceContext agentInstanceContext, IList <StopCallback> stopCallbacks, bool isRecoveringResilient) { var processors = new ResultSetProcessor[_splitDesc.ProcessorFactories.Length]; for (var i = 0; i < processors.Length; i++) { var factory = _splitDesc.ProcessorFactories[i]; var processor = factory.ResultSetProcessorFactory.Instantiate(null, null, agentInstanceContext); processors[i] = processor; } var tableStateInstances = new TableStateInstance[processors.Length]; for (var i = 0; i < _insertIntoTableNames.Length; i++) { var tableName = _insertIntoTableNames[i]; if (tableName != null) { tableStateInstances[i] = agentInstanceContext.StatementContext.TableService.GetState(tableName, agentInstanceContext.AgentInstanceId); } } var desc = (OnTriggerSplitStreamDesc)StatementSpec.OnTriggerDesc; View view = new RouteResultView( desc.IsFirst, _activatorResultEventType, StatementContext.EpStatementHandle, Services.InternalEventRouter, tableStateInstances, _splitDesc.NamedWindowInsert, processors, _splitDesc.WhereClauses, agentInstanceContext); return(new OnExprViewResult(view, null)); }
public OutputProcessViewSimpleWProcessor( AgentInstanceContext agentInstanceContext, ResultSetProcessor resultSetProcessor) { this.agentInstanceContext = agentInstanceContext; this.resultSetProcessor = resultSetProcessor; }
public OutputProcessViewDirect( AgentInstanceContext agentInstanceContext, ResultSetProcessor resultSetProcessor) { _agentInstanceContext = agentInstanceContext; _resultSetProcessor = resultSetProcessor; }
public void PreloadAggregation(ResultSetProcessor resultSetProcessor) { var newEvents = _joinSetComposer.StaticJoin(); var oldEvents = new HashSet <MultiKey <EventBean> >(); resultSetProcessor.ProcessJoinResult(newEvents, oldEvents, false); }
public override View DetermineFinalOutputView(AgentInstanceContext agentInstanceContext, View onExprView) { ResultSetProcessor outputResultSetProcessor = _outputResultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(null, null, agentInstanceContext); View outputView = _outputProcessViewFactory.MakeView(outputResultSetProcessor, agentInstanceContext); onExprView.AddView(outputView); return(outputView); }
public OutputProcessViewDirectPostProcess( AgentInstanceContext agentInstanceContext, ResultSetProcessor resultSetProcessor, OutputStrategyPostProcess postProcessor) : base(agentInstanceContext, resultSetProcessor) { _postProcessor = postProcessor; }
public TableOnViewBase Make( SubordWMatchExprLookupStrategy lookupStrategy, TableStateInstance tableState, AgentInstanceContext agentInstanceContext, ResultSetProcessor resultSetProcessor) { return(new TableOnMergeView(lookupStrategy, tableState, agentInstanceContext, TableMetadata, this)); }
public OutputProcessViewConditionDefault(ResultSetProcessor resultSetProcessor, long?afterConditionTime, int?afterConditionNumberOfEvents, bool afterConditionSatisfied, OutputProcessViewConditionFactory parent, AgentInstanceContext agentInstanceContext) : base(resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, afterConditionSatisfied) { _parent = parent; OutputCallback outputCallback = GetCallbackToLocal(parent.StreamCount); _outputCondition = parent.OutputConditionFactory.Make(agentInstanceContext, outputCallback); }
public override NamedWindowOnExprBaseView Make( SubordWMatchExprLookupStrategy lookupStrategy, NamedWindowRootViewInstance namedWindowRootViewInstance, AgentInstanceContext agentInstanceContext, ResultSetProcessor resultSetProcessor) { return(new NamedWindowOnUpdateView(lookupStrategy, namedWindowRootViewInstance, agentInstanceContext, this)); }
public TableOnSelectView(SubordWMatchExprLookupStrategy lookupStrategy, TableStateInstance rootView, ExprEvaluatorContext exprEvaluatorContext, TableMetadata metadata, TableOnSelectViewFactory parent, ResultSetProcessor resultSetProcessor, bool audit, bool deleteAndSelect) : base(lookupStrategy, rootView, exprEvaluatorContext, metadata, deleteAndSelect) { _parent = parent; _resultSetProcessor = resultSetProcessor; _audit = audit; _deleteAndSelect = deleteAndSelect; }
public NamedWindowOnSelectView(SubordWMatchExprLookupStrategy lookupStrategy, NamedWindowRootViewInstance rootView, ExprEvaluatorContext exprEvaluatorContext, NamedWindowOnSelectViewFactory parent, ResultSetProcessor resultSetProcessor, bool audit, bool isDelete, TableStateInstance tableStateInstanceInsertInto) : base(lookupStrategy, rootView, exprEvaluatorContext) { _parent = parent; _resultSetProcessor = resultSetProcessor; _audit = audit; _isDelete = isDelete; _tableStateInstanceInsertInto = tableStateInstanceInsertInto; }
public EPPreparedQueryResult Execute( FAFQueryMethodSelect select, ContextPartitionSelector[] contextPartitionSelectors, FAFQueryMethodAssignerSetter assignerSetter, ContextManagementService contextManagementService) { var processor = select.Processors[0]; var singleSelector = contextPartitionSelectors != null && contextPartitionSelectors.Length > 0 ? contextPartitionSelectors[0] : null; var agentInstanceIds = AgentInstanceIds(processor, singleSelector, contextManagementService); IList<ContextPartitionResult> contextPartitionResults = new List<ContextPartitionResult>(); foreach (var agentInstanceId in agentInstanceIds) { var processorInstance = processor.GetProcessorInstanceContextById(agentInstanceId); if (processorInstance != null) { var coll = processorInstance.SnapshotBestEffort(select.QueryGraph, select.Annotations); contextPartitionResults.Add( new ContextPartitionResult(coll, processorInstance.AgentInstanceContext)); } } // process context partitions var events = new ArrayDeque<EventBean[]>(); ResultSetProcessor resultSetProcessor = null; foreach (var contextPartitionResult in contextPartitionResults) { if (resultSetProcessor == null) { resultSetProcessor = ProcessorWithAssign( select.ResultSetProcessorFactoryProvider, contextPartitionResult.Context, assignerSetter, select.TableAccesses); } var snapshot = contextPartitionResult.Events; if (select.WhereClause != null) { snapshot = Filtered( snapshot, select.WhereClause, contextPartitionResult.Context); } var rows = snapshot.ToArray(); resultSetProcessor.SetAgentInstanceContext(contextPartitionResult.Context); var results = resultSetProcessor.ProcessViewResult(rows, null, true); if (results != null && results.First != null && results.First.Length > 0) { events.Add(results.First); } } var distinct = EventBeanUtility.GetDistinctByProp( EventBeanUtility.Flatten(events), select.EventBeanReaderDistinct); return new EPPreparedQueryResult(select.EventType, distinct); }
private JoinPlanResult HandleJoin( string[] streamNames, Viewable[] streamViews, ResultSetProcessor resultSetProcessor, AgentInstanceContext agentInstanceContext, IList <StopCallback> stopCallbacks, StreamJoinAnalysisResult joinAnalysisResult, bool isRecoveringResilient) { var joinSetComposerDesc = _joinSetComposerPrototype.Create(streamViews, false, agentInstanceContext, isRecoveringResilient); stopCallbacks.Add(new ProxyStopCallback(() => joinSetComposerDesc.JoinSetComposer.Destroy())); var filter = new JoinSetFilter(joinSetComposerDesc.PostJoinFilterEvaluator); var indicatorView = _outputProcessViewFactory.MakeView(resultSetProcessor, agentInstanceContext); // Create strategy for join execution JoinExecutionStrategy execution = new JoinExecutionStrategyImpl(joinSetComposerDesc.JoinSetComposer, filter, indicatorView, agentInstanceContext); // The view needs a reference to the join execution to pull iterator values indicatorView.JoinExecutionStrategy = execution; // Hook up dispatchable with buffer and execution strategy var joinStatementDispatch = new JoinExecStrategyDispatchable(execution, _statementSpec.StreamSpecs.Length); agentInstanceContext.EpStatementAgentInstanceHandle.OptionalDispatchable = joinStatementDispatch; JoinPreloadMethod preloadMethod; if (joinAnalysisResult.UnidirectionalStreamNumber >= 0) { preloadMethod = new JoinPreloadMethodNull(); } else { if (!joinSetComposerDesc.JoinSetComposer.AllowsInit) { preloadMethod = new JoinPreloadMethodNull(); } else { preloadMethod = new JoinPreloadMethodImpl(streamNames.Length, joinSetComposerDesc.JoinSetComposer); } } // Create buffer for each view. Point buffer to dispatchable for join. for (var i = 0; i < _statementSpec.StreamSpecs.Length; i++) { var buffer = new BufferView(i); streamViews[i].AddView(buffer); buffer.Observer = joinStatementDispatch; preloadMethod.SetBuffer(buffer, i); } return(new JoinPlanResult(indicatorView, preloadMethod, joinSetComposerDesc)); }
public virtual OutputProcessViewBase MakeView(ResultSetProcessor resultSetProcessor, AgentInstanceContext agentInstanceContext) { if (PostProcessFactory == null) { return(new OutputProcessViewDirect(resultSetProcessor, this)); } OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext); return(new OutputProcessViewDirectPostProcess(resultSetProcessor, this, postProcess)); }
public OutputProcessViewConditionLastAllUnord(ResultSetProcessor resultSetProcessor, long?afterConditionTime, int?afterConditionNumberOfEvents, bool afterConditionSatisfied, OutputProcessViewConditionFactory parent, AgentInstanceContext agentInstanceContext) : base(resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, afterConditionSatisfied) { _parent = parent; _isAll = parent.OutputLimitLimitType == OutputLimitLimitType.ALL; var outputCallback = GetCallbackToLocal(parent.StreamCount); _outputCondition = parent.OutputConditionFactory.Make(agentInstanceContext, outputCallback); }
protected OutputProcessViewBaseWAfter(ResultSetProcessor resultSetProcessor, long?afterConditionTime, int?afterConditionNumberOfEvents, bool afterConditionSatisfied) : base(resultSetProcessor) { _afterConditionTime = afterConditionTime; _afterConditionNumberOfEvents = afterConditionNumberOfEvents; IsAfterConditionSatisfied = afterConditionSatisfied; }
public override OutputProcessViewBase MakeView(ResultSetProcessor resultSetProcessor, AgentInstanceContext agentInstanceContext) { // determine after-stuff bool isAfterConditionSatisfied = true; long?afterConditionTime = null; var afterConditionNumberOfEvents = AfterConditionNumberOfEvents; if (afterConditionNumberOfEvents != null) { isAfterConditionSatisfied = false; } else if (AfterTimePeriod != null) { isAfterConditionSatisfied = false; long delta = AfterTimePeriod.NonconstEvaluator().DeltaMillisecondsUseEngineTime(null, agentInstanceContext); afterConditionTime = agentInstanceContext.StatementContext.TimeProvider.Time + delta; } if (_conditionType == ConditionType.SNAPSHOT) { if (base.PostProcessFactory == null) { return(new OutputProcessViewConditionSnapshot(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext)); } OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext); return(new OutputProcessViewConditionSnapshotPostProcess(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess)); } else if (_conditionType == ConditionType.POLICY_FIRST) { if (base.PostProcessFactory == null) { return(new OutputProcessViewConditionFirst(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext)); } OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext); return(new OutputProcessViewConditionFirstPostProcess(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess)); } else if (_conditionType == ConditionType.POLICY_LASTALL_UNORDERED) { if (base.PostProcessFactory == null) { return(new OutputProcessViewConditionLastAllUnord(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext)); } OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext); return(new OutputProcessViewConditionLastAllUnordPostProcessAll(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess)); } else { if (base.PostProcessFactory == null) { return(new OutputProcessViewConditionDefault(_resultSetProcessorHelperFactory, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, StreamCount > 1)); } OutputStrategyPostProcess postProcess = PostProcessFactory.Make(agentInstanceContext); return(new OutputProcessViewConditionDefaultPostProcess(resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, isAfterConditionSatisfied, this, agentInstanceContext, postProcess, StreamCount > 1, _resultSetProcessorHelperFactory)); } }
public OutputProcessViewDirectDistinctOrAfter( ResultSetProcessorHelperFactory resultSetProcessorHelperFactory, AgentInstanceContext agentInstanceContext, ResultSetProcessor resultSetProcessor, long?afterConditionTime, int?afterConditionNumberOfEvents, bool afterConditionSatisfied, OutputProcessViewDirectDistinctOrAfterFactory parent) : base(resultSetProcessorHelperFactory, agentInstanceContext, resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, afterConditionSatisfied) { _parent = parent; }
/// <summary> /// Called once the output condition has been met. /// Invokes the result set processor. /// Used for non-join event data. /// </summary> /// <param name="doOutput">true if the batched events should actually be output as well as processed, false if they should just be processed</param> /// <param name="forceUpdate">true if output should be made even when no updating events have arrived</param> internal virtual void ContinueOutputProcessingView(bool doOutput, bool forceUpdate) { if ((ExecutionPathDebugLog.IsEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".continueOutputProcessingView"); } var isGenerateSynthetic = _parent.StatementResultService.IsMakeSynthetic; var newOldEvents = ResultSetProcessor.ContinueOutputLimitedLastAllNonBufferedView(isGenerateSynthetic, _isAll); ContinueOutputProcessingViewAndJoin(doOutput, forceUpdate, newOldEvents); }
public OutputProcessViewConditionDefaultPostProcess(ResultSetProcessor resultSetProcessor, long?afterConditionTime, int?afterConditionNumberOfEvents, bool afterConditionSatisfied, OutputProcessViewConditionFactory parent, AgentInstanceContext agentInstanceContext, OutputStrategyPostProcess postProcessor) : base( resultSetProcessor, afterConditionTime, afterConditionNumberOfEvents, afterConditionSatisfied, parent, agentInstanceContext) { _postProcessor = postProcessor; }
/// <summary> /// Called once the output condition has been met. /// Invokes the result set processor. /// Used for join event data. /// </summary> /// <param name="doOutput">- true if the batched events should actually be output as well as processed, false if they should just be processed</param> /// <param name="forceUpdate">- true if output should be made even when no updating events have arrived</param> protected void ContinueOutputProcessingJoin(bool doOutput, bool forceUpdate) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QOutputRateConditionOutputNow(); } if ((ExecutionPathDebugLog.IsEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".continueOutputProcessingJoin"); } bool isGenerateSynthetic = _parent.StatementResultService.IsMakeSynthetic; bool isGenerateNatural = _parent.StatementResultService.IsMakeNatural; // Process the events and get the result UniformPair <EventBean[]> newOldEvents = ResultSetProcessor.ProcessOutputLimitedJoin( _deltaSet.JoinEventsSet, isGenerateSynthetic, _parent.OutputLimitLimitType); if (_parent.IsDistinct && newOldEvents != null) { newOldEvents.First = EventBeanUtility.GetDistinctByProp(newOldEvents.First, _parent.EventBeanReader); newOldEvents.Second = EventBeanUtility.GetDistinctByProp(newOldEvents.Second, _parent.EventBeanReader); } if ((!isGenerateSynthetic) && (!isGenerateNatural)) { if (AuditPath.IsAuditEnabled) { OutputStrategyUtil.IndicateEarlyReturn(_parent.StatementContext, newOldEvents); } ResetEventBatches(); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AOutputRateConditionOutputNow(false); } return; } if (doOutput) { Output(forceUpdate, newOldEvents); } ResetEventBatches(); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AOutputRateConditionOutputNow(true); } }
public override View DetermineFinalOutputView(AgentInstanceContext agentInstanceContext, View onExprView) { if ((StatementSpec.OnTriggerDesc.OnTriggerType == OnTriggerType.ON_DELETE) || (StatementSpec.OnTriggerDesc.OnTriggerType == OnTriggerType.ON_UPDATE) || (StatementSpec.OnTriggerDesc.OnTriggerType == OnTriggerType.ON_MERGE)) { ResultSetProcessor outputResultSetProcessor = _outputResultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(null, null, agentInstanceContext); View outputView = _outputProcessViewFactory.MakeView(outputResultSetProcessor, agentInstanceContext); onExprView.AddView(outputView); return(outputView); } return(onExprView); }
protected override StatementAgentInstanceFactoryResult NewContextInternal(AgentInstanceContext agentInstanceContext, bool isRecoveringResilient) { StopCallback stopCallback = new ProxyStopCallback(() => _services.VariableService.DeallocateVariableState(_variableMetaData.VariableName, agentInstanceContext.AgentInstanceId)); _services.VariableService.AllocateVariableState( _variableMetaData.VariableName, agentInstanceContext.AgentInstanceId, _statementContext.StatementExtensionServicesContext, isRecoveringResilient); CreateVariableView createView = new CreateVariableView( _statementContext.StatementId, _services.EventAdapterService, _services.VariableService, _createDesc.VariableName, _statementContext.StatementResultService, agentInstanceContext.AgentInstanceId); _services.VariableService.RegisterCallback(_createDesc.VariableName, agentInstanceContext.AgentInstanceId, createView.Update); _statementContext.StatementStopService.StatementStopped += () => _services.VariableService.UnregisterCallback(_createDesc.VariableName, 0, createView.Update); // Create result set processor, use wildcard selection _statementSpec.SelectClauseSpec.SetSelectExprList(new SelectClauseElementWildcard()); _statementSpec.SelectStreamDirEnum = SelectClauseStreamSelectorEnum.RSTREAM_ISTREAM_BOTH; var typeService = new StreamTypeServiceImpl(new EventType[] { createView.EventType }, new string[] { "create_variable" }, new bool[] { true }, _services.EngineURI, false); OutputProcessViewBase outputViewBase; try { ResultSetProcessorFactoryDesc resultSetProcessorPrototype = ResultSetProcessorFactoryFactory.GetProcessorPrototype( _statementSpec, _statementContext, typeService, null, new bool[0], true, ContextPropertyRegistryImpl.EMPTY_REGISTRY, null, _services.ConfigSnapshot, _services.ResultSetProcessorHelperFactory, false, false); ResultSetProcessor resultSetProcessor = EPStatementStartMethodHelperAssignExpr.GetAssignResultSetProcessor(agentInstanceContext, resultSetProcessorPrototype, false, null, false); // Attach output view OutputProcessViewFactory outputViewFactory = OutputProcessViewFactoryFactory.Make( _statementSpec, _services.InternalEventRouter, agentInstanceContext.StatementContext, resultSetProcessor.ResultEventType, null, _services.TableService, resultSetProcessorPrototype.ResultSetProcessorFactory.ResultSetProcessorType, _services.ResultSetProcessorHelperFactory, _services.StatementVariableRefService); outputViewBase = outputViewFactory.MakeView(resultSetProcessor, agentInstanceContext); createView.AddView(outputViewBase); } catch (ExprValidationException ex) { throw new EPException("Unexpected exception in create-variable context allocation: " + ex.Message, ex); } return(new StatementAgentInstanceFactoryCreateVariableResult(outputViewBase, stopCallback, agentInstanceContext)); }