Exemple #1
0
        public EventBean[] SnapshotUpdate(
            QueryGraph filterQueryGraph,
            ExprEvaluator optionalWhereClause,
            EventBeanUpdateHelperWCopy updateHelper,
            Attribute[] annotations)
        {
            using (AgentInstanceContext.EpStatementAgentInstanceHandle.StatementAgentInstanceLock.AcquireReadLock()) {
                try {
                    var events = SnapshotNoLockWithFilter(
                        filterQueryGraph,
                        annotations,
                        optionalWhereClause,
                        AgentInstanceContext);
                    if (events.IsEmpty()) {
                        return CollectionUtil.EVENTBEANARRAY_EMPTY;
                    }

                    var eventsPerStream = new EventBean[3];
                    var updated = new EventBean[events.Count];
                    var count = 0;
                    foreach (var @event in events) {
                        updated[count++] = updateHelper.Invoke(@event, eventsPerStream, AgentInstanceContext);
                    }

                    var deleted = events.ToArray();
                    _rootViewInstance.Update(updated, deleted);
                    return updated;
                }
                finally {
                    ReleaseTableLocks(AgentInstanceContext);
                }
            }
        }
 public InfraOnMergeActionUpd(
     ExprEvaluator optionalFilter,
     EventBeanUpdateHelperWCopy namedWindowUpdate)
     : base(
         optionalFilter)
 {
     this.namedWindowUpdate = namedWindowUpdate;
     tableUpdate = null;
 }
 public InfraOnMergeActionUpd(
     ExprEvaluator optionalFilter,
     EventBeanUpdateHelperNoCopy tableUpdate,
     Table table)
     : base(optionalFilter)
 {
     this.tableUpdate = tableUpdate;
     namedWindowUpdate = null;
     this.table = table;
     InitTableUpdateStrategy(table);
 }
Exemple #4
0
        public InfraOnUpdateViewFactory(
            EventType infraEventType,
            EventBeanUpdateHelperWCopy updateHelperNamedWindow,
            EventBeanUpdateHelperNoCopy updateHelperTable,
            Table table,
            StatementContext statementContext)
            : base(
                infraEventType)
        {
            UpdateHelperNamedWindow = updateHelperNamedWindow;
            UpdateHelperTable = updateHelperTable;
            this.table = table;

            if (table != null) {
                InitTableUpdateStrategy(table);
                table.AddUpdateStrategyCallback(this);
                statementContext.AddFinalizeCallback(
                    new ProxyStatementFinalizeCallback {
                        ProcStatementDestroyed = context => { this.table.RemoveUpdateStrategyCallback(this); }
                    });
            }
        }