コード例 #1
0
        public void Execute(UniformPair <EventBean[]> result)
        {
            if (_startMethodFast != null)
            {
                int countNew = 0;
                int countOld = 0;
                if (result != null)
                {
                    countNew = Count(result.First);
                    countOld = Count(result.Second);
                }

                Object[] paramList;
                if (!_startMethodHasEPStatement)
                {
                    paramList = new Object[] { countNew, countOld };
                }
                else
                {
                    paramList = new Object[] { _statement, countNew, countOld };
                }

                try
                {
                    _startMethodFast.Invoke(_subscriber, paramList);
                }
                catch (TargetInvocationException e)
                {
                    Handle(_statement.Name, Log, e, paramList, _subscriber, _startMethodFast);
                }
                catch (Exception e)
                {
                    HandleThrowable(Log, e, null, _subscriber, _startMethodFast);
                }
            }

            EventBean[] newData = null;
            EventBean[] oldData = null;
            if (result != null)
            {
                newData = result.First;
                oldData = result.Second;
            }

            if ((newData != null) && (newData.Length > 0))
            {
                for (int i = 0; i < newData.Length; i++)
                {
                    EventBean theEvent = newData[i];
                    if (theEvent is NaturalEventBean)
                    {
                        var      natural   = (NaturalEventBean)theEvent;
                        Object[] paramList = _deliveryConvertor.ConvertRow(natural.Natural);
                        try
                        {
                            _updateMethodFast.Invoke(_subscriber, paramList);
                        }
                        catch (TargetInvocationException e)
                        {
                            Handle(_statement.Name, Log, e, paramList, _subscriber, _updateMethodFast);
                        }
                        catch (Exception e)
                        {
                            HandleThrowable(Log, e, paramList, _subscriber, _updateMethodFast);
                        }
                    }
                }
            }

            if ((_updateRStreamMethodFast != null) && (oldData != null) && (oldData.Length > 0))
            {
                for (int i = 0; i < oldData.Length; i++)
                {
                    EventBean theEvent = oldData[i];
                    if (theEvent is NaturalEventBean)
                    {
                        var natural   = (NaturalEventBean)theEvent;
                        var paramList = _deliveryConvertor.ConvertRow(natural.Natural);
                        try
                        {
                            _updateRStreamMethodFast.Invoke(_subscriber, paramList);
                        }
                        catch (TargetInvocationException e)
                        {
                            Handle(_statement.Name, Log, e, paramList, _subscriber, _updateRStreamMethodFast);
                        }
                        catch (Exception e)
                        {
                            HandleThrowable(Log, e, paramList, _subscriber, _updateRStreamMethodFast);
                        }
                    }
                }
            }

            if (_endMethodFast != null)
            {
                var paramList = _endMethodHasEPStatement ? new object[] { _statement } : new object[] { };
                try
                {
                    _endMethodFast.Invoke(_subscriber, paramList);
                }
                catch (TargetInvocationException e)
                {
                    Handle(_statement.Name, Log, e, null, _subscriber, _endMethodFast);
                }
                catch (Exception e)
                {
                    HandleThrowable(Log, e, null, _subscriber, _endMethodFast);
                }
            }
        }