protected override Message ReadImpl()
{
switch(State)
{
case LiveMessageReaderState.Reading:
break;
case LiveMessageReaderState.Closed:
return null;
case LiveMessageReaderState.Uninitialised:
Initialise();
break;
default:
throw Guard.ArgumentOutOfRange("State");
}
var message = DequeueOrReadNextMessage();
// TODO message enqueued from a keyframe should not be subject to post processing.
PostProcessMessage(message, true);
return message;
}