protected override bool Receive(object message)
{
var deadLetter = (DeadLetter)message;
var snd = deadLetter.Sender;
var rcp = deadLetter.Recipient;
_count++;
var done = _maxCount != int.MaxValue && _count >= _maxCount;
var doneMsg = done ? ", no more dead letters will be logged" : "";
if (!done)
{
var rcpPath = rcp == ActorRefs.NoSender ? "NoSender" : rcp.Path.ToString();
var sndPath = snd == ActorRefs.NoSender ? "NoSender" : snd.Path.ToString();
_eventStream.Publish(new Info(rcpPath, rcp.GetType(),
string.Format("Message {0} from {1} to {2} was not delivered. {3} dead letters encountered.{4}",
deadLetter.Message.GetType().Name, sndPath, rcpPath, _count, doneMsg)));
}
if (done)
{
((IInternalActorRef) Self).Stop();
}
return true;
}
}