diff options
| author | oldmud0 <oldmud0@users.noreply.github.com> | 2019-01-02 09:40:38 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-02 09:40:38 -0600 |
| commit | 4d93f059c01664ad074cf467e79a63b85e86beb0 (patch) | |
| tree | 57b8a9760796937e66e393b3bc00f4bee4337bdf /include/networkmanager.h | |
| parent | 6f1bce5882676ea7affe717a2f5a00b8c3b7fe12 (diff) | |
| parent | ec1057b5d7e1d39963275bc2cbd79a53cf6f3f5c (diff) | |
Merge pull request #54 from OmniTroid/master
Restructuring + better cross-platform support
Diffstat (limited to 'include/networkmanager.h')
| -rw-r--r-- | include/networkmanager.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/include/networkmanager.h b/include/networkmanager.h new file mode 100644 index 0000000..e28abfd --- /dev/null +++ b/include/networkmanager.h @@ -0,0 +1,86 @@ +#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 "aopacket.h" +#include "aoapplication.h" + +#include <QTcpSocket> +#include <QDnsLookup> +#include <QTime> +#include <QTimer> +#include <cstring> + +class NetworkManager : public QObject +{ + Q_OBJECT + +public: + NetworkManager(AOApplication *parent); + ~NetworkManager(); + + AOApplication *ao_app; + QTcpSocket *ms_socket; + 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 + + const int ms_port = 27016; + const int timeout_milliseconds = 2000; + + const int ms_reconnect_delay_ms = 7000; + + // kind of arbitrary max buffer size + const size_t buffer_max_size = 16384; + + bool ms_partial_packet = false; + QString ms_temp_packet = ""; + + 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 ship_server_packet(QString p_packet); + +signals: + void ms_connect_finished(bool success, bool will_retry); + +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(); +}; + +#endif // NETWORKMANAGER_H |
