public override void Apply( EventBean matchingEvent, EventBean[] eventsPerStream, TableStateInstance tableStateInstance, TableOnMergeViewChangeHandler changeHandlerAdded, TableOnMergeViewChangeHandler changeHandlerRemoved, ExprEvaluatorContext exprEvaluatorContext) { var theEvent = _insertHelper.Process(eventsPerStream, true, true, exprEvaluatorContext); if (_internalEventRouter == null) { var aggs = _tableStateRowFactory.MakeAggs(exprEvaluatorContext.AgentInstanceId, null, null, tableStateInstance.AggregationServicePassThru); ((object[])theEvent.Underlying)[0] = aggs; tableStateInstance.AddEvent(theEvent); if (changeHandlerAdded != null) { changeHandlerAdded.Add(theEvent, eventsPerStream, true, exprEvaluatorContext); } return; } if (_audit) { AuditPath.AuditInsertInto(_internalEventRouteDest.EngineURI, _statementHandle.StatementName, theEvent); } _internalEventRouter.Route(theEvent, _statementHandle, _internalEventRouteDest, exprEvaluatorContext, false); }
public override void Apply(EventBean matchingEvent, EventBean[] eventsPerStream, OneEventCollection newData, OneEventCollection oldData, ExprEvaluatorContext exprEvaluatorContext) { EventBean theEvent = _insertHelper.Process(eventsPerStream, true, true, exprEvaluatorContext); if (_insertIntoTableName != null) { TableStateInstance tableStateInstance = _tableService.GetState(_insertIntoTableName, exprEvaluatorContext.AgentInstanceId); if (_audit) { AuditPath.AuditInsertInto(tableStateInstance.AgentInstanceContext.EngineURI, _statementHandle.StatementName, theEvent); } tableStateInstance.AddEventUnadorned(theEvent); return; } if (_internalEventRouter == null) { newData.Add(theEvent); return; } if (_audit) { AuditPath.AuditInsertInto(_internalEventRouteDest.EngineURI, _statementHandle.StatementName, theEvent); } _internalEventRouter.Route(theEvent, _statementHandle, _internalEventRouteDest, exprEvaluatorContext, false); }
private void Route(EventBean routed, int index, ExprEvaluatorContext exprEvaluatorContext) { if (Audit) { AuditPath.AuditInsertInto(AgentInstanceContext.EngineURI, AgentInstanceContext.StatementName, routed); } TableStateInstance tableStateInstance = _tableStateInstances[index]; if (tableStateInstance != null) { tableStateInstance.AddEventUnadorned(routed); } else { bool isNamedWindowInsert = Items[index].IsNamedWindowInsert; InternalEventRouter.Route( routed, EPStatementHandle, AgentInstanceContext.StatementContext.InternalEventEngineRouteDest, exprEvaluatorContext, isNamedWindowInsert); } }
private void Route(EventBean[] events, ExprEvaluatorContext exprEvaluatorContext) { foreach (var routed in events) { if (routed is NaturalEventBean) { var natural = (NaturalEventBean)routed; if (_audit) { AuditPath.AuditInsertInto(_agentInstanceContext.EngineURI, _agentInstanceContext.StatementName, natural.OptionalSynthetic); } if (_tableStateInstance != null) { _tableStateInstance.AddEventUnadorned(natural.OptionalSynthetic); } else { _parent.InternalEventRouter.Route(natural.OptionalSynthetic, _parent.EpStatementHandle, _agentInstanceContext.StatementContext.InternalEventEngineRouteDest, exprEvaluatorContext, _parent.IsAddToFront); } } else { if (_audit) { AuditPath.AuditInsertInto(_agentInstanceContext.EngineURI, _agentInstanceContext.StatementName, routed); } if (_tableStateInstance != null) { ExprTableEvalLockUtil.ObtainLockUnless(_tableStateInstance.TableLevelRWLock.WriteLock, exprEvaluatorContext); _tableStateInstance.AddEventUnadorned(routed); } else { _parent.InternalEventRouter.Route(routed, _parent.EpStatementHandle, _agentInstanceContext.StatementContext.InternalEventEngineRouteDest, exprEvaluatorContext, _parent.IsAddToFront); } } } }
public override void HandleMatching(EventBean[] triggerEvents, EventBean[] matchingEvents) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QInfraOnAction(OnTriggerType.ON_SELECT, triggerEvents, matchingEvents); } EventBean[] newData; // clear state from prior results _resultSetProcessor.Clear(); // build join result // use linked hash set to retain order of join results for last/first/window to work most intuitively ISet <MultiKey <EventBean> > newEvents = NamedWindowOnSelectView.BuildJoinResult(triggerEvents, matchingEvents); // process matches UniformPair <EventBean[]> pair = _resultSetProcessor.ProcessJoinResult(newEvents, Collections.GetEmptySet <MultiKey <EventBean> >(), false); newData = (pair != null ? pair.First : null); if (_parent.IsDistinct) { newData = EventBeanUtility.GetDistinctByProp(newData, _parent.EventBeanReader); } if (_parent.InternalEventRouter != null) { if (newData != null) { for (int i = 0; i < newData.Length; i++) { if (_audit) { AuditPath.AuditInsertInto(ExprEvaluatorContext.EngineURI, ExprEvaluatorContext.StatementName, newData[i]); } _parent.InternalEventRouter.Route(newData[i], _parent.StatementHandle, _parent.InternalEventRouteDest, ExprEvaluatorContext, false); } } } // The on-select listeners receive the events selected if ((newData != null) && (newData.Length > 0)) { // And post only if we have listeners/subscribers that need the data if (_parent.StatementResultService.IsMakeNatural || _parent.StatementResultService.IsMakeSynthetic) { UpdateChildren(newData, null); } } // clear state from prior results _resultSetProcessor.Clear(); // Events to delete are indicated via old data if (_deleteAndSelect) { foreach (EventBean @event in matchingEvents) { TableStateInstance.DeleteEvent(@event); } } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AInfraOnAction(); } }
public override void HandleMatching(EventBean[] triggerEvents, EventBean[] matchingEvents) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QInfraOnAction(OnTriggerType.ON_SELECT, triggerEvents, matchingEvents); } EventBean[] newData; // clear state from prior results _resultSetProcessor.Clear(); // build join result // use linked hash set to retain order of join results for last/first/window to work most intuitively var newEvents = BuildJoinResult(triggerEvents, matchingEvents); // process matches var pair = _resultSetProcessor.ProcessJoinResult(newEvents, _oldEvents, false); newData = (pair != null ? pair.First : null); if (_parent.IsDistinct) { newData = EventBeanUtility.GetDistinctByProp(newData, _parent.EventBeanReader); } if (_tableStateInstanceInsertInto != null) { if (newData != null) { foreach (var aNewData in newData) { if (_audit) { AuditPath.AuditInsertInto(ExprEvaluatorContext.EngineURI, ExprEvaluatorContext.StatementName, aNewData); } _tableStateInstanceInsertInto.AddEventUnadorned(aNewData); } } } else if (_parent.InternalEventRouter != null) { if (newData != null) { foreach (var aNewData in newData) { if (_audit) { AuditPath.AuditInsertInto(ExprEvaluatorContext.EngineURI, ExprEvaluatorContext.StatementName, aNewData); } _parent.InternalEventRouter.Route(aNewData, _parent.StatementHandle, _parent.InternalEventRouteDest, ExprEvaluatorContext, _parent.IsAddToFront); } } } // The on-select listeners receive the events selected if ((newData != null) && (newData.Length > 0)) { // And post only if we have listeners/subscribers that need the data if (_parent.StatementResultService.IsMakeNatural || _parent.StatementResultService.IsMakeSynthetic) { UpdateChildren(newData, null); } } _lastResult = newData; // clear state from prior results _resultSetProcessor.Clear(); // Events to delete are indicated via old data if (_isDelete) { RootView.Update(null, matchingEvents); } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AInfraOnAction(); } }
public bool Handle(EventBean theEvent, ExprEvaluatorContext exprEvaluatorContext) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QSplitStream(false, theEvent, _whereClauses); } int index = -1; _eventsPerStream[0] = theEvent; for (int i = 0; i < _whereClauses.Length; i++) { if (_whereClauses[i] == null) { index = i; break; } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QSplitStreamWhere(i); } var pass = (bool?)_whereClauses[i].Evaluate(new EvaluateParams(_eventsPerStream, true, exprEvaluatorContext)); if ((pass != null) && (pass.Value)) { index = i; if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().ASplitStreamWhere(pass.Value); } break; } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().ASplitStreamWhere(pass.Value); } } if (index != -1) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QSplitStreamRoute(index); } UniformPair <EventBean[]> result = _processors[index].ProcessViewResult(_eventsPerStream, null, false); if ((result != null) && (result.First != null) && (result.First.Length > 0)) { if (_audit) { AuditPath.AuditInsertInto(_agentInstanceContext.EngineURI, _agentInstanceContext.StatementName, result.First[0]); } if (_tableStateInstances[index] != null) { _tableStateInstances[index].AddEventUnadorned(result.First[0]); } else { _internalEventRouter.Route(result.First[0], _epStatementHandle, _agentInstanceContext.StatementContext.InternalEventEngineRouteDest, _agentInstanceContext, _isNamedWindowInsert[index]); } } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().ASplitStreamRoute(); } } if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().ASplitStream(false, index != -1); } return(index != -1); }
public bool Handle(EventBean theEvent, ExprEvaluatorContext exprEvaluatorContext) { var isHandled = new Mutable <bool>(false); using (Instrument.With( i => i.QSplitStream(true, theEvent, _whereClauses), i => i.ASplitStream(true, isHandled.Value))) { _eventsPerStream[0] = theEvent; for (int ii = 0; ii < _whereClauses.Length; ii++) { var pass = new Mutable <bool>(true); if (_whereClauses[ii] != null) { Instrument.With( i => i.QSplitStreamWhere(ii), i => i.ASplitStreamWhere(pass.Value), () => { var passEvent = (bool?)_whereClauses[ii].Evaluate(new EvaluateParams(_eventsPerStream, true, exprEvaluatorContext)); if ((passEvent == null) || (!passEvent.Value)) { pass.Value = false; } }); } if (pass.Value) { Instrument.With( i => i.QSplitStreamRoute(ii), i => i.ASplitStreamRoute(), () => { UniformPair <EventBean[]> result = _processors[ii].ProcessViewResult( _eventsPerStream, null, false); if ((result != null) && (result.First != null) && (result.First.Length > 0)) { isHandled.Value = true; EventBean eventRouted = result.First[0]; if (_audit) { AuditPath.AuditInsertInto( _agentInstanceContext.EngineURI, _agentInstanceContext.StatementName, eventRouted); } if (_tableStateInstances[ii] != null) { _tableStateInstances[ii].AddEventUnadorned(eventRouted); } else { _internalEventRouter.Route( eventRouted, _epStatementHandle, _agentInstanceContext.StatementContext.InternalEventEngineRouteDest, exprEvaluatorContext, _isNamedWindowInsert[ii]); } } }); } } return(isHandled.Value); } }