summaryrefslogtreecommitdiffstats
path: root/src/client/net/serverdiscovery.h
diff options
context:
space:
mode:
authorBjörn Hagemeister2014-06-02 15:27:23 +0200
committerBjörn Hagemeister2014-06-02 15:27:23 +0200
commit4778d18cc1287e9a3fd2c3a7eec5f90e685c3f62 (patch)
treec798ea39460f49f6f6e34f7f909470923bf68e5f /src/client/net/serverdiscovery.h
parentPut Check if manager is running on machine into method. (diff)
parentUncheck lock if any action is performed. (diff)
downloadpvs2-4778d18cc1287e9a3fd2c3a7eec5f90e685c3f62.tar.gz
pvs2-4778d18cc1287e9a3fd2c3a7eec5f90e685c3f62.tar.xz
pvs2-4778d18cc1287e9a3fd2c3a7eec5f90e685c3f62.zip
Merge branch 'master' of git.openslx.org:pvs2
Conflicts: src/server/mainwindow/mainwindow.h
Diffstat (limited to 'src/client/net/serverdiscovery.h')
-rw-r--r--src/client/net/serverdiscovery.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/client/net/serverdiscovery.h b/src/client/net/serverdiscovery.h
new file mode 100644
index 0000000..093b841
--- /dev/null
+++ b/src/client/net/serverdiscovery.h
@@ -0,0 +1,51 @@
+#ifndef SERVERDISCOVERY_H
+#define SERVERDISCOVERY_H
+
+#include <QObject>
+#include <QUdpSocket>
+#include <QTimer>
+#include "../../shared/networkmessage.h"
+
+class ServerDiscovery : public QObject
+{
+ Q_OBJECT
+
+ public:
+ enum class ErrorType{
+ InvalidIpList,
+ InvalidHash
+ };
+
+ explicit ServerDiscovery(QObject *parent = 0);
+ ~ServerDiscovery();
+
+ void start(const QByteArray& sessionName);
+ void stop();
+ inline bool isActive(){ return _discoveryTimer.isActive(); }
+
+ private:
+ QTimer _discoveryTimer;
+ int _hashErrorCount;
+ int _ipErrorCount;
+ QByteArray _nameBytes;
+ QByteArray _salt2;
+ QUdpSocket _discoverySocket;
+ NetworkMessage _packet;
+
+ static const int UDPBUFSIZ = 9000;
+ static const int SALT_LEN = 18;
+
+public:
+ signals:
+ void serverDetected(const QString& host, const quint16 port, const QByteArray& sessionName, const QByteArray& certHash);
+ void error(ErrorType e, int count);
+
+ public slots:
+
+ private slots:
+ void doDiscovery();
+ void onUdpReadyRead();
+
+};
+
+#endif // SERVERDISCOVERY_H