Atlas Game Manager
A game manager for f95 and dlsite written in c++
Loading...
Searching...
No Matches
NetworkManager.hpp
Go to the documentation of this file.
1//
2// Created by kj16609 on 12/9/23.
3//
4
5#pragma once
6
7#include <QNetworkAccessManager>
8#include <QPromise>
9#include <QTimer>
10
11#include <queue>
12
13#include "core/Types.hpp"
15
16namespace atlas::network
17{
18
19 class Downloader final : public QObject
20 {
21 Q_OBJECT
22
23 QUrl m_url {};
24 QPromise< QImage >* promise {};
25 QNetworkReply* m_reply { nullptr };
26 std::unique_ptr< ProgressSignaler > m_signaler { nullptr };
27
28 Q_DISABLE_COPY_MOVE( Downloader )
29
30 public:
31
32 Downloader() = default;
33
34 QFuture< QImage > getImage( const QUrl& url );
35
36 void run( QNetworkAccessManager& manager );
37
38 private slots:
39 void downloadFinished();
40 void downloadProgress( qint64 bytesReceived, qint64 bytesTotal );
41 };
42
43 class NetworkManager : public QObject
44 {
45 Q_OBJECT
46
47 std::unique_ptr< QNetworkAccessManager > m_access_manager {};
48
49 std::queue< std::unique_ptr< Downloader > > download_queue;
50
51 QTimer timer {};
52
53 Q_DISABLE_COPY_MOVE( NetworkManager )
54
55 public:
56
58
59 QNetworkAccessManager& accessManager() { return *m_access_manager; }
60
61 static NetworkManager& instance();
62
63 QFuture< QImage > getImage( const QUrl& url );
64
65 private slots:
66 void onTimeout();
67 void setup();
68 };
69
70} // namespace atlas::network
Definition Game.hpp:17
Definition NetworkManager.hpp:20
void run(QNetworkAccessManager &manager)
Definition NetworkManager.cpp:152
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
Definition NetworkManager.cpp:160
void downloadFinished()
Definition NetworkManager.cpp:88
QPromise< QImage > * promise
Definition NetworkManager.hpp:24
QFuture< QImage > getImage(const QUrl &url)
Definition NetworkManager.cpp:72
QUrl m_url
Definition NetworkManager.hpp:23
QNetworkReply * m_reply
Definition NetworkManager.hpp:25
std::unique_ptr< ProgressSignaler > m_signaler
Definition NetworkManager.hpp:26
Definition NetworkManager.hpp:44
void setup()
Definition NetworkManager.cpp:35
NetworkManager()
Definition NetworkManager.cpp:45
QTimer timer
Definition NetworkManager.hpp:51
QNetworkAccessManager & accessManager()
Definition NetworkManager.hpp:59
static NetworkManager & instance()
Definition NetworkManager.cpp:22
std::unique_ptr< QNetworkAccessManager > m_access_manager
Definition NetworkManager.hpp:47
void onTimeout()
Definition NetworkManager.cpp:51
std::queue< std::unique_ptr< Downloader > > download_queue
Definition NetworkManager.hpp:49
QFuture< QImage > getImage(const QUrl &url)
Definition NetworkManager.cpp:63
Definition NetworkManager.cpp:15