diff options
| author | Dima Krasner <dima@dimakrasner.com> | 2023-11-05 19:39:06 +0200 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2023-11-09 08:20:12 +0100 |
| commit | 1a45619461fd6cb6c073695e7ae6a9e07aa445d7 (patch) | |
| tree | e427461c36da6b061442227576fd62a94d25ee84 /src/protocols/guppyclient.hpp | |
| parent | 40448d458c4428633f337fdef707ef9e1c87ece8 (diff) | |
| download | kristall-1a45619461fd6cb6c073695e7ae6a9e07aa445d7.tar.gz | |
add ugly guppy:// v0.4 support
Diffstat (limited to 'src/protocols/guppyclient.hpp')
| -rw-r--r-- | src/protocols/guppyclient.hpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/protocols/guppyclient.hpp b/src/protocols/guppyclient.hpp new file mode 100644 index 0000000..ebe76cb --- /dev/null +++ b/src/protocols/guppyclient.hpp @@ -0,0 +1,47 @@ +#ifndef GUPPYCLIENT_HPP +#define GUPPYCLIENT_HPP + +#include <QObject> +#include <QUdpSocket> +#include <QUrl> +#include <QTimer> + +#include "protocolhandler.hpp" + +class GuppyClient : public ProtocolHandler +{ + Q_OBJECT +public: + explicit GuppyClient(QObject *parent = nullptr); + + ~GuppyClient() override; + + bool supportsScheme(QString const & scheme) const override; + + bool startRequest(QUrl const & url, RequestOptions options) override; + + bool isInProgress() const override; + + bool cancelRequest() override; + +private: // slots + void on_connected(); + void on_readRead(); + void on_finished(); + void on_timerTick(); + void on_socketError(QAbstractSocket::SocketError errorCode); + + +private: + QUdpSocket socket; + QHash<long, QByteArray> chunks; + QByteArray body; + QUrl requested_url; + QByteArray request; + bool was_cancelled; + int prev_seq, first_seq, last_seq; + QString mime; + QTimer timer; +}; + +#endif // GUPPYCLIENT_HPP |
