29 #include "QXmppLogger.h"
30 #include "QXmppJingleIq.h"
36 class QXmppIceComponentPrivate;
37 class QXmppIceConnectionPrivate;
38 class QXmppIcePrivate;
45 class QXMPP_EXPORT QXmppStunMessage
55 CreatePermission = 0x8,
68 quint32 cookie()
const;
69 void setCookie(quint32 cookie);
71 QByteArray id()
const;
72 void setId(
const QByteArray &
id);
74 quint16 messageClass()
const;
75 quint16 messageMethod()
const;
78 void setType(quint16 type);
82 quint32 changeRequest()
const;
83 void setChangeRequest(quint32 changeRequest);
85 quint16 channelNumber()
const;
86 void setChannelNumber(quint16 channelNumber);
88 QByteArray data()
const;
89 void setData(
const QByteArray &data);
91 quint32 lifetime()
const;
92 void setLifetime(quint32 changeRequest);
94 QByteArray nonce()
const;
95 void setNonce(
const QByteArray &nonce);
97 quint32 priority()
const;
98 void setPriority(quint32 priority);
100 QString realm()
const;
101 void setRealm(
const QString &realm);
103 QByteArray reservationToken()
const;
104 void setReservationToken(
const QByteArray &reservationToken);
106 quint8 requestedTransport()
const;
107 void setRequestedTransport(quint8 requestedTransport);
109 QString software()
const;
110 void setSoftware(
const QString &software);
112 QString username()
const;
113 void setUsername(
const QString &username);
115 QByteArray encode(
const QByteArray &key = QByteArray(),
bool addFingerprint =
true)
const;
116 bool decode(
const QByteArray &buffer,
const QByteArray &key = QByteArray(), QStringList *errors = 0);
117 QString toString()
const;
118 static quint16 peekType(
const QByteArray &buffer, quint32 &cookie, QByteArray &
id);
123 QByteArray iceControlling;
124 QByteArray iceControlled;
125 QHostAddress changedHost;
127 QHostAddress mappedHost;
129 QHostAddress otherHost;
131 QHostAddress sourceHost;
133 QHostAddress xorMappedHost;
134 quint16 xorMappedPort;
135 QHostAddress xorPeerHost;
137 QHostAddress xorRelayedHost;
138 quint16 xorRelayedPort;
147 QSet<quint16> m_attributes;
148 quint32 m_changeRequest;
149 quint16 m_channelNumber;
155 quint8 m_requestedTransport;
156 QByteArray m_reservationToken;
172 int component()
const;
173 bool isConnected()
const;
174 QList<QXmppJingleCandidate> localCandidates()
const;
176 static QList<QHostAddress> discoverAddresses();
177 static QList<QUdpSocket*> reservePorts(
const QList<QHostAddress> &addresses,
int count, QObject *parent = 0);
181 void connectToHost();
182 qint64 sendDatagram(
const QByteArray &datagram);
185 void checkCandidates();
186 void handleDatagram(
const QByteArray &datagram,
const QHostAddress &host, quint16 port);
187 void turnConnected();
188 void transactionFinished();
189 void updateGatheringState();
190 void writeStun(
const QXmppStunMessage &request);
197 void datagramReceived(
const QByteArray &datagram);
200 void gatheringStateChanged();
203 void localCandidatesChanged();
208 QXmppIceComponentPrivate *d;
209 friend class QXmppIceComponentPrivate;
244 Q_ENUMS(GatheringState)
245 Q_PROPERTY(
QXmppIceConnection::GatheringState gatheringState READ gatheringState NOTIFY gatheringStateChanged)
252 CompleteGatheringState
259 void addComponent(
int component);
260 void setIceControlling(
bool controlling);
262 QList<QXmppJingleCandidate> localCandidates()
const;
263 QString localUser()
const;
264 QString localPassword()
const;
267 void setRemoteUser(
const QString &user);
268 void setRemotePassword(
const QString &password);
270 void setStunServer(
const QHostAddress &host, quint16 port = 3478);
271 void setTurnServer(
const QHostAddress &host, quint16 port = 3478);
272 void setTurnUser(
const QString &user);
273 void setTurnPassword(
const QString &password);
275 bool bind(
const QList<QHostAddress> &addresses);
276 bool isConnected()
const;
278 GatheringState gatheringState()
const;
288 void gatheringStateChanged();
291 void localCandidatesChanged();
295 void connectToHost();
298 void slotConnected();
299 void slotGatheringStateChanged();
303 QXmppIceConnectionPrivate *d;