protected void ScheduleCallback() { long current = _agentInstanceContext.StatementContext.SchedulingService.Time; ExprTimePeriodEvalDeltaResult deltaWReference = _timeDeltaComputation.DeltaAddWReference( current, _currentReferencePoint.Value); long afterTime = deltaWReference.Delta; _currentReferencePoint = deltaWReference.LastReference; var callback = new ProxyScheduleHandleCallback() { ProcScheduledTrigger = (extensionServicesContext) => { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QViewScheduledEval(this, _timeBatchViewFactory.ViewName); } SendBatch(); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AViewScheduledEval(); } } }; _handle = new EPStatementHandleCallback(_agentInstanceContext.EpStatementAgentInstanceHandle, callback); _agentInstanceContext.StatementContext.SchedulingService.Add(afterTime, _handle, _scheduleSlot); }
public override void Update(EventBean[] newData, EventBean[] oldData) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QViewProcessIRStream(this, _factory.ViewName, newData, oldData); } // remove points from data window if (oldData != null && oldData.Length != 0) { foreach (EventBean anOldData in oldData) { Window.Remove(anOldData); HandleInternalRemovedEvent(anOldData); } DetermineOldestTimestamp(); } // add data points to the window EventBean[] batchNewData = null; if (newData != null) { foreach (EventBean newEvent in newData) { long timestamp = GetLongValue(newEvent); if (ReferenceTimestamp == null) { ReferenceTimestamp = timestamp; } if (_oldestTimestamp == null) { _oldestTimestamp = timestamp; } else { var delta = _timeDeltaComputation.DeltaAddWReference( _oldestTimestamp.Value, ReferenceTimestamp.Value); ReferenceTimestamp = delta.LastReference; if (timestamp - _oldestTimestamp >= delta.Delta) { if (batchNewData == null) { batchNewData = Window.ToArray(); } else { batchNewData = EventBeanUtility.AddToArray(batchNewData, Window); } Window.Clear(); _oldestTimestamp = null; } } Window.Add(newEvent); HandleInternalAddEvent(newEvent, batchNewData != null); } } if (batchNewData != null) { HandleInternalPostBatch(Window, batchNewData); if (ViewUpdatedCollection != null) { ViewUpdatedCollection.Update(batchNewData, LastBatch); } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QViewIndicate(this, _factory.ViewName, newData, LastBatch); } UpdateChildren(batchNewData, LastBatch); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AViewIndicate(); } LastBatch = batchNewData; DetermineOldestTimestamp(); } if (oldData != null && oldData.Length > 0) { if (ViewUpdatedCollection != null) { ViewUpdatedCollection.Update(null, oldData); } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QViewIndicate(this, _factory.ViewName, null, oldData); } UpdateChildren(null, oldData); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AViewIndicate(); } } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AViewProcessIRStream(); } }