aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2015-08-24 08:57:58 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2015-08-24 08:57:58 +0200
commit9b39d2ededda2c48660a3cccc2e32af930ff62ef (patch)
tree1db3cafa4fbbd950468f52d9c4a029411f061f6c
parent3c9ef4a8749dfe847138da4658d62cfbc84a116a (diff)
downloadqxmpp-9b39d2ededda2c48660a3cccc2e32af930ff62ef.tar.gz
move CandidatePair definition to QXmppStun.cpp
-rw-r--r--src/base/QXmppStun.cpp49
-rw-r--r--src/base/QXmppStun.h28
2 files changed, 39 insertions, 38 deletions
diff --git a/src/base/QXmppStun.cpp b/src/base/QXmppStun.cpp
index 3b8a73d0..5c0d8e85 100644
--- a/src/base/QXmppStun.cpp
+++ b/src/base/QXmppStun.cpp
@@ -1533,7 +1533,24 @@ void QXmppTurnAllocation::writeStun(const QXmppStunMessage &message)
#endif
}
-QXmppIceComponent::Pair::Pair(int component, bool controlling)
+class CandidatePair {
+public:
+ CandidatePair(int component, bool controlling);
+ quint64 priority() const;
+ QString toString() const;
+
+ QIODevice::OpenMode checked;
+ QXmppJingleCandidate remote;
+ QXmppJingleCandidate reflexive;
+ QByteArray transaction;
+ QUdpSocket *socket;
+
+private:
+ int m_component;
+ bool m_controlling;
+};
+
+CandidatePair::CandidatePair(int component, bool controlling)
: checked(QIODevice::NotOpen),
socket(0),
m_component(component),
@@ -1542,7 +1559,7 @@ QXmppIceComponent::Pair::Pair(int component, bool controlling)
transaction = QXmppUtils::generateRandomBytes(ID_SIZE);
}
-quint64 QXmppIceComponent::Pair::priority() const
+quint64 CandidatePair::priority() const
{
QXmppJingleCandidate local;
local.setComponent(m_component);
@@ -1555,7 +1572,7 @@ quint64 QXmppIceComponent::Pair::priority() const
return (quint64(1) << 32) * qMin(G, D) + 2 * qMax(G, D) + (G > D ? 1 : 0);
}
-QString QXmppIceComponent::Pair::toString() const
+QString CandidatePair::toString() const
{
QString str = QString("%1 port %2").arg(remote.host().toString(), QString::number(remote.port()));
if (socket)
@@ -1614,7 +1631,7 @@ QXmppIceComponent::QXmppIceComponent(QObject *parent)
QXmppIceComponent::~QXmppIceComponent()
{
- foreach (Pair *pair, m_pairs)
+ foreach (CandidatePair *pair, m_pairs)
delete pair;
}
@@ -1648,7 +1665,7 @@ void QXmppIceComponent::setComponent(int component)
void QXmppIceComponent::checkCandidates()
{
debug("Checking remote candidates");
- foreach (Pair *pair, m_pairs)
+ foreach (CandidatePair *pair, m_pairs)
{
if (m_remoteUser.isEmpty())
continue;
@@ -1777,7 +1794,7 @@ bool QXmppIceComponent::addRemoteCandidate(const QXmppJingleCandidate &candidate
candidate.host().protocol() != QAbstractSocket::IPv6Protocol))
return false;
- foreach (Pair *pair, m_pairs)
+ foreach (CandidatePair *pair, m_pairs)
if (pair->remote.host() == candidate.host() &&
pair->remote.port() == candidate.port())
return false;
@@ -1789,7 +1806,7 @@ bool QXmppIceComponent::addRemoteCandidate(const QXmppJingleCandidate &candidate
isIPv6LinkLocalAddress(socket->localAddress()) != isIPv6LinkLocalAddress(candidate.host()))
continue;
- Pair *pair = new Pair(m_component, m_iceControlling);
+ CandidatePair *pair = new CandidatePair(m_component, m_iceControlling);
pair->remote = candidate;
if (isIPv6LinkLocalAddress(pair->remote.host()))
{
@@ -1806,7 +1823,7 @@ bool QXmppIceComponent::addRemoteCandidate(const QXmppJingleCandidate &candidate
// only use relaying for IPv4 candidates
if (m_turnConfigured && candidate.host().protocol() == QAbstractSocket::IPv4Protocol) {
- Pair *pair = new Pair(m_component, m_iceControlling);
+ CandidatePair *pair = new CandidatePair(m_component, m_iceControlling);
pair->remote = candidate;
pair->socket = 0;
m_pairs << pair;
@@ -1816,9 +1833,9 @@ bool QXmppIceComponent::addRemoteCandidate(const QXmppJingleCandidate &candidate
/// Adds a discovered peer-reflexive STUN candidate.
-QXmppIceComponent::Pair *QXmppIceComponent::addRemoteCandidate(QUdpSocket *socket, const QHostAddress &host, quint16 port, quint32 priority)
+CandidatePair *QXmppIceComponent::addRemoteCandidate(QUdpSocket *socket, const QHostAddress &host, quint16 port, quint32 priority)
{
- foreach (Pair *pair, m_pairs)
+ foreach (CandidatePair *pair, m_pairs)
if (pair->remote.host() == host &&
pair->remote.port() == port &&
pair->socket == socket)
@@ -1833,7 +1850,7 @@ QXmppIceComponent::Pair *QXmppIceComponent::addRemoteCandidate(QUdpSocket *socke
candidate.setProtocol("udp");
candidate.setType(QXmppJingleCandidate::PeerReflexiveType);
- Pair *pair = new Pair(m_component, m_iceControlling);
+ CandidatePair *pair = new CandidatePair(m_component, m_iceControlling);
pair->remote = candidate;
pair->socket = socket;
m_pairs << pair;
@@ -1979,7 +1996,7 @@ void QXmppIceComponent::handleDatagram(const QByteArray &buffer, const QHostAddr
if (!messageType || messageCookie != STUN_MAGIC)
{
// use this as an opportunity to flag a potential pair
- foreach (Pair *pair, m_pairs) {
+ foreach (CandidatePair *pair, m_pairs) {
if (pair->remote.host() == remoteHost &&
pair->remote.port() == remotePort) {
m_fallbackPair = pair;
@@ -2063,7 +2080,7 @@ void QXmppIceComponent::handleDatagram(const QByteArray &buffer, const QHostAddr
}
// process message from peer
- Pair *pair = 0;
+ CandidatePair *pair = 0;
if (message.type() == (QXmppStunMessage::Binding | QXmppStunMessage::Request))
{
// add remote candidate
@@ -2099,7 +2116,7 @@ void QXmppIceComponent::handleDatagram(const QByteArray &buffer, const QHostAddr
} else if (message.type() == (QXmppStunMessage::Binding | QXmppStunMessage::Response)) {
// find the pair for this transaction
- foreach (Pair *ptr, m_pairs)
+ foreach (CandidatePair *ptr, m_pairs)
{
if (ptr->transaction == message.id())
{
@@ -2265,7 +2282,7 @@ QList<QUdpSocket*> QXmppIceComponent::reservePorts(const QList<QHostAddress> &ad
qint64 QXmppIceComponent::sendDatagram(const QByteArray &datagram)
{
- Pair *pair = m_activePair ? m_activePair : m_fallbackPair;
+ CandidatePair *pair = m_activePair ? m_activePair : m_fallbackPair;
if (!pair)
return -1;
if (pair->socket)
@@ -2278,7 +2295,7 @@ qint64 QXmppIceComponent::sendDatagram(const QByteArray &datagram)
/// Sends a STUN packet to the remote party.
-qint64 QXmppIceComponent::writeStun(const QXmppStunMessage &message, QXmppIceComponent::Pair *pair)
+qint64 QXmppIceComponent::writeStun(const QXmppStunMessage &message, CandidatePair *pair)
{
qint64 ret;
const QString messagePassword = (message.type() & 0xFF00) ? m_localPassword : m_remotePassword;
diff --git a/src/base/QXmppStun.h b/src/base/QXmppStun.h
index acbe5e17..aa163d9b 100644
--- a/src/base/QXmppStun.h
+++ b/src/base/QXmppStun.h
@@ -29,6 +29,7 @@
#include "QXmppLogger.h"
#include "QXmppJingleIq.h"
+class CandidatePair;
class QDataStream;
class QUdpSocket;
class QTimer;
@@ -324,25 +325,8 @@ signals:
void localCandidatesChanged();
private:
- class Pair {
- public:
- Pair(int component, bool controlling);
- quint64 priority() const;
- QString toString() const;
-
- QIODevice::OpenMode checked;
- QXmppJingleCandidate remote;
- QXmppJingleCandidate reflexive;
- QByteArray transaction;
- QUdpSocket *socket;
-
- private:
- int m_component;
- bool m_controlling;
- };
-
- Pair *addRemoteCandidate(QUdpSocket *socket, const QHostAddress &host, quint16 port, quint32 priority);
- qint64 writeStun(const QXmppStunMessage &message, QXmppIceComponent::Pair *pair);
+ CandidatePair *addRemoteCandidate(QUdpSocket *socket, const QHostAddress &host, quint16 port, quint32 priority);
+ qint64 writeStun(const QXmppStunMessage &message, CandidatePair *pair);
int m_component;
@@ -351,10 +335,10 @@ private:
QString m_localPassword;
QByteArray m_tieBreaker;
- Pair *m_activePair;
- Pair *m_fallbackPair;
+ CandidatePair *m_activePair;
+ CandidatePair *m_fallbackPair;
bool m_iceControlling;
- QList<Pair*> m_pairs;
+ QList<CandidatePair*> m_pairs;
quint32 m_peerReflexivePriority;
QString m_remoteUser;
QString m_remotePassword;