public static bool TryParse(string line, out SseEvent sseEvent) { sseEvent = null; if (line.StartsWith("data:", StringComparison.OrdinalIgnoreCase)) { string data = line.Substring("data:".Length).Trim(); sseEvent = new SseEvent(EventType.Data, data); return true; } else if (line.StartsWith("id:", StringComparison.OrdinalIgnoreCase)) { string data = line.Substring("id:".Length).Trim(); sseEvent = new SseEvent(EventType.Id, data); return true; } return false; }
public static bool TryParse(string line, out SseEvent sseEvent) { sseEvent = null; if (line.StartsWith("data:", StringComparison.OrdinalIgnoreCase)) { string data = line.Substring("data:".Length).Trim(); sseEvent = new SseEvent(EventType.Data, data); return(true); } else if (line.StartsWith("id:", StringComparison.OrdinalIgnoreCase)) { string data = line.Substring("id:".Length).Trim(); sseEvent = new SseEvent(EventType.Id, data); return(true); } return(false); }
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; } } }