private void ProcessChunks()
{
//Debug.WriteLine("AsyncStreamReader: ProcessChunks");
while (Reading && m_buffer.HasChunks)
{
string _line = m_buffer.ReadLine();
// No new lines in the buffer so stop processing
if (_line == null)
break;
if (!Reading)
return;
// Try parsing the sseEvent
SseEvent _sseEvent;
if (!SseEvent.TryParse(_line, out _sseEvent))
continue;
if (!Reading)
return;
//Debug.WriteLine("AsyncStreamReader: SSE READ [{0}]", _sseEvent.ToString());
switch (_sseEvent.Type)
{
case EventType.Id:
m_connection.MessageId = _sseEvent.Data;
break;
case EventType.Data:
if (_sseEvent.Data.Equals("initialized", StringComparison.OrdinalIgnoreCase))
{
if (m_initializeCallback != null)
// Mark the connection as started
m_initializeCallback();
}
else
{
if (Reading)
{
// We don't care about timeout messages here since it will just reconnect
// as part of being a long running request
bool _timedOutReceived;
bool _disconnectReceived;
HttpBasedTransport.ProcessResponse(
m_connection,
_sseEvent.Data,
out _timedOutReceived,
out _disconnectReceived);
if (_disconnectReceived)
m_connection.Stop();
if (_timedOutReceived)
return;
}
}
break;
}
}
}
}