コード例 #1
0
        internal ExprNodeAdapterMSStmtLock(
            FilterSpecParamExprNode factory,
            ExprEvaluatorContext evaluatorContext,
            EventBean[] prototype,
            VariableManagementService variableService)
            : base(factory, evaluatorContext, prototype)

        {
            _variableService = variableService;
        }
コード例 #2
0
 protected ExprNodeAdapterBase GetLockableMultiStream(
     FilterSpecParamExprNode factory,
     ExprEvaluatorContext exprEvaluatorContext,
     VariableManagementService variableServiceToUse,
     ImportServiceRuntime importService,
     EventBean[] events,
     Attribute[] annotations,
     int agentInstanceId)
 {
     return new ExprNodeAdapterMSStmtLock(factory, exprEvaluatorContext, events, variableServiceToUse);
 }
コード例 #3
0
        public ExprNodeAdapterWTableAccess(
            FilterSpecParamExprNode factory,
            ExprEvaluatorContext evaluatorContext,
            ExprNodeAdapterBase evalBase,
            TableExprEvaluatorContext tableExprEvaluatorContext)
            : base(factory, evaluatorContext)

        {
            _evalBase = evalBase;
            _tableExprEvaluatorContext = tableExprEvaluatorContext;
        }
コード例 #4
0
        public ExprNodeAdapterMSPlain(
            FilterSpecParamExprNode factory,
            ExprEvaluatorContext evaluatorContext,
            EventBean[] prototype,
            VariableManagementService variableService)
            : base(factory, evaluatorContext, prototype)
        {
            _variableService = variableService;

            _arrayPerThread = new SlimThreadLocal<EventBean[]>(
                () => {
                    var eventsPerStream = new EventBean[prototypeArray.Length];
                    Array.Copy(prototypeArray, 0, eventsPerStream, 0, prototypeArray.Length);
                    return eventsPerStream;
                });
        }
コード例 #5
0
        public ExprNodeAdapterBase Make(
            FilterSpecParamExprNode node,
            EventBean[] events,
            ExprEvaluatorContext exprEvaluatorContext,
            int agentInstanceId,
            StatementContextFilterEvalEnv filterEvalEnv)
        {
            // handle table evaluator context
            if (node.IsTableAccess) {
                exprEvaluatorContext = new ExprEvaluatorContextWTableAccess(
                    exprEvaluatorContext,
                    filterEvalEnv.TableExprEvaluatorContext);
            }

            ExprNodeAdapterBase adapter;
            if (events == null) {
                // if a subquery is present in a filter stream acquire the agent instance lock
                if (node.IsFilterStreamSubquery) {
                    adapter = GetLockableSingle(
                        node,
                        exprEvaluatorContext,
                        filterEvalEnv.VariableManagementService,
                        filterEvalEnv.ImportServiceRuntime,
                        filterEvalEnv.Annotations,
                        agentInstanceId);
                }
                else if (!node.IsVariable) {
                    // no-variable no-prior event evaluation
                    adapter = new ExprNodeAdapterSSPlain(node, exprEvaluatorContext);
                }
                else {
                    // with-variable no-prior event evaluation
                    adapter = new ExprNodeAdapterSSVariables(
                        node,
                        exprEvaluatorContext,
                        filterEvalEnv.VariableManagementService);
                }
            }
            else {
                // pattern cases
                var variableServiceToUse = node.IsVariable ? filterEvalEnv.VariableManagementService : null;
                if (node.IsFilterStreamSubquery) {
                    adapter = GetLockableMultiStream(
                        node,
                        exprEvaluatorContext,
                        variableServiceToUse,
                        filterEvalEnv.ImportServiceRuntime,
                        events,
                        filterEvalEnv.Annotations,
                        agentInstanceId);
                }
                else {
                    if (node.IsUseLargeThreadingProfile) {
                        adapter = new ExprNodeAdapterMSNoTL(node, exprEvaluatorContext, events, variableServiceToUse);
                    }
                    else {
                        adapter = new ExprNodeAdapterMSPlain(node, exprEvaluatorContext, events, variableServiceToUse);
                    }
                }
            }

            if (!node.IsTableAccess) {
                return adapter;
            }

            // handle table
            return new ExprNodeAdapterWTableAccess(
                node,
                exprEvaluatorContext,
                adapter,
                filterEvalEnv.TableExprEvaluatorContext);
        }
コード例 #6
0
 public void RegisterBoolExpr(FilterSpecParamExprNode node)
 {
     ProcRegisterBoolExpr?.Invoke(node);
 }
コード例 #7
0
 internal ExprNodeAdapterSSPlain(
     FilterSpecParamExprNode factory,
     ExprEvaluatorContext evaluatorContext)
     : base(factory, evaluatorContext)
 {
 }
コード例 #8
0
 public void RegisterBoolExpr(
     int statementId,
     FilterSpecParamExprNode node)
 {
 }