aboutsummaryrefslogtreecommitdiff
path: root/src/networkmanager.h
diff options
context:
space:
mode:
authorSalanto <62221668+Salanto@users.noreply.github.com>2024-05-18 03:33:43 +0200
committerGitHub <noreply@github.com>2024-05-18 03:33:43 +0200
commit51338e30e046f1a62c84049b34577f0f3b5db6e3 (patch)
tree283c95f8f776ed852d03a816388695afd65c0f73 /src/networkmanager.h
parent469e293a1885e49f1d5994d41ac7cfc9f4666952 (diff)
parentf9c7205210fb9f768f583065971ece09e6b5eb03 (diff)
Merge pull request #957 from AttorneyOnline/kaleidoscope
The Kaleidoscope - Hell, it's about time.
Diffstat (limited to 'src/networkmanager.h')
-rw-r--r--src/networkmanager.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/networkmanager.h b/src/networkmanager.h
new file mode 100644
index 0000000..4ec539f
--- /dev/null
+++ b/src/networkmanager.h
@@ -0,0 +1,63 @@
+#pragma once
+
+#include "aoapplication.h"
+#include "aopacket.h"
+#include "net/netconnection.h"
+
+#include <QDnsLookup>
+#include <QNetworkAccessManager>
+#include <QTime>
+#include <QTimer>
+#include <QtWebSockets/QWebSocket>
+
+#include <cstring>
+
+enum MSDocumentType
+{
+ PrivacyPolicy,
+ Motd,
+ ClientVersion
+};
+
+class NetworkManager : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit NetworkManager(AOApplication *parent);
+
+ void connect_to_server(ServerInfo p_server);
+ void disconnect_from_server();
+
+ QString get_user_agent() const;
+
+public Q_SLOTS:
+ void get_server_list();
+ void ship_server_packet(AOPacket packet);
+ void join_to_server();
+ void handle_server_packet(AOPacket packet);
+
+ void request_document(MSDocumentType document_type, const std::function<void(QString)> &cb);
+ void send_heartbeat();
+
+Q_SIGNALS:
+ void server_connected(bool state);
+
+private Q_SLOTS:
+ void ms_request_finished(QNetworkReply *reply);
+
+private:
+ AOApplication *ao_app;
+ QNetworkAccessManager *http;
+
+ NetConnection *m_connection = nullptr;
+
+ QTimer *heartbeat_timer;
+
+ const QString DEFAULT_MS_BASEURL = "http://servers.aceattorneyonline.com";
+ QString ms_baseurl = DEFAULT_MS_BASEURL;
+
+ const int heartbeat_interval = 60 * 5 * 1000;
+
+ unsigned int s_decryptor = 5;
+};