8 #include "QXmppJingleIq.h" 9 #include "QXmppLogger.h" 18 class QXmppIceComponentPrivate;
19 class QXmppIceConnectionPrivate;
20 class QXmppIcePrivate;
27 class 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);
180 void datagramReceived(
const QByteArray &datagram);
183 void gatheringStateChanged();
186 void localCandidatesChanged();
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;
293 void gatheringStateChanged();
296 void localCandidatesChanged();
300 void connectToHost();
303 void slotConnected();
304 void slotGatheringStateChanged();
308 const std::unique_ptr<QXmppIceConnectionPrivate> d;
The QXmppIceConnection class represents a set of UDP sockets capable of performing Interactive Connec...
Definition: QXmppStun.h:224
GatheringState
Definition: QXmppStun.h:241
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:109
The QXmppIceComponent class represents a piece of a media stream requiring a single transport address...
Definition: QXmppStun.h:148
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition: QXmppJingleData.h:277