private bool ParseFirstLine(string line)
{
var parts = line.Split(' ');
if (parts.Length < 3)
{
FATAL("Incorrect first line: {0}",line);
return false;
}
switch (parts[0])
{
case RTSP_VERSION_1_0:
uint result;
if (!uint.TryParse(parts[1],out result))
{
FATAL("Invalid RTSP code: {0}", (parts[1]));
return false;
}
var reason = string.Join(" ", parts.Skip(2));
_inboundHeaders[RTSP_FIRST_LINE,RTSP_VERSION] = parts[0];
_inboundHeaders[RTSP_FIRST_LINE,RTSP_STATUS_CODE] = result;
_inboundHeaders[RTSP_FIRST_LINE,RTSP_STATUS_CODE_REASON] = reason;
_inboundHeaders["isRequest"] = false;
return true;
case RTSP_METHOD_DESCRIBE:
case RTSP_METHOD_OPTIONS:
case RTSP_METHOD_PAUSE:
case RTSP_METHOD_PLAY:
case RTSP_METHOD_SETUP:
case RTSP_METHOD_TEARDOWN:
case RTSP_METHOD_RECORD:
case RTSP_METHOD_ANNOUNCE:
if (parts[2] != RTSP_VERSION_1_0)
{
FATAL("RTSP version not supported:{0}", (parts[2]));
return false;
}
_inboundHeaders[RTSP_FIRST_LINE,RTSP_METHOD] = parts[0];
_inboundHeaders[RTSP_FIRST_LINE,RTSP_URL] = parts[1];
_inboundHeaders[RTSP_FIRST_LINE,RTSP_VERSION] = parts[2];
_inboundHeaders["isRequest"] = true;
return true;
default:
FATAL("Incorrect first line: {0}", (line));
return false;
}
}
private bool HandleRTSPMessage()