Files
harbour-hermes/src/sseparser.h
T
kaneda 9c6a1242f7 feat: v0.1.0 — client Sailfish per hermes-webui con voce
- ApiClient HTTP/SSE: login, sessioni, chat/start, stream SSE, transcribe, tts
- ChatModel: streaming live + risincronizzazione dallo stato del server
- CookieJar persistente (0600, mai la password); Settings
- Recorder OGG/Opus (fallback WAV/PCM, retry); Player TTS (QMediaPlayer)
- UI Silica: splash, login, sessioni, chat (dettatura + read-aloud), settings, cover
- Sailjail Internet;Audio;Microphone; icone; spec RPM; docs PROTOCOL/BUILD
- tests/core_test: unit parser SSE + integrazione live (probe :8899)
2026-09-12 07:11:20 +02:00

41 lines
1018 B
C++

#ifndef SSEPARSER_H
#define SSEPARSER_H
#include <QByteArray>
#include <QList>
#include <QString>
// Parser incrementale di Server-Sent Events (text/event-stream).
//
// Il WebUI di Hermes emette eventi nella forma:
// id: <stream_id>:<seq>
// event: token
// data: {"text": "..."}
// <riga vuota>
// 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<Event> feed(const QByteArray &chunk);
void reset();
QByteArray pending() const;
private:
QByteArray m_buffer;
};
#endif // SSEPARSER_H