/// <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); }
/// <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); }