diff options
| author | TrickyLeifa <date.epoch@gmail.com> | 2024-05-15 00:00:17 +0200 |
|---|---|---|
| committer | TrickyLeifa <date.epoch@gmail.com> | 2024-05-15 00:04:16 +0200 |
| commit | c9f52b7223685d2e7fca925594171f94dd8c6e3b (patch) | |
| tree | 740bb32a40da98a4d52836432f59a16b31333900 /src/networkmanager.h | |
| parent | 951766666621fa77e257e6b5616fe4ab1eb2a52f (diff) | |
Ported to CMake, ...
* Ported the project to CMake
* Android and Mac support dropped for the time
being.
* Tests, BASS and Discord-RPC are now options
* Restructured and reformated the project.
* Merged `include` and `src`
* Renamed `resource` to `data`
* Renamed various files
* External libraries headers are no longer included in `src`
* Replaced header guards with #pragma once
* Multiple refactors (keywords, headers)
* Added Qt6 compatibility
* Removed various unused functions and headers
* Reworked AOPacket
* When content is passed to AOPacket, it should be ensured that the content is already decoded.
* Encoding/decoding are now static methods.
* Fixed various memory leaks
* Removed animation code for AOImage
* AOImage is always using static images
* Simplified ChatLogPiece
Diffstat (limited to 'src/networkmanager.h')
| -rw-r--r-- | src/networkmanager.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/networkmanager.h b/src/networkmanager.h new file mode 100644 index 00000000..984f30f8 --- /dev/null +++ b/src/networkmanager.h @@ -0,0 +1,72 @@ +#pragma once + +#include "aoapplication.h" +#include "aopacket.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); + ~NetworkManager() = default; + + void connect_to_server(server_type p_server); + void disconnect_from_server(); + +public Q_SLOTS: + void get_server_list(); + void ship_server_packet(AOPacket p_packet); + void join_to_server(); + void handle_server_packet(const QString &p_data); + + 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; + + union + { + QWebSocket *ws; + QTcpSocket *tcp; + } server_socket; + connection_type active_connection_type; + bool connected = false; + + 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; + + bool partial_packet = false; + QString temp_packet; + + unsigned int s_decryptor = 5; + + QString get_user_agent() const { return QStringLiteral("AttorneyOnline/%1 (Desktop)").arg(ao_app->get_version_string()); } +}; |
