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;
155 int component()
const;
156 bool isConnected()
const;
157 QList<QXmppJingleCandidate> localCandidates()
const;
159 static QList<QHostAddress> discoverAddresses();
160 static QList<QUdpSocket *> reservePorts(
const QList<QHostAddress> &addresses,
int count, QObject *parent =
nullptr);
164 void connectToHost();
165 qint64 sendDatagram(
const QByteArray &datagram);
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;
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;
300 void connectToHost();
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.
void localCandidatesChanged()
This signal is emitted when the list of local candidates changes.
void datagramReceived(const QByteArray &datagram)
This signal is emitted when a data packet is received.
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:225
void localCandidatesChanged()
This signal is emitted when the list of local candidates changes.
void gatheringStateChanged()
This signal is emitted when the gathering state of local candidates changes.
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
The QXmppLoggable class represents a source of logging messages.
Definition QXmppLogger.h:110