diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 13:24:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-20 13:24:15 +0000 |
| commit | ab192b801c6db3e3f33a590f0edf24f5dbcc0551 (patch) | |
| tree | b2d3f7c155f8791e68433702f3b53bd8307c0d39 /src | |
| parent | e6c18670dbcb36a2a1b999327f657b8cdd77b78e (diff) | |
| download | qxmpp-ab192b801c6db3e3f33a590f0edf24f5dbcc0551.tar.gz | |
make QXmppCallManager a QXmppClientExtension
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppCallManager.cpp | 54 | ||||
| -rw-r--r-- | src/QXmppCallManager.h | 16 | ||||
| -rw-r--r-- | src/QXmppClient.cpp | 4 | ||||
| -rw-r--r-- | src/QXmppDiscoveryManager.cpp | 5 | ||||
| -rw-r--r-- | src/QXmppOutgoingClient.cpp | 8 | ||||
| -rw-r--r-- | src/QXmppOutgoingClient.h | 4 |
6 files changed, 48 insertions, 43 deletions
diff --git a/src/QXmppCallManager.cpp b/src/QXmppCallManager.cpp index 00f318d7..9ad9826d 100644 --- a/src/QXmppCallManager.cpp +++ b/src/QXmppCallManager.cpp @@ -21,6 +21,7 @@ * */ +#include <QDomElement> #include <QTimer> #include "QXmppCallManager.h" @@ -72,7 +73,7 @@ QXmppCall::QXmppCall(const QString &jid, QXmppCall::Direction direction, QObject // ICE connection bool iceControlling = (m_direction == OutgoingDirection); m_connection = new QXmppIceConnection(iceControlling, this); - m_connection->setStunServer("stun.ekiga.net"); + //m_connection->setStunServer("stun.ekiga.net"); m_connection->addComponent(RTP_COMPONENT); m_connection->addComponent(RTCP_COMPONENT); @@ -408,21 +409,40 @@ qint64 QXmppCall::writeData(const char * data, qint64 maxSize) return maxSize; } -QXmppCallManager::QXmppCallManager(QXmppOutgoingClient *stream, QObject *parent) - : QObject(parent), m_stream(stream) +QXmppCallManager::QXmppCallManager(QXmppClient *client) { - // setup logging - bool check = connect(this, SIGNAL(logMessage(QXmppLogger::MessageType, QString)), - m_stream, SIGNAL(logMessage(QXmppLogger::MessageType, QString))); - Q_ASSERT(check); - - check = connect(stream, SIGNAL(iqReceived(QXmppIq)), + bool check = connect(client, SIGNAL(iqReceived(QXmppIq)), this, SLOT(iqReceived(QXmppIq))); Q_ASSERT(check); + Q_UNUSED(check); +} - check = connect(stream, SIGNAL(jingleIqReceived(QXmppJingleIq)), - this, SLOT(jingleIqReceived(QXmppJingleIq))); - Q_ASSERT(check); +QStringList QXmppCallManager::discoveryFeatures() const +{ + return QStringList() + << ns_jingle // XEP-0166 : Jingle + << ns_jingle_rtp // XEP-0167 : Jingle RTP Sessions + << ns_jingle_rtp_audio + << ns_jingle_ice_udp; // XEP-0176 : Jingle ICE-UDP Transport Method +} + +bool QXmppCallManager::handleStanza(QXmppStream *stream, const QDomElement &element) +{ + Q_UNUSED(stream); + + if(element.tagName() == "iq") + { + // XEP-0166: Jingle + if (QXmppJingleIq::isJingleIq(element)) + { + QXmppJingleIq jingleIq; + jingleIq.parse(element); + jingleIqReceived(jingleIq); + return true; + } + } + + return false; } /// Initiates a new outgoing call to the specified recipient. @@ -446,7 +466,7 @@ QXmppCall *QXmppCallManager::call(const QString &jid) iq.setTo(jid); iq.setType(QXmppIq::Set); iq.setAction(QXmppJingleIq::SessionInitiate); - iq.setInitiator(m_stream->configuration().jid()); + iq.setInitiator(client()->configuration().jid()); iq.setSid(call->m_sid); iq.content().setCreator(call->m_contentCreator); iq.content().setName(call->m_contentName); @@ -506,7 +526,7 @@ void QXmppCallManager::callStateChanged(QXmppCall::State state) iq.setTo(call->jid()); iq.setType(QXmppIq::Set); iq.setAction(QXmppJingleIq::SessionAccept); - iq.setResponder(m_stream->configuration().jid()); + iq.setResponder(client()->configuration().jid()); iq.setSid(call->m_sid); iq.content().setCreator(call->m_contentCreator); iq.content().setName(call->m_contentName); @@ -790,7 +810,7 @@ void QXmppCallManager::localCandidatesChanged() iq.setTo(call->jid()); iq.setType(QXmppIq::Set); iq.setAction(QXmppJingleIq::TransportInfo); - iq.setInitiator(m_stream->configuration().jid()); + iq.setInitiator(client()->configuration().jid()); iq.setSid(call->sid()); iq.content().setCreator(call->m_contentCreator); @@ -810,7 +830,7 @@ bool QXmppCallManager::sendAck(const QXmppJingleIq &iq) ack.setId(iq.id()); ack.setTo(iq.from()); ack.setType(QXmppIq::Result); - return m_stream->sendPacket(ack); + return client()->sendPacket(ack); } /// Sends a Jingle IQ and adds it to outstanding requests. @@ -819,6 +839,6 @@ bool QXmppCallManager::sendAck(const QXmppJingleIq &iq) bool QXmppCallManager::sendRequest(QXmppCall *call, const QXmppJingleIq &iq) { call->m_requests << iq; - return m_stream->sendPacket(iq); + return client()->sendPacket(iq); } diff --git a/src/QXmppCallManager.h b/src/QXmppCallManager.h index 169fafec..694067c7 100644 --- a/src/QXmppCallManager.h +++ b/src/QXmppCallManager.h @@ -27,6 +27,7 @@ #include <QObject> #include <QIODevice> +#include "QXmppClientExtension.h" #include "QXmppJingleIq.h" #include "QXmppLogger.h" @@ -176,14 +177,19 @@ private: /// /// \ingroup Managers -class QXmppCallManager : public QObject +class QXmppCallManager : public QXmppClientExtension { Q_OBJECT public: - QXmppCallManager(QXmppOutgoingClient *stream, QObject *parent = 0); + QXmppCallManager(QXmppClient *client); QXmppCall *call(const QString &jid); + /// \cond + QStringList discoveryFeatures() const; + bool handleStanza(QXmppStream *stream, const QDomElement &element); + /// \endcond + signals: /// This signal is emitted when a new incoming call is received. /// @@ -191,9 +197,6 @@ signals: /// To refuse the call, invoke the call's QXmppCall::abort() method. void callReceived(QXmppCall *call); - /// This signal is emitted to send logging messages. - void logMessage(QXmppLogger::MessageType type, const QString &msg); - private slots: void callDestroyed(QObject *object); void callStateChanged(QXmppCall::State state); @@ -210,9 +213,6 @@ private: bool sendRequest(QXmppCall *call, const QXmppJingleIq &iq); QList<QXmppCall*> m_calls; - - // reference to xmpp stream (no ownership) - QXmppOutgoingClient* m_stream; }; #endif diff --git a/src/QXmppClient.cpp b/src/QXmppClient.cpp index ab9db6de..236c2480 100644 --- a/src/QXmppClient.cpp +++ b/src/QXmppClient.cpp @@ -201,7 +201,9 @@ QXmppClient::QXmppClient(QObject *parent) // TODO move manager references to d->extensions d->rosterManager = new QXmppRosterManager(d->stream, this); d->archiveManager = new QXmppArchiveManager(d->stream, this); - d->callManager = new QXmppCallManager(d->stream, this); + + d->callManager = new QXmppCallManager(this); + addExtension(d->callManager); d->mucManager = new QXmppMucManager(this); addExtension(d->mucManager); diff --git a/src/QXmppDiscoveryManager.cpp b/src/QXmppDiscoveryManager.cpp index 2c620783..43e85fb6 100644 --- a/src/QXmppDiscoveryManager.cpp +++ b/src/QXmppDiscoveryManager.cpp @@ -116,7 +116,6 @@ QXmppDiscoveryIq QXmppDiscoveryManager::capabilities() QStringList features;
features
<< ns_rpc // XEP-0009: Jabber-RPC
-// << ns_disco_info // XEP-0030: Service Discovery
<< ns_ibb // XEP-0047: In-Band Bytestreams
// << ns_vcard // XEP-0054: vcard-temp
<< ns_bytestreams // XEP-0065: SOCKS5 Bytestreams
@@ -124,10 +123,6 @@ QXmppDiscoveryIq QXmppDiscoveryManager::capabilities() << ns_stream_initiation // XEP-0095: Stream Initiation
<< ns_stream_initiation_file_transfer // XEP-0096: SI File Transfer
<< ns_capabilities // XEP-0115 : Entity Capabilities
- << ns_jingle // XEP-0166 : Jingle
- << ns_jingle_rtp // XEP-0167 : Jingle RTP Sessions
- << ns_jingle_rtp_audio
- << ns_jingle_ice_udp // XEP-0176 : Jingle ICE-UDP Transport Method
<< ns_ping; // XEP-0199: XMPP Ping
foreach(QXmppClientExtension* extension, client()->extensions())
diff --git a/src/QXmppOutgoingClient.cpp b/src/QXmppOutgoingClient.cpp index 45aaf801..f2788538 100644 --- a/src/QXmppOutgoingClient.cpp +++ b/src/QXmppOutgoingClient.cpp @@ -44,7 +44,6 @@ #include "QXmppByteStreamIq.h" #include "QXmppDiscoveryIq.h" #include "QXmppIbbIq.h" -#include "QXmppJingleIq.h" #include "QXmppPingIq.h" #include "QXmppRpcIq.h" #include "QXmppRosterIq.h" @@ -591,13 +590,6 @@ void QXmppOutgoingClient::handleStanza(const QDomElement &nodeRecv) archiveIq.parse(nodeRecv); emit archivePrefIqReceived(archiveIq); } - // XEP-0166: Jingle - else if(QXmppJingleIq::isJingleIq(nodeRecv)) - { - QXmppJingleIq jingleIq; - jingleIq.parse(nodeRecv); - emit jingleIqReceived(jingleIq); - } // XEP-0199: XMPP Ping else if(QXmppPingIq::isPingIq(nodeRecv)) { diff --git a/src/QXmppOutgoingClient.h b/src/QXmppOutgoingClient.h index 20f2b3db..cd6d81f7 100644 --- a/src/QXmppOutgoingClient.h +++ b/src/QXmppOutgoingClient.h @@ -52,7 +52,6 @@ class QXmppDiscoveryIq; class QXmppIbbCloseIq; class QXmppIbbDataIq; class QXmppIbbOpenIq; -class QXmppJingleIq; class QXmppStreamInitiationIq; class QXmppOutgoingClientPrivate; @@ -113,9 +112,6 @@ signals: void archiveListIqReceived(const QXmppArchiveListIq&); void archivePrefIqReceived(const QXmppArchivePrefIq&); - // XEP-0166: Jingle - void jingleIqReceived(const QXmppJingleIq&); - protected: /// \cond // Overridable methods |
