public IEnumerable<Message> NextMessage()
{
if (!_started)
Start();
while(true)
{
Tuple<Int32, Message> result;
if (!Messages.TryDequeue(out result))
{
Thread.Sleep(10);
continue;
}
yield return result.Item2;
_streamState.OffsetByPartition[result.Item1] += Message.CalculateOnDiskMessageLength(result.Item2.Payload.Length);
_stateStorage.WriteStreamState(_streamState, result.Item1);
}
}