Exemplo n.º 1
0
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="message">TBD</param>
        /// <exception cref="AsyncReplayTimeoutException">
        /// This exception is thrown when the replay timed out due to inactivity.
        /// </exception>
        /// <returns>TBD</returns>
        protected override bool Receive(object message)
        {
            switch (message)
            {
            case ReplayedMessage rm:
                //rm.Persistent
                _replayCallback(rm.Persistent);
                return(true);

            case RecoverySuccess _:
                _replayCompletionPromise.SetResult(new object());
                Context.Stop(Self);
                return(true);

            case ReplayMessagesFailure failure:
                _replayCompletionPromise.SetException(failure.Cause);
                Context.Stop(Self);
                return(true);

            case ReceiveTimeout _:
                var timeoutException = new AsyncReplayTimeoutException($"Replay timed out after {_replayTimeout.TotalSeconds}s of inactivity");
                _replayCompletionPromise.SetException(timeoutException);
                Context.Stop(Self);
                return(true);
            }
            return(false);
        }
Exemplo n.º 2
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="message">TBD</param>
 /// <exception cref="AsyncReplayTimeoutException">
 /// This exception is thrown when the replay timed out due to inactivity.
 /// </exception>
 /// <returns>TBD</returns>
 protected override bool Receive(object message)
 {
     if (message is ReplayedMessage rm)
     {
         //rm.Persistent
         _replayCallback(rm.Persistent);
     }
     else if (message is RecoverySuccess)
     {
         _replayCompletionPromise.SetResult(new object());
         Context.Stop(Self);
     }
     else if (message is ReplayMessagesFailure)
     {
         var failure = message as ReplayMessagesFailure;
         _replayCompletionPromise.SetException(failure.Cause);
         Context.Stop(Self);
     }
     else if (message is ReceiveTimeout)
     {
         var timeoutException = new AsyncReplayTimeoutException($"Replay timed out after {_replayTimeout.TotalSeconds}s of inactivity");
         _replayCompletionPromise.SetException(timeoutException);
         Context.Stop(Self);
     }
     else
     {
         return(false);
     }
     return(true);
 }