File indexing completed on 2025-02-16 04:23:13

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #ifndef KUNIFIEDPUSH_SERVERSENTEVENTSSTREAM_H
0007 #define KUNIFIEDPUSH_SERVERSENTEVENTSSTREAM_H
0008 
0009 #include <QObject>
0010 
0011 class QIODevice;
0012 
0013 namespace KUnifiedPush {
0014 
0015 class SSEMessage
0016 {
0017 public:
0018     QByteArray event;
0019     QByteArray data;
0020 };
0021 
0022 /** Sever-sent Events (SSE) stream
0023  *  @see https://en.wikipedia.org/wiki/Server-sent_events
0024  */
0025 class ServerSentEventsStream : public QObject
0026 {
0027     Q_OBJECT
0028 public:
0029     explicit ServerSentEventsStream(QObject *parent = nullptr);
0030     ~ServerSentEventsStream();
0031 
0032     void read(QIODevice *device);
0033 
0034 Q_SIGNALS:
0035     void messageReceived(const KUnifiedPush::SSEMessage &msg);
0036 
0037 private:
0038     void processBuffer();
0039 
0040     QByteArray m_buffer;
0041 };
0042 
0043 }
0044 
0045 Q_DECLARE_METATYPE(KUnifiedPush::SSEMessage)
0046 
0047 #endif // KUNIFIEDPUSH_SERVERSENTEVENTSSTREAM_H