private void GetGroupedResults(IDictionary <Object, UniformPair <EventBean[]> > groups, IEnumerable <EventBean> events, bool insertStream, EventBean[] eventsPerStream) { if (events == null) { return; } foreach (EventBean theEvent in events) { EventBean evalEvent = theEvent; if (evalEvent is NaturalEventBean) { evalEvent = ((NaturalEventBean)evalEvent).OptionalSynthetic; } Object key; eventsPerStream[0] = evalEvent; if (_groupDeliveryExpressions.Length == 1) { key = _groupDeliveryExpressions[0].Evaluate(new EvaluateParams(eventsPerStream, true, _exprEvaluatorContext)); } else { var keys = new Object[_groupDeliveryExpressions.Length]; for (int i = 0; i < _groupDeliveryExpressions.Length; i++) { keys[i] = _groupDeliveryExpressions[i].Evaluate(new EvaluateParams(eventsPerStream, true, _exprEvaluatorContext)); } key = new MultiKeyUntyped(keys); } UniformPair <EventBean[]> groupEntry = groups.Get(key); if (groupEntry == null) { groupEntry = insertStream ? new UniformPair <EventBean[]>(new[] { theEvent }, null) : new UniformPair <EventBean[]>(null, new[] { theEvent }); groups.Put(key, groupEntry); } else { if (insertStream) { groupEntry.First = groupEntry.First == null ? new[] { theEvent } : EventBeanUtility.AddToArray(groupEntry.First, theEvent); } else { groupEntry.Second = groupEntry.Second == null ? new[] { theEvent } : EventBeanUtility.AddToArray(groupEntry.Second, theEvent); } } } }
private void GetGroupedResults( IDictionary<object, UniformPair<EventBean[]>> groups, EventBean[] events, bool insertStream, EventBean[] eventsPerStream) { if (events == null) { return; } foreach (var theEvent in events) { var evalEvent = theEvent; if (evalEvent is NaturalEventBean) { evalEvent = ((NaturalEventBean) evalEvent).OptionalSynthetic; } eventsPerStream[0] = evalEvent; var key = _groupDeliveryExpressions.Evaluate(eventsPerStream, true, _epStatement.StatementContext); var groupEntry = groups.Get(key); if (groupEntry == null) { if (insertStream) { groupEntry = new UniformPair<EventBean[]>(new[] {theEvent}, null); } else { groupEntry = new UniformPair<EventBean[]>(null, new[] {theEvent}); } groups.Put(key, groupEntry); } else { if (insertStream) { if (groupEntry.First == null) { groupEntry.First = new[] {theEvent}; } else { groupEntry.First = EventBeanUtility.AddToArray(groupEntry.First, theEvent); } } else { if (groupEntry.Second == null) { groupEntry.Second = new[] {theEvent}; } else { groupEntry.Second = EventBeanUtility.AddToArray(groupEntry.Second, theEvent); } } } } }
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.DeltaMillisecondsAddWReference( _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(); } }
public override void Update(EventBean[] newData, EventBean[] oldData) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QViewProcessIRStream(this, FirstUniqueByPropertyViewFactory.NAME, newData, oldData); } EventBean[] newDataToPost = null; EventBean[] oldDataToPost = null; if (oldData != null) { foreach (EventBean oldEvent in oldData) { // Obtain unique value object key = GetUniqueKey(oldEvent); // If the old event is the current unique event, remove and post as old data EventBean lastValue = _firstEvents.Get(key); if (lastValue != oldEvent) { continue; } if (oldDataToPost == null) { oldDataToPost = new EventBean[] { oldEvent }; } else { oldDataToPost = EventBeanUtility.AddToArray(oldDataToPost, oldEvent); } _firstEvents.Remove(key); InternalHandleRemoved(key, lastValue); } } if (newData != null) { foreach (EventBean newEvent in newData) { // Obtain unique value object key = GetUniqueKey(newEvent); // already-seen key if (_firstEvents.ContainsKey(key)) { continue; } // store _firstEvents.Put(key, newEvent); InternalHandleAdded(key, newEvent); // Post the new value if (newDataToPost == null) { newDataToPost = new EventBean[] { newEvent }; } else { newDataToPost = EventBeanUtility.AddToArray(newDataToPost, newEvent); } } } if ((HasViews) && ((newDataToPost != null) || (oldDataToPost != null))) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QViewIndicate(this, FirstUniqueByPropertyViewFactory.NAME, newDataToPost, oldDataToPost); } UpdateChildren(newDataToPost, oldDataToPost); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AViewIndicate(); } } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AViewProcessIRStream(); } }
public override void Update( EventBean[] newData, EventBean[] oldData) { agentInstanceContext.AuditProvider.View(newData, oldData, agentInstanceContext, factory); agentInstanceContext.InstrumentationProvider.QViewProcessIRStream(factory, newData, oldData); // remove points from data window if (oldData != null && oldData.Length != 0) { foreach (var anOldData in oldData) { window.Remove(anOldData); HandleInternalRemovedEvent(anOldData); } DetermineOldestTimestamp(); } // add data points to the window EventBean[] batchNewData = null; if (newData != null) { foreach (var newEvent in newData) { var timestamp = GetLongValue(newEvent); if (referenceTimestamp == null) { referenceTimestamp = timestamp; } if (oldestTimestamp == null) { oldestTimestamp = timestamp; } else { var delta = timePeriodProvide.DeltaAddWReference( oldestTimestamp.Value, referenceTimestamp.Value, null, true, agentInstanceContext); 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); viewUpdatedCollection?.Update(batchNewData, lastBatch); agentInstanceContext.InstrumentationProvider.QViewIndicate(factory, batchNewData, lastBatch); child.Update(batchNewData, lastBatch); agentInstanceContext.InstrumentationProvider.AViewIndicate(); lastBatch = batchNewData; DetermineOldestTimestamp(); } if (oldData != null && oldData.Length > 0) { viewUpdatedCollection?.Update(null, oldData); agentInstanceContext.InstrumentationProvider.QViewIndicate(factory, null, oldData); child.Update(null, oldData); agentInstanceContext.InstrumentationProvider.AViewIndicate(); } agentInstanceContext.InstrumentationProvider.AViewProcessIRStream(); }
public override void Update( EventBean[] newData, EventBean[] oldData) { agentInstanceContext.AuditProvider.View(newData, oldData, agentInstanceContext, viewFactory); agentInstanceContext.InstrumentationProvider.QViewProcessIRStream(viewFactory, newData, oldData); EventBean[] newDataToPost = null; EventBean[] oldDataToPost = null; if (oldData != null) { foreach (var oldEvent in oldData) { // Obtain unique value var key = GetUniqueKey(oldEvent); // If the old event is the current unique event, remove and post as old data var lastValue = firstEvents.Get(key); if (lastValue != oldEvent) { continue; } if (oldDataToPost == null) { oldDataToPost = new[] {oldEvent}; } else { oldDataToPost = EventBeanUtility.AddToArray(oldDataToPost, oldEvent); } firstEvents.Remove(key); } } if (newData != null) { foreach (var newEvent in newData) { // Obtain unique value var key = GetUniqueKey(newEvent); // already-seen key if (firstEvents.ContainsKey(key)) { continue; } // store firstEvents.Put(key, newEvent); // Post the new value if (newDataToPost == null) { newDataToPost = new[] {newEvent}; } else { newDataToPost = EventBeanUtility.AddToArray(newDataToPost, newEvent); } } } if (child != null && (newDataToPost != null || oldDataToPost != null)) { agentInstanceContext.InstrumentationProvider.QViewIndicate(viewFactory, newDataToPost, oldDataToPost); child.Update(newDataToPost, oldDataToPost); agentInstanceContext.InstrumentationProvider.AViewIndicate(); } agentInstanceContext.InstrumentationProvider.AViewProcessIRStream(); }