Akka.Persistence.PersistentView.ReplayStarted C# (CSharp) Метод

ReplayStarted() приватный Метод

Processes replayed message, if any. The actor's PersistentView.Receive is invoked with the replayed events. If replay succeeds it got highest stored sequence number response from the journal and then switche it switches to Idle state. If replay succeeds the OnReplaySuccess callback method is called, otherwise OnReplayError is called and remaining replay events are consumed (ignored). All incoming messages are stashed when shouldAwait is true.
private ReplayStarted ( bool shouldAwait ) : ViewState
shouldAwait bool
Результат ViewState
        private ViewState ReplayStarted(bool shouldAwait)
        {
            return new ViewState("replay started", true, (receive, message) =>
            {
                if (message is ReplayedMessage)
                {
                    var replayedMessage = (ReplayedMessage)message;
                    try
                    {
                        UpdateLastSequenceNr(replayedMessage.Persistent);
                        base.AroundReceive(receive, replayedMessage.Persistent.Payload);
                    }
                    catch (Exception ex)
                    {
                        ChangeState(IgnoreRemainingReplay(ex));
                    }
                }
                else if (message is RecoverySuccess)
                {
                    OnReplayComplete();
                }
                else if (message is ReplayMessagesFailure)
                {
                    var replayFailureMessage = (ReplayMessagesFailure)message;
                    try
                    {
                        OnReplayError(replayFailureMessage.Cause);
                    }
                    finally
                    {
                        OnReplayComplete();
                    }
                }
                else if (message is ScheduledUpdate)
                {
                    // ignore
                }
                else if (message is Update)
                {
                    var u = (Update) message;
                    if (u.IsAwait)
                    {
                        _internalStash.Stash();
                    }
                }
                else
                {
                    if (shouldAwait)
                    {
                        _internalStash.Stash();
                    }
                    else
                    {
                        try
                        {
                            base.AroundReceive(receive, message);
                        }
                        catch (Exception ex)
                        {
                            ChangeState(IgnoreRemainingReplay(ex));
                        }
                    }
                }
            });
        }