33 QXmppStunTransaction(
const QXmppStunMessage &request, std::function<
void(
const QXmppStunMessage &)> sendStunMessage, std::function<
void(QXmppStunTransaction *)> onFinished, QObject *parent);
34 const QXmppStunMessage &request()
const {
return m_request; }
35 const QXmppStunMessage &response()
const {
return m_response; }
37 Q_SIGNAL
void finished();
38 Q_SIGNAL
void writeStun(
const QXmppStunMessage &request);
40 Q_SLOT
void readStun(
const QXmppStunMessage &response);
45 QXmppStunMessage m_request;
46 QXmppStunMessage m_response;
56 QXmppIceTransport(QObject *parent =
nullptr);
57 ~QXmppIceTransport()
override;
60 virtual qint64 writeDatagram(
const QByteArray &data,
const QHostAddress &host, quint16 port) = 0;
62 Q_SLOT
virtual void disconnectFromHost() = 0;
65 Q_SIGNAL
void datagramReceived(
const QByteArray &data,
const QHostAddress &host, quint16 port);
72class QXMPP_EXPORT QXmppTurnAllocation :
public QXmppIceTransport
77 enum AllocationState {
84 QXmppTurnAllocation(QObject *parent =
nullptr);
85 ~QXmppTurnAllocation()
override;
87 QHostAddress relayedHost()
const;
88 quint16 relayedPort()
const;
89 AllocationState state()
const;
91 void setServer(
const QHostAddress &host, quint16 port = 3478);
92 void setUser(
const QString &user);
93 void setPassword(
const QString &password);
96 qint64 writeDatagram(
const QByteArray &data,
const QHostAddress &host, quint16 port)
override;
99 Q_SIGNAL
void connected();
102 Q_SIGNAL
void disconnected();
104 Q_SLOT
void connectToHost();
105 Q_SLOT
void disconnectFromHost()
override;
108 void sendStunMessage(QXmppStunMessage &&message);
109 Q_SLOT
void readyRead();
110 Q_SLOT
void refresh();
111 Q_SLOT
void refreshChannels();
112 void handleTransactionFinished(QXmppStunTransaction *);
113 void writeStun(
const QXmppStunMessage &message);
115 void handleDatagram(
const QByteArray &datagram,
const QHostAddress &host, quint16 port);
116 void setState(AllocationState state);
118 QUdpSocket *socket =
nullptr;
119 QTimer *m_timer =
nullptr;
120 QTimer *m_channelTimer =
nullptr;
123 QHostAddress m_relayedHost;
124 quint16 m_relayedPort = 0;
125 QHostAddress m_turnHost;
126 quint16 m_turnPort = 0;
129 typedef QPair<QHostAddress, quint16> Address;
130 quint16 m_channelNumber = 0x4000;
131 QMap<quint16, Address> m_channels;
134 quint32 m_lifetime = 600;
138 AllocationState m_state = UnconnectedState;
139 QList<QXmppStunTransaction *> m_transactions;
145class QXMPP_EXPORT QXmppUdpTransport :
public QXmppIceTransport
150 QXmppUdpTransport(QUdpSocket *socket, QObject *parent =
nullptr);
151 ~QXmppUdpTransport()
override;
154 qint64 writeDatagram(
const QByteArray &data,
const QHostAddress &host, quint16 port)
override;
156 Q_SLOT
void disconnectFromHost()
override;
159 Q_SLOT
void readyRead();
161 QUdpSocket *m_socket;
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