private Message ReadSystemMessage(LiveMessageHeader header)
{
switch(header.MessageType)
{
case 1:
return ReadSetSessionTypeMessage(header);
case 2:
return ReadSetKeyframeMessage(header);
case 3:
return ReadSetStreamValidityMessage(header);
case 4:
return ReadAddCommentaryMessage(header);
case 5:
return ReadRefrehRateMessage(header);
case 6:
return ReadSetSystemMessageMessage(header);
case 7:
return ReadSetElapsedSessionTimeMessage(header);
case 9:
if(header.DataLength >= 15)
{
return StartSessionTimeCountdownMessage.Instance;
}
if(header.Colour > 0)
{
return ReadWeatherMessage(header);
}
if(header.DataLength > 0)
{
return ReadSetRemainingSessionTimeMessage(header);
}
break;
case 10:
return ReadSpeedCaptureMessage(header);
case 11:
if(header.Colour == 1)
{
return ReadSetSessionStatusMessage(header);
}
if(header.Colour == 4)
{
return ReadSetMinRequiredQuallyTimeMessage(header);
}
ReadAndDecryptBytes(header.DataLength);
Log.DebugFormat("soft-fail on unsupported type 11 system message: {0}, {1}",
header, DecodeLatin1(header.DataLength));
return Message.Empty;
case 12:
return ReadSetCopyrightMessage(header);
default:
Log.ErrorFormat("unsupported system message: {0}", header);
throw Guard.LiveMessageReader_UnsupportedSystemMessage(header);
}
Log.WarnFormat("soft-fail on unsupported system message: {0}", header);
return Message.Empty;
}