aboutsummaryrefslogtreecommitdiff
path: root/networkmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'networkmanager.h')
-rw-r--r--networkmanager.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/networkmanager.h b/networkmanager.h
index 4bfebc67..00a7a960 100644
--- a/networkmanager.h
+++ b/networkmanager.h
@@ -1,12 +1,20 @@
#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
+
#include "aopacket.h"
#include "aoapplication.h"
#include <QTcpSocket>
#include <QDnsLookup>
#include <QTime>
+#include <QTimer>
class NetworkManager : public QObject
{
@@ -20,11 +28,16 @@ public:
QTcpSocket *ms_socket;
QTcpSocket *server_socket;
QDnsLookup *ms_dns;
+ QTimer *ms_reconnect_timer;
+
+ const QString ms_srv_hostname = "_aoms._tcp.aceattorneyonline.com";
+ const QString ms_nosrv_hostname = "master.aceattorneyonline.com";
- QString ms_hostname = "_aoms._tcp.aceattorneyonline.com";
- int ms_port = 27016;
+ const int ms_port = 27016;
const int timeout_milliseconds = 2000;
+ const int ms_reconnect_delay_ms = 5000;
+
bool ms_partial_packet = false;
QString ms_temp_packet = "";
@@ -41,7 +54,7 @@ public slots:
void ship_server_packet(QString p_packet);
signals:
- void ms_connect_finished(bool success);
+ void ms_connect_finished(bool success, bool will_retry);
private:
void perform_srv_lookup();
@@ -50,6 +63,9 @@ 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();
};
#endif // NETWORKMANAGER_H