#ifndef SSEPARSER_H #define SSEPARSER_H #include #include #include // Parser incrementale di Server-Sent Events (text/event-stream). // // Il WebUI di Hermes emette eventi nella forma: // id: : // event: token // data: {"text": "..."} // // piu' commenti di keepalive (": heartbeat") da ignorare. // // Logica pura, senza dipendenze da rete: alimentato con i chunk grezzi, // restituisce gli eventi completi. Testabile in locale (tests/sse_test.cpp). class SseParser { public: struct Event { QString name; // campo "event:" (vuoto => "message" SSE standard) QString data; // campi "data:" concatenati con "\n" QString id; // campo "id:" (cursore per replay) }; SseParser(); // Aggiunge un chunk e restituisce tutti gli eventi completati. QList feed(const QByteArray &chunk); void reset(); QByteArray pending() const; private: QByteArray m_buffer; }; #endif // SSEPARSER_H