8#include "QXmppJingleIq.h"
9#include "QXmppLogger.h"
18class QXmppIceComponentPrivate;
19class QXmppIceConnectionPrivate;
27class QXMPP_EXPORT QXmppStunMessage
37 CreatePermission = 0x8,
50 quint32 cookie()
const;
51 void setCookie(quint32 cookie);
53 QByteArray id()
const;
54 void setId(
const QByteArray &
id);
56 quint16 messageClass()
const;
57 quint16 messageMethod()
const;
60 void setType(quint16 type);
64 quint32 changeRequest()
const;
65 void setChangeRequest(quint32 changeRequest);
67 quint16 channelNumber()
const;
68 void setChannelNumber(quint16 channelNumber);
70 QByteArray data()
const;
71 void setData(
const QByteArray &data);
73 quint32 lifetime()
const;
74 void setLifetime(quint32 changeRequest);
76 QByteArray nonce()
const;
77 void setNonce(
const QByteArray &nonce);
79 quint32 priority()
const;
80 void setPriority(quint32 priority);
82 QString realm()
const;
83 void setRealm(
const QString &realm);
85 QByteArray reservationToken()
const;
86 void setReservationToken(
const QByteArray &reservationToken);
88 quint8 requestedTransport()
const;
89 void setRequestedTransport(quint8 requestedTransport);
91 QString software()
const;
92 void setSoftware(
const QString &software);
94 QString username()
const;
95 void setUsername(
const QString &username);
97 QByteArray encode(
const QByteArray &key = QByteArray(),
bool addFingerprint =
true)
const;
98 bool decode(
const QByteArray &buffer,
const QByteArray &key = QByteArray(), QStringList *errors =
nullptr);
99 QString toString()
const;
100 static quint16 peekType(
const QByteArray &buffer, quint32 &cookie, QByteArray &
id);
105 QByteArray iceControlling;
106 QByteArray iceControlled;
107 QHostAddress changedHost;
109 QHostAddress mappedHost;
111 QHostAddress otherHost;
113 QHostAddress sourceHost;
115 QHostAddress xorMappedHost;
116 quint16 xorMappedPort;
117 QHostAddress xorPeerHost;
119 QHostAddress xorRelayedHost;
120 quint16 xorRelayedPort;
129 QSet<quint16> m_attributes;
130 quint32 m_changeRequest;
131 quint16 m_channelNumber;
137 quint8 m_requestedTransport;
138 QByteArray m_reservationToken;
153 ~QXmppIceComponent()
override;
160 static QList<QUdpSocket *>
reservePorts(
const QList<QHostAddress> &addresses,
int count, QObject *parent =
nullptr);
179 QXmppIceComponent(
int component, QXmppIcePrivate *config, QObject *parent =
nullptr);
181 Q_SLOT
void checkCandidates();
182 Q_SLOT
void handleDatagram(
const QByteArray &datagram,
const QHostAddress &host, quint16 port);
183 Q_SLOT
void turnConnected();
184 Q_SLOT
void transactionFinished();
185 Q_SLOT
void updateGatheringState();
186 Q_SLOT
void writeStun(
const QXmppStunMessage &request);
188 const std::unique_ptr<QXmppIceComponentPrivate> d;
189 friend class QXmppIceComponentPrivate;
190 friend class QXmppIceConnection;
241 CompleteGatheringState
243 Q_ENUM(GatheringState)
249 void addComponent(
int component);
250 void setIceControlling(
bool controlling);
252 QList<QXmppJingleCandidate> localCandidates()
const;
253 QString localUser()
const;
254 QString localPassword()
const;
257 void setRemoteUser(
const QString &user);
258 void setRemotePassword(
const QString &password);
260 void setStunServers(
const QList<QPair<QHostAddress, quint16>> &servers);
261 void setStunServer(
const QHostAddress &host, quint16 port = 3478);
262 void setTurnServer(
const QHostAddress &host, quint16 port = 3478);
263 void setTurnUser(
const QString &user);
264 void setTurnPassword(
const QString &password);
266 bool bind(
const QList<QHostAddress> &addresses);
267 bool isConnected()
const;
276 GatheringState gatheringState()
const;
298 Q_SLOT
void slotConnected();
299 Q_SLOT
void slotGatheringStateChanged();
300 Q_SLOT
void slotTimeout();
302 const std::unique_ptr<QXmppIceConnectionPrivate> d;
The QXmppIceComponent class represents a piece of a media stream requiring a single transport address...
Definition QXmppStun.h:149
Q_SIGNAL void localCandidatesChanged()
This signal is emitted when the list of local candidates changes.
Q_SIGNAL void gatheringStateChanged()
This signal is emitted when the gathering state of local candidates changes.
Q_SLOT qint64 sendDatagram(const QByteArray &datagram)
Definition QXmppStun.cpp:2511
bool isConnected() const
Definition QXmppStun.cpp:2101
Q_SLOT void close()
Definition QXmppStun.cpp:2075
Q_SLOT void connectToHost()
Definition QXmppStun.cpp:2088
int component() const
Definition QXmppStun.cpp:2052
static QList< QUdpSocket * > reservePorts(const QList< QHostAddress > &addresses, int count, QObject *parent=nullptr)
Definition QXmppStun.cpp:2462
Q_SIGNAL void datagramReceived(const QByteArray &datagram)
This signal is emitted when a data packet is received.
static QList< QHostAddress > discoverAddresses()
Definition QXmppStun.cpp:2415
Q_SIGNAL void connected()
This signal is emitted once ICE negotiation succeeds.
QList< QXmppJingleCandidate > localCandidates() const
Definition QXmppStun.cpp:2109
The QXmppIceConnection class represents a set of UDP sockets capable of performing Interactive Connec...
Definition QXmppStun.h:222
Q_SLOT void connectToHost()
Definition QXmppStun.cpp:2695
Q_SIGNAL void gatheringStateChanged()
This signal is emitted when the gathering state of local candidates changes.
QXmppIceConnection(QObject *parent=nullptr)
Definition QXmppStun.cpp:2586
Q_SIGNAL void localCandidatesChanged()
This signal is emitted when the list of local candidates changes.
QXmppIceConnection::GatheringState gatheringState
Definition QXmppStun.h:230
Q_SIGNAL void connected()
This signal is emitted once ICE negotiation succeeds.
Q_SLOT void close()
Definition QXmppStun.cpp:2684
Q_SIGNAL void disconnected()
This signal is emitted when ICE negotiation fails.
GatheringState
Definition QXmppStun.h:238
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition QXmppJingleData.h:286
QXmppLoggable(QObject *parent=nullptr)
Definition QXmppLogger.cpp:57