aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppStun.h
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-07-16 22:47:23 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-07-16 22:47:23 +0000
commit1f1d1e31597efd2acf6adbec2d5b33ecf78051a0 (patch)
tree0001c783ced5a259b2dc62cc195fd8372e57a987 /source/QXmppStun.h
parent573491206b0bdb4ee2360d8c41b0da6a4bdb26b3 (diff)
downloadqxmpp-1f1d1e31597efd2acf6adbec2d5b33ecf78051a0.tar.gz
overhaul STUN / ICE
Diffstat (limited to 'source/QXmppStun.h')
-rw-r--r--source/QXmppStun.h36
1 files changed, 29 insertions, 7 deletions
diff --git a/source/QXmppStun.h b/source/QXmppStun.h
index d383fdd9..507723f7 100644
--- a/source/QXmppStun.h
+++ b/source/QXmppStun.h
@@ -26,9 +26,11 @@
#include <QObject>
+#include "QXmppLogger.h"
#include "QXmppJingleIq.h"
class QUdpSocket;
+class QTimer;
class QXmppStunMessage;
/// \brief The QXmppStunSocket class represents an UDP socket capable
@@ -41,6 +43,7 @@ class QXmppStunSocket : public QObject
public:
QXmppStunSocket(bool iceControlling, QObject *parent=0);
+ ~QXmppStunSocket();
QList<QXmppJingleCandidate> localCandidates() const;
QString localUser() const;
@@ -51,7 +54,7 @@ public:
int component() const;
void setComponent(int component);
- void addRemoteCandidates(const QList<QXmppJingleCandidate> &candidates);
+ bool addRemoteCandidate(const QXmppJingleCandidate &candidate);
void setRemoteUser(const QString &user);
void setRemotePassword(const QString &password);
@@ -61,29 +64,48 @@ public:
qint64 writeDatagram(const QByteArray &datagram);
private slots:
- void slotReadyRead();
+ void checkCandidates();
+ void readyRead();
signals:
+ // This signal is emitted when a data packet is received.
void datagramReceived(const QByteArray &datagram, const QHostAddress &host, quint16 port);
+
+ /// This signal is emitted to send logging messages.
+ void logMessage(QXmppLogger::MessageType type, const QString &msg);
+
void ready();
private:
- void dumpMessage(const QXmppStunMessage &message, bool sent, const QHostAddress &host, quint16 port);
+ class Pair {
+ public:
+ Pair();
+ QString toString() const;
+
+ QIODevice::OpenMode checked;
+ quint32 priority;
+ QXmppJingleCandidate remote;
+ QXmppJingleCandidate reflexive;
+ QByteArray transaction;
+ };
+
+ Pair *addRemoteCandidate(const QHostAddress &host, quint16 port);
+ void debug(const QString &message, QXmppLogger::MessageType = QXmppLogger::DebugMessage);
+ qint64 writeStun(const QXmppStunMessage &message, QXmppStunSocket::Pair *pair);
int m_component;
- QIODevice::OpenMode m_openMode;
QString m_localUser;
QString m_localPassword;
+ Pair *m_activePair;
bool m_iceControlling;
- QList<QXmppJingleCandidate> m_remoteCandidates;
- QHostAddress m_remoteHost;
- quint16 m_remotePort;
+ QList<Pair*> m_pairs;
QString m_remoteUser;
QString m_remotePassword;
QUdpSocket *m_socket;
+ QTimer *m_timer;
};
#endif