/// <summary> /// Constructor. /// </summary> /// <param name="viewUpdatedCollection">is a collection that the view must update when receiving events</param> /// <param name="timeBatchViewFactory">fr copying this view in a group-by</param> /// <param name="agentInstanceContext">is required view services</param> /// <param name="timeDeltaComputation">delta computation</param> public TimeAccumView( TimeAccumViewFactory timeBatchViewFactory, AgentInstanceViewFactoryChainContext agentInstanceContext, ExprTimePeriodEvalDeltaConst timeDeltaComputation, ViewUpdatedCollection viewUpdatedCollection) { _agentInstanceContext = agentInstanceContext; _factory = timeBatchViewFactory; _timeDeltaComputation = timeDeltaComputation; _viewUpdatedCollection = viewUpdatedCollection; _scheduleSlot = agentInstanceContext.StatementContext.ScheduleBucket.AllocateSlot(); var callback = new ProxyScheduleHandleCallback { ProcScheduledTrigger = extensionServicesContext => { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QViewScheduledEval(this, _factory.ViewName); } SendRemoveStream(); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AViewScheduledEval(); } } }; _handle = new EPStatementHandleCallback(agentInstanceContext.EpStatementAgentInstanceHandle, callback); agentInstanceContext.AddTerminationCallback(this); }
/// <summary> /// Constructor. /// </summary> /// <param name="timeBatchViewFactory">for copying this view in a group-by</param> /// <param name="agentInstanceContext">The agent instance context.</param> /// <param name="timeDeltaComputation">The time delta computation.</param> public TimeAccumViewRStream( TimeAccumViewFactory timeBatchViewFactory, AgentInstanceViewFactoryChainContext agentInstanceContext, ExprTimePeriodEvalDeltaConst timeDeltaComputation) { _agentInstanceContext = agentInstanceContext; _factory = timeBatchViewFactory; _timeDeltaComputation = timeDeltaComputation; _scheduleSlot = agentInstanceContext.StatementContext.ScheduleBucket.AllocateSlot(); ScheduleHandleCallback callback = new ProxyScheduleHandleCallback { ProcScheduledTrigger = extensionServicesContext => { using (Instrument.With( i => i.QViewScheduledEval(this, _factory.ViewName), i => i.AViewScheduledEval())) { SendRemoveStream(); } } }; _handle = new EPStatementHandleCallback(agentInstanceContext.EpStatementAgentInstanceHandle, callback); agentInstanceContext.AddTerminationCallback(Stop); }