8 #include "QXmppJingleIq.h" 9 #include "QXmppLogger.h" 18 class QXmppIceComponentPrivate;
19 class QXmppIceConnectionPrivate;
20 class QXmppIcePrivate;
21 class QXmppIceTransport;
22 class QXmppStunTransaction;
34 class 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);
174 Q_SIGNAL
void connected();
177 Q_SIGNAL
void datagramReceived(
const QByteArray &datagram);
180 Q_SIGNAL
void gatheringStateChanged();
183 Q_SIGNAL
void localCandidatesChanged();
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;
294 Q_SIGNAL
void connected();
297 Q_SIGNAL
void disconnected();
304 Q_SIGNAL
void gatheringStateChanged();
307 Q_SIGNAL
void localCandidatesChanged();
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 QXmppIceConnection class represents a set of UDP sockets capable of performing Interactive Connec...
Definition: QXmppStun.h:227
GatheringState
Definition: QXmppStun.h:244
TURN server address.
Definition: QXmppTurnServer.h:19
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:108
The QXmppIceComponent class represents a piece of a media stream requiring a single transport address...
Definition: QXmppStun.h:155
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition: QXmppJingleData.h:287