aboutsummaryrefslogtreecommitdiff
path: root/include/networkmanager.h
diff options
context:
space:
mode:
authoroldmud0 <oldmud0@users.noreply.github.com>2022-01-07 20:17:02 -0600
committerGitHub <noreply@github.com>2022-01-07 20:17:02 -0600
commitc80a0195749acda08ea414db575d10bd0033f062 (patch)
tree0ae46296493698df61763ab1c33f453a83a6e8dd /include/networkmanager.h
parent9f09af1c39e70d68f3ddf9bdc38a12e2b9ab2470 (diff)
parent0cebf8c91e80d45b9fbaaa658ce5657c933f0b69 (diff)
Merge pull request #619 from AttorneyOnline/feature/http-ms
Switch to HTTP-based server list
Diffstat (limited to 'include/networkmanager.h')
-rw-r--r--include/networkmanager.h73
1 files changed, 27 insertions, 46 deletions
diff --git a/include/networkmanager.h b/include/networkmanager.h
index ed57a956..1e1a60b7 100644
--- a/include/networkmanager.h
+++ b/include/networkmanager.h
@@ -1,83 +1,64 @@
#ifndef NETWORKMANAGER_H
#define NETWORKMANAGER_H
-// Qt for Android has stubbed QDnsLookup. This is not documented in any part of
-// their wiki. This prevents SRV lookup/failover behavior from functioning.
-// https://bugreports.qt.io/browse/QTBUG-56143
-#ifndef ANDROID
-#define MS_FAILOVER_SUPPORTED
-#endif
-
-//#define LOCAL_MS
-
-#ifdef LOCAL_MS
-#undef MS_FAILOVER_SUPPORTED
-#endif
-
#include "aoapplication.h"
#include "aopacket.h"
#include <QDnsLookup>
+#include <QNetworkAccessManager>
#include <QTcpSocket>
#include <QTime>
#include <QTimer>
+
#include <cstring>
+enum MSDocumentType {
+ PrivacyPolicy,
+ Motd,
+ ClientVersion
+};
+
class NetworkManager : public QObject {
Q_OBJECT
public:
- NetworkManager(AOApplication *parent);
- ~NetworkManager();
+ explicit NetworkManager(AOApplication *parent);
+ ~NetworkManager() = default;
AOApplication *ao_app;
- QTcpSocket *ms_socket;
+ QNetworkAccessManager *http;
QTcpSocket *server_socket;
- QDnsLookup *ms_dns;
- QTimer *ms_reconnect_timer;
-
- const QString ms_srv_hostname = "_aoms._tcp.aceattorneyonline.com";
-#ifdef LOCAL_MS
- QString ms_nosrv_hostname = "localhost";
-#else
- QString ms_nosrv_hostname = "master.aceattorneyonline.com";
-#endif
+ QTimer *heartbeat_timer;
- const quint16 ms_port = 27016;
- const int timeout_milliseconds = 2000;
+ const QString DEFAULT_MS_BASEURL = "https://servers.aceattorneyonline.com";
+ QString ms_baseurl = DEFAULT_MS_BASEURL;
- // in seconds
- const int ms_reconnect_delay = 7;
-
- bool ms_partial_packet = false;
- QString ms_temp_packet = "";
+ const int heartbeat_interval = 60 * 5;
bool partial_packet = false;
QString temp_packet = "";
unsigned int s_decryptor = 5;
- void connect_to_master();
- void connect_to_master_nosrv();
void connect_to_server(server_type p_server);
public slots:
- void ship_ms_packet(QString p_packet);
+ void get_server_list(const std::function<void()> &cb);
void ship_server_packet(QString p_packet);
+ void handle_server_packet();
-signals:
- void ms_connect_finished(bool success, bool will_retry);
+ void request_document(MSDocumentType document_type,
+ const std::function<void(QString)> &cb);
+ void send_heartbeat();
+private slots:
+ void ms_request_finished(QNetworkReply *reply,
+ const std::function<void()> &cb);
private:
- void perform_srv_lookup();
-
-private slots:
- void on_srv_lookup();
- void handle_ms_packet();
- void handle_server_packet();
- void on_ms_nosrv_connect_success();
- void on_ms_socket_error(QAbstractSocket::SocketError error);
- void retry_ms_connect();
+ QString get_user_agent() const {
+ return QStringLiteral("AttorneyOnline/%1 (Desktop)")
+ .arg(ao_app->get_version_string());
+ }
};
#endif // NETWORKMANAGER_H