private ViewState Idle()
{
return new ViewState("idle", false, (receive, message) =>
{
if (message is ReplayedMessage)
{
// we can get ReplayedMessage here if it was stashed by user during replay
// unwrap the payload
base.AroundReceive(receive, ((ReplayedMessage) message).Persistent.Payload);
}
else if (message is ScheduledUpdate)
{
var scheduled = (ScheduledUpdate) message;
ChangeStateToReplayStarted(false, scheduled.ReplayMax);
}
else if (message is Update)
{
var update = (Update)message;
ChangeStateToReplayStarted(update.IsAwait, update.ReplayMax);
}
else base.AroundReceive(receive, message);
});
}