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);
168 void checkCandidates();
169 void handleDatagram(
const QByteArray &datagram,
const QHostAddress &host, quint16 port);
170 void turnConnected();
171 void transactionFinished();
172 void updateGatheringState();
173 void writeStun(
const QXmppStunMessage &request);
189 QXmppIceComponent(
int component, QXmppIcePrivate *config, QObject *parent =
nullptr);
191 const std::unique_ptr<QXmppIceComponentPrivate> d;
192 friend class QXmppIceComponentPrivate;
193 friend class QXmppIceConnection;
244 CompleteGatheringState
246 Q_ENUM(GatheringState)
252 void addComponent(
int component);
253 void setIceControlling(
bool controlling);
255 QList<QXmppJingleCandidate> localCandidates()
const;
256 QString localUser()
const;
257 QString localPassword()
const;
260 void setRemoteUser(
const QString &user);
261 void setRemotePassword(
const QString &password);
263 void setStunServers(
const QList<QPair<QHostAddress, quint16>> &servers);
264 void setStunServer(
const QHostAddress &host, quint16 port = 3478);
265 void setTurnServer(
const QHostAddress &host, quint16 port = 3478);
266 void setTurnUser(
const QString &user);
267 void setTurnPassword(
const QString &password);
269 bool bind(
const QList<QHostAddress> &addresses);
270 bool isConnected()
const;
279 GatheringState gatheringState()
const;
303 void slotConnected();
304 void slotGatheringStateChanged();
308 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
void gatheringStateChanged()
This signal is emitted when the gathering state of local candidates changes.
qint64 sendDatagram(const QByteArray &datagram)
Definition QXmppStun.cpp:2504
bool isConnected() const
Definition QXmppStun.cpp:2094
void close()
Definition QXmppStun.cpp:2068
void localCandidatesChanged()
This signal is emitted when the list of local candidates changes.
void connectToHost()
Definition QXmppStun.cpp:2081
void datagramReceived(const QByteArray &datagram)
This signal is emitted when a data packet is received.
int component() const
Definition QXmppStun.cpp:2045
static QList< QUdpSocket * > reservePorts(const QList< QHostAddress > &addresses, int count, QObject *parent=nullptr)
Definition QXmppStun.cpp:2455
static QList< QHostAddress > discoverAddresses()
Definition QXmppStun.cpp:2408
void connected()
This signal is emitted once ICE negotiation succeeds.
QList< QXmppJingleCandidate > localCandidates() const
Definition QXmppStun.cpp:2102
The QXmppIceConnection class represents a set of UDP sockets capable of performing Interactive Connec...
Definition QXmppStun.h:225
void connectToHost()
Definition QXmppStun.cpp:2688
void localCandidatesChanged()
This signal is emitted when the list of local candidates changes.
QXmppIceConnection(QObject *parent=nullptr)
Definition QXmppStun.cpp:2579
QXmppIceConnection::GatheringState gatheringState
Definition QXmppStun.h:233
void gatheringStateChanged()
This signal is emitted when the gathering state of local candidates changes.
void close()
Definition QXmppStun.cpp:2677
void disconnected()
This signal is emitted when ICE negotiation fails.
void connected()
This signal is emitted once ICE negotiation succeeds.
GatheringState
Definition QXmppStun.h:241
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition QXmppJingleData.h:278
QXmppLoggable(QObject *parent=nullptr)
Definition QXmppLogger.cpp:57