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