public override EPStatementStartResult StartInternal( EPServicesContext services, StatementContext statementContext, bool isNewStatement, bool isRecoveringStatement, bool isRecoveringResilient) { var expressionName = services.ExprDeclaredService.AddExpressionOrScript(StatementSpec.CreateExpressionDesc); // define output event type var typeName = "EventType_Expression_" + expressionName; var resultType = services.EventAdapterService.CreateAnonymousMapType( typeName, Collections.GetEmptyMap <String, Object>(), true); var stopMethod = new ProxyEPStatementStopMethod( () => { // no action }); var destroyMethod = new ProxyEPStatementDestroyMethod( () => services.ExprDeclaredService.DestroyedExpression(StatementSpec.CreateExpressionDesc)); Viewable resultView = new ZeroDepthStreamNoIterate(resultType); statementContext.StatementAgentInstanceFactory = new StatementAgentInstanceFactoryNoAgentInstance(resultView); return(new EPStatementStartResult(resultView, stopMethod, destroyMethod)); }
public override EPStatementStartResult StartInternal(EPServicesContext services, StatementContext statementContext, bool isNewStatement, bool isRecoveringStatement, bool isRecoveringResilient) { var createGraphDesc = StatementSpec.CreateGraphDesc; var agentInstanceContext = GetDefaultAgentInstanceContext(statementContext); // define output event type var typeName = "EventType_Graph_" + createGraphDesc.GraphName; var resultType = services.EventAdapterService.CreateAnonymousMapType(typeName, Collections.GetEmptyMap <String, Object>(), true); services.DataFlowService.AddStartGraph(createGraphDesc, statementContext, services, agentInstanceContext, isNewStatement); var stopMethod = new ProxyEPStatementStopMethod(() => services.DataFlowService.StopGraph(createGraphDesc.GraphName)); var destroyMethod = new ProxyEPStatementDestroyMethod(() => services.DataFlowService.RemoveGraph(createGraphDesc.GraphName)); var resultView = new ZeroDepthStreamNoIterate(resultType); statementContext.StatementAgentInstanceFactory = new StatementAgentInstanceFactoryNoAgentInstance(resultView); return(new EPStatementStartResult(resultView, stopMethod, destroyMethod)); }
public ViewableActivationResult Activate( AgentInstanceContext agentInstanceContext, bool isSubselect, bool isRecoveringResilient) { FilterValueSetParam[][] addendum = null; if (agentInstanceContext.AgentInstanceFilterProxy != null) { addendum = agentInstanceContext.AgentInstanceFilterProxy.GetAddendumFilters( FilterSpec, agentInstanceContext); } var filterValues = FilterSpec.GetValueSet( null, addendum, agentInstanceContext, agentInstanceContext.StatementContextFilterEvalEnv); EventStream theStream; if (filterValues == null) { theStream = new ZeroDepthStreamNoIterate(FilterSpec.ResultEventType); } else { if (!agentInstanceContext.AuditProvider.Activated() && !agentInstanceContext.InstrumentationProvider.Activated()) { theStream = CanIterate ? new ZeroDepthStreamIterable(FilterSpec.ResultEventType) : (EventStream) new ZeroDepthStreamNoIterate(FilterSpec.ResultEventType); } else { var streamNum = StreamNumFromClause ?? -1; theStream = CanIterate ? new ZeroDepthStreamIterableWAudit( FilterSpec.ResultEventType, agentInstanceContext, FilterSpec, streamNum, isSubselect, SubselectNumber) : (EventStream) new ZeroDepthStreamNoIterateWAudit( FilterSpec.ResultEventType, agentInstanceContext, FilterSpec, streamNum, isSubselect, SubselectNumber); } } FilterHandleCallback filterCallback; if (FilterSpec.OptionalPropertyEvaluator == null) { filterCallback = new ProxyFilterHandleCallback { ProcMatchFound = ( theEvent, allStmtMatches) => theStream.Insert(theEvent), ProcIsSubselect = () => IsSubSelect }; } else { filterCallback = new ProxyFilterHandleCallback { ProcMatchFound = ( theEvent, allStmtMatches) => { var result = FilterSpec.OptionalPropertyEvaluator.GetProperty(theEvent, agentInstanceContext); if (result == null) { return; } theStream.Insert(result); }, ProcIsSubselect = () => IsSubSelect }; } var filterHandle = new EPStatementHandleCallbackFilter( agentInstanceContext.EpStatementAgentInstanceHandle, filterCallback); if (filterValues != null) { agentInstanceContext .StatementContext .FilterService .Add( FilterSpec.FilterForEventType, filterValues, filterHandle); } ViewableActivatorFilterMgmtCallback stopCallback = new ViewableActivatorFilterMgmtCallback(Container, filterHandle, FilterSpec); return new ViewableActivationResult(theStream, stopCallback, null, false, false, null, null, null); }