diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-12-03 18:36:53 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-12-03 18:36:53 +0000 |
| commit | dab9a269c17e0c8ab26f8c295afecef45dc23915 (patch) | |
| tree | 90c79d32e09edff6497aed5333596d4069083dff /src/QXmppStun.h | |
| parent | e12c89d020dd090af7de37627b0eccd0ace33df2 (diff) | |
| download | qxmpp-dab9a269c17e0c8ab26f8c295afecef45dc23915.tar.gz | |
overhaul ICE support to reserve consecutive ports (required for RTP/RTCP pairs)
Diffstat (limited to 'src/QXmppStun.h')
| -rw-r--r-- | src/QXmppStun.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/QXmppStun.h b/src/QXmppStun.h index aec8e8a1..c0744b19 100644 --- a/src/QXmppStun.h +++ b/src/QXmppStun.h @@ -39,14 +39,32 @@ class QTimer; class QXmppStunMessage { public: + enum MethodType { + Binding = 0x1, + SharedSecret = 0x2, + Allocate = 0x3, + }; + + enum MessageType { + Request = 0x000, + Indication = 0x010, + Response = 0x100, + Error = 0x110, + }; + QXmppStunMessage(); + quint32 cookie() const; + void setCookie(quint32 cookie); + QByteArray id() const; void setId(const QByteArray &id); quint16 type() const; void setType(quint16 type); + void setChangeRequest(quint32 changeRequest); + QByteArray encode(const QString &password = QString(), bool addFingerprint = true) const; bool decode(const QByteArray &buffer, const QString &password = QString(), QStringList *errors = 0); QString toString() const; @@ -73,8 +91,12 @@ public: bool useCandidate; private: + quint32 m_cookie; QByteArray m_id; quint16 m_type; + + quint32 m_changeRequest; + bool m_haveChangeRequest; }; class QXmppStunSocket : public QXmppLoggable @@ -97,12 +119,15 @@ public: void setRemoteUser(const QString &user); void setRemotePassword(const QString &password); - bool bind(); void close(); void connectToHost(); bool isConnected() const; + void setSockets(QList<QUdpSocket*> sockets); qint64 writeDatagram(const QByteArray &datagram); + static QList<QHostAddress> discoverAddresses(); + static QList<QUdpSocket*> reservePorts(const QList<QHostAddress> &addresses, int count, QObject *parent = 0); + private slots: void checkCandidates(); void readyRead(); @@ -141,6 +166,7 @@ private: QString m_localPassword; Pair *m_activePair; + Pair *m_fallbackPair; bool m_iceControlling; QList<Pair*> m_pairs; QString m_remoteUser; @@ -177,6 +203,7 @@ public: void setRemoteUser(const QString &user); void setRemotePassword(const QString &password); + bool bind(const QList<QHostAddress> &addresses); void close(); void connectToHost(); bool isConnected() const; |
