Execute() public method

Executes pending events until the given limit is met. If there were remaining events, IsSuspended will return true.
public Execute ( int eventLimit ) : void
eventLimit int
return void
Beispiel #1
0
        private int RunBatch(int actorEventLimit)
        {
            try
            {
                var usingShellLimit = _shellEventLimit < actorEventLimit;
                var remainingQuota  = _interpreter.Execute(Math.Min(actorEventLimit, _shellEventLimit));

                if (Interpreter.IsCompleted)
                {
                    // Cannot stop right away if not completely subscribed
                    if (CanShutdown)
                    {
                        _interpreterCompleted = true;
                    }
                    else
                    {
                        _waitingForShutdown = true;
                        Materializer.ScheduleOnce(_settings.SubscriptionTimeoutSettings.Timeout,
                                                  () => Self.Tell(new ActorGraphInterpreter.Abort(this)));
                    }
                }
                else if (Interpreter.IsSuspended && !_resumeScheduled)
                {
                    SendResume(!usingShellLimit);
                }

                return(usingShellLimit ? actorEventLimit - _shellEventLimit + remainingQuota : remainingQuota);
            }
            catch (Exception reason)
            {
                TryAbort(reason);
                return(actorEventLimit - 1);
            }
        }