private Desequenced Resequence(Desequenced desequenced)
{
if (desequenced.SequenceNr == _delivered + 1)
{
_delivered = desequenced.SequenceNr;
desequenced.Target.Tell(desequenced.Message, desequenced.Sender);
}
else
{
_delayed.Add(desequenced.SequenceNr, desequenced);
}
Desequenced d;
var delivered = _delivered + 1;
if (_delayed.TryGetValue(delivered, out d))
{
_delayed.Remove(delivered);
return d;
}
return null;
}
}