diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-12-06 09:16:44 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-12-06 09:16:44 +0000 |
| commit | e207ab2c6fbdf046129978d812936af9d34c302f (patch) | |
| tree | 73dec16b42e245023ffac39aa13ca78b0205b0c4 /src/QXmppStun.h | |
| parent | dab9a269c17e0c8ab26f8c295afecef45dc23915 (diff) | |
| download | qxmpp-e207ab2c6fbdf046129978d812936af9d34c302f.tar.gz | |
improve STUN / ICE code documentation
Diffstat (limited to 'src/QXmppStun.h')
| -rw-r--r-- | src/QXmppStun.h | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/src/QXmppStun.h b/src/QXmppStun.h index c0744b19..8e70cf9a 100644 --- a/src/QXmppStun.h +++ b/src/QXmppStun.h @@ -63,8 +63,17 @@ public: quint16 type() const; void setType(quint16 type); + // attributes + + quint32 changeRequest() const; void setChangeRequest(quint32 changeRequest); + quint32 priority() const; + void setPriority(quint32 priority); + + QString software() const; + void setSoftware(const QString &software); + 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,7 +82,6 @@ public: // attributes int errorCode; QString errorPhrase; - quint32 priority; QByteArray iceControlling; QByteArray iceControlled; QHostAddress changedHost; @@ -86,7 +94,6 @@ public: quint16 sourcePort; QHostAddress xorMappedHost; quint16 xorMappedPort; - QString software; QString username; bool useCandidate; @@ -95,17 +102,23 @@ private: QByteArray m_id; quint16 m_type; + QSet<quint16> m_attributes; quint32 m_changeRequest; - bool m_haveChangeRequest; + quint32 m_priority; + QString m_software; }; -class QXmppStunSocket : public QXmppLoggable +/// The QXmppIceComponent class represents a piece of a media stream +/// requiring a single transport address, as defined by RFC 2525 +/// (Interactive Connectivity Establishment). + +class QXmppIceComponent : public QXmppLoggable { Q_OBJECT public: - QXmppStunSocket(bool iceControlling, QObject *parent=0); - ~QXmppStunSocket(); + QXmppIceComponent(bool controlling, QObject *parent=0); + ~QXmppIceComponent(); void setStunServer(const QHostAddress &host, quint16 port); QList<QXmppJingleCandidate> localCandidates() const; @@ -119,15 +132,17 @@ public: void setRemoteUser(const QString &user); void setRemotePassword(const QString &password); - 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); +public slots: + void close(); + void connectToHost(); + qint64 sendDatagram(const QByteArray &datagram); + private slots: void checkCandidates(); void readyRead(); @@ -157,7 +172,7 @@ private: }; Pair *addRemoteCandidate(QUdpSocket *socket, const QHostAddress &host, quint16 port); - qint64 writeStun(const QXmppStunMessage &message, QXmppStunSocket::Pair *pair); + qint64 writeStun(const QXmppStunMessage &message, QXmppIceComponent::Pair *pair); int m_component; @@ -192,8 +207,9 @@ class QXmppIceConnection : public QXmppLoggable public: QXmppIceConnection(bool controlling, QObject *parent = 0); + + QXmppIceComponent *component(int component); void addComponent(int component); - void setStunServer(const QString &hostName, quint16 port = 3478); QList<QXmppJingleCandidate> localCandidates() const; QString localUser() const; @@ -203,11 +219,10 @@ public: void setRemoteUser(const QString &user); void setRemotePassword(const QString &password); + void setStunServer(const QString &hostName, quint16 port = 3478); + bool bind(const QList<QHostAddress> &addresses); - void close(); - void connectToHost(); bool isConnected() const; - qint64 writeDatagram(int, const QByteArray &datagram); signals: // This signal is emitted once ICE negotiation succeeds. @@ -216,21 +231,21 @@ signals: // This signal is emitted when ICE negotiation fails. void disconnected(); - // This signal is emitted when a data packet is received. - void datagramReceived(int component, const QByteArray &datagram); - // This signal is emitted when the list of local candidates changes. void localCandidatesChanged(); +public slots: + void close(); + void connectToHost(); + private slots: void slotConnected(); - void slotDatagramReceived(const QByteArray &datagram); void slotTimeout(); private: QTimer *m_connectTimer; bool m_controlling; - QMap<int, QXmppStunSocket*> m_components; + QMap<int, QXmppIceComponent*> m_components; QString m_localUser; QString m_localPassword; QHostAddress m_stunHost; |
