8#include "QXmppJingleIq.h"
9#include "QXmppLogger.h"
18class QXmppIceComponentPrivate;
19class QXmppIceConnectionPrivate;
21class QXmppIceTransport;
22class QXmppStunTransaction;
34class QXMPP_EXPORT QXmppStunMessage
44 CreatePermission = 0x8,
57 quint32 cookie()
const;
58 void setCookie(quint32 cookie);
60 QByteArray id()
const;
61 void setId(
const QByteArray &
id);
63 quint16 messageClass()
const;
64 quint16 messageMethod()
const;
67 void setType(quint16 type);
71 quint32 changeRequest()
const;
72 void setChangeRequest(quint32 changeRequest);
74 quint16 channelNumber()
const;
75 void setChannelNumber(quint16 channelNumber);
77 QByteArray data()
const;
78 void setData(
const QByteArray &data);
80 quint32 lifetime()
const;
81 void setLifetime(quint32 changeRequest);
83 QByteArray nonce()
const;
84 void setNonce(
const QByteArray &nonce);
86 quint32 priority()
const;
87 void setPriority(quint32 priority);
89 QString realm()
const;
90 void setRealm(
const QString &realm);
92 QByteArray reservationToken()
const;
93 void setReservationToken(
const QByteArray &reservationToken);
95 quint8 requestedTransport()
const;
96 void setRequestedTransport(quint8 requestedTransport);
98 QString software()
const;
99 void setSoftware(
const QString &software);
101 QString username()
const;
102 void setUsername(
const QString &username);
104 QByteArray encode(
const QByteArray &key = QByteArray(),
bool addFingerprint =
true)
const;
105 bool decode(
const QByteArray &buffer,
const QByteArray &key = QByteArray(), QStringList *errors =
nullptr);
106 QString toString()
const;
107 static quint16 peekType(
const QByteArray &buffer, quint32 &cookie, QByteArray &
id);
112 QByteArray iceControlling;
113 QByteArray iceControlled;
114 QHostAddress changedHost;
115 quint16 changedPort = 0;
116 QHostAddress mappedHost;
117 quint16 mappedPort = 0;
118 QHostAddress otherHost;
119 quint16 otherPort = 0;
120 QHostAddress sourceHost;
121 quint16 sourcePort = 0;
122 QHostAddress xorMappedHost;
123 quint16 xorMappedPort = 0;
124 QHostAddress xorPeerHost;
125 quint16 xorPeerPort = 0;
126 QHostAddress xorRelayedHost;
127 quint16 xorRelayedPort = 0;
128 bool useCandidate =
false;
136 QSet<quint16> m_attributes;
137 quint32 m_changeRequest = 0;
138 quint16 m_channelNumber = 0;
140 quint32 m_lifetime = 0;
142 quint32 m_priority = 0;
144 quint8 m_requestedTransport = 0;
145 QByteArray m_reservationToken;
162 int component()
const;
163 bool isConnected()
const;
164 QList<QXmppJingleCandidate> localCandidates()
const;
166 static QList<QHostAddress> discoverAddresses();
167 static QList<QUdpSocket *> reservePorts(
const QList<QHostAddress> &addresses,
int count, QObject *parent =
nullptr);
170 Q_SLOT
void connectToHost();
171 Q_SLOT qint64 sendDatagram(
const QByteArray &datagram);
186 QXmppIceComponent(
int component, QXmppIcePrivate *config, QObject *parent =
nullptr);
188 Q_SLOT
void checkCandidates();
189 Q_SLOT
void handleDatagram(
const QByteArray &datagram,
const QHostAddress &host, quint16 port);
190 Q_SLOT
void turnConnected();
191 void handleStunResponse(QXmppIceTransport *transport,
const QXmppStunMessage &response);
192 Q_SLOT
void updateGatheringState();
194 const std::unique_ptr<QXmppIceComponentPrivate> d;
195 friend class QXmppIceComponentPrivate;
247 CompleteGatheringState
249 Q_ENUM(GatheringState)
255 void addComponent(
int component);
256 void setIceControlling(
bool controlling);
258 QList<QXmppJingleCandidate> localCandidates()
const;
259 QString localUser()
const;
260 QString localPassword()
const;
263 void setRemoteUser(
const QString &user);
264 void setRemotePassword(
const QString &password);
266 void setStunServers(
const QList<QXmpp::StunServer> &servers);
268#if QXMPP_DEPRECATED_SINCE(1, 11)
269 [[deprecated(
"Use setStunServers(QList<StunServer>)")]]
270 void setStunServers(
const QList<QPair<QHostAddress, quint16>> &servers);
271 [[deprecated(
"Use setStunServers(QList<StunServer>)")]]
272 void setStunServer(
const QHostAddress &host, quint16 port = 3478);
273 [[deprecated(
"Use setTurnServer(TurnServer)")]]
274 void setTurnServer(
const QHostAddress &host, quint16 port = 3478);
275 [[deprecated(
"Use setTurnServer(TurnServer)")]]
276 void setTurnUser(
const QString &user);
277 [[deprecated(
"Use setTurnServer(TurnServer)")]]
278 void setTurnPassword(
const QString &password);
281 bool bind(
const QList<QHostAddress> &addresses);
282 bool isConnected()
const;
291 GatheringState gatheringState()
const;
310 Q_SLOT
void connectToHost();
313 Q_SLOT
void slotConnected();
314 Q_SLOT
void slotGatheringStateChanged();
315 Q_SLOT
void slotTimeout();
317 const std::unique_ptr<QXmppIceConnectionPrivate> d;
The QXmppIceComponent class represents a piece of a media stream requiring a single transport address...
Definition QXmppStun.h:156
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_SIGNAL void datagramReceived(const QByteArray &datagram)
This signal is emitted when a data packet is received.
Q_SIGNAL void connected()
This signal is emitted once ICE negotiation succeeds.
The QXmppIceConnection class represents a set of UDP sockets capable of performing Interactive Connec...
Definition QXmppStun.h:228
Q_SIGNAL void gatheringStateChanged()
This signal is emitted when the gathering state of local candidates changes.
Q_SIGNAL void localCandidatesChanged()
This signal is emitted when the list of local candidates changes.
Q_SIGNAL void connected()
This signal is emitted once ICE negotiation succeeds.
Q_SIGNAL void disconnected()
This signal is emitted when ICE negotiation fails.
GatheringState
Definition QXmppStun.h:244
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition QXmppJingleData.h:288
The QXmppLoggable class represents a source of logging messages.
Definition QXmppLogger.h:109
Definition Algorithms.h:14
TURN server address.
Definition QXmppTurnServer.h:19