diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-23 05:40:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-23 05:40:15 +0000 |
| commit | 80e0607c97aef44e88f8e5af281132668114534f (patch) | |
| tree | 71594029b2bd5bf28dfe489dc1249d6c72b378be /src/QXmppStream.h | |
| parent | 85a3546164c0816a4b94d6fdb45ca64b1547f541 (diff) | |
| download | qxmpp-80e0607c97aef44e88f8e5af281132668114534f.tar.gz | |
* make QXmppStream an abstract class
* move client-specific code to QXmppOutgoingClient
Diffstat (limited to 'src/QXmppStream.h')
| -rw-r--r-- | src/QXmppStream.h | 126 |
1 files changed, 25 insertions, 101 deletions
diff --git a/src/QXmppStream.h b/src/QXmppStream.h index ddfe9d9e..ccc11c93 100644 --- a/src/QXmppStream.h +++ b/src/QXmppStream.h @@ -1,8 +1,9 @@ /* * Copyright (C) 2008-2010 The QXmpp developers * - * Author: + * Authors: * Manjeet Dahiya + * Jeremy Lainé * * Source: * http://code.google.com/p/qxmpp @@ -26,146 +27,69 @@ #define QXMPPSTREAM_H #include <QObject> -#include <QSslSocket> -#include "QXmppClient.h" #include "QXmppLogger.h" -#include "QXmppStanza.h" class QDomElement; - -class QXmppClient; -class QXmppConfiguration; +class QSslSocket; class QXmppPacket; -class QXmppPresence; -class QXmppIq; -class QXmppBind; -class QXmppRosterIq; -class QXmppVCard; -class QXmppMessage; -class QXmppRpcResponseIq; -class QXmppRpcErrorIq; -class QXmppArchiveChatIq; -class QXmppArchiveListIq; -class QXmppArchivePrefIq; -class QXmppByteStreamIq; -class QXmppDiscoveryIq; -class QXmppIbbCloseIq; -class QXmppIbbDataIq; -class QXmppIbbOpenIq; -class QXmppJingleIq; -class QXmppMucAdminIq; -class QXmppMucOwnerIq; -class QXmppStreamInitiationIq; class QXmppStreamPrivate; -class QXmppVersionIq; + +/// \brief The QXmppStream class is the base class for all XMPP streams. +/// class QXmppStream : public QObject { Q_OBJECT public: - QXmppStream(QSslSocket *socket, QObject *parent); + QXmppStream(QObject *parent); ~QXmppStream(); - void connectToHost(); - void disconnectFromHost(); - bool isConnected() const; - bool sendData(const QByteArray&); - bool sendPacket(const QXmppPacket&); - - QAbstractSocket::SocketError socketError(); - QXmppStanza::Error::Condition xmppStreamError(); - QXmppConfiguration& configuration(); + bool isConnected() const; + void disconnectFromHost(); QXmppLogger *logger(); void setLogger(QXmppLogger *logger); - QXmppElementList presenceExtensions() const; + bool sendData(const QByteArray&); + bool sendElement(const QDomElement&); + bool sendPacket(const QXmppPacket&); signals: - // socket host found - void hostFound(); - - // socket connected + /// This signal is emitted when the stream is connected. void connected(); - // socket disconnected + /// This signal is emitted when the stream is disconnected. void disconnected(); - // xmpp connected - void xmppConnected(); + /// This signal is emitted when an element is received. + void elementReceived(const QDomElement &element, bool &handled); /// This signal is emitted to send logging messages. void logMessage(QXmppLogger::MessageType type, const QString &msg); - void error(QXmppClient::Error); - void elementReceived(const QDomElement &element, bool &handled); - void presenceReceived(const QXmppPresence&); - void messageReceived(const QXmppMessage&); - void iqReceived(const QXmppIq&); - void rosterIqReceived(const QXmppRosterIq&); - void vCardIqReceived(const QXmppVCard&); - - void rpcCallInvoke(const QXmppRpcInvokeIq &invoke); - void rpcCallResponse(const QXmppRpcResponseIq& result); - void rpcCallError(const QXmppRpcErrorIq &err); - - void archiveChatIqReceived(const QXmppArchiveChatIq&); - void archiveListIqReceived(const QXmppArchiveListIq&); - void archivePrefIqReceived(const QXmppArchivePrefIq&); - - void discoveryIqReceived(const QXmppDiscoveryIq&); - - void byteStreamIqReceived(const QXmppByteStreamIq&); - void ibbCloseIqReceived(const QXmppIbbCloseIq&); - void ibbDataIqReceived(const QXmppIbbDataIq&); - void ibbOpenIqReceived(const QXmppIbbOpenIq&); - void streamInitiationIqReceived(const QXmppStreamInitiationIq&); - - // XEP-0045: Multi-User Chat - void mucAdminIqReceived(const QXmppMucAdminIq&); - void mucOwnerIqReceived(const QXmppMucOwnerIq&); - - // XEP-0166: Jingle - void jingleIqReceived(const QXmppJingleIq&); - protected: // Logging helpers void debug(const QString&); void info(const QString&); void warning(const QString&); + // Access to underlying socket + QSslSocket *socket(); + void setSocket(QSslSocket *socket); + // Overridable methods - virtual void handleStanza(const QDomElement &element); - virtual void handleStream(const QDomElement &element); - virtual bool sendStartStream(); - virtual bool sendEndStream(); + virtual void handleStart(); + virtual void handleStanza(const QDomElement &element) = 0; + virtual void handleStream(const QDomElement &element) = 0; private slots: - void socketHostFound(); - void socketReadReady(); - void socketEncrypted(); void socketConnected(); void socketDisconnected(); - void socketError(QAbstractSocket::SocketError); - void socketSslErrors(const QList<QSslError>&); - - void pingStart(); - void pingStop(); - void pingSend(); - void pingTimeout(); + void socketEncrypted(); + void socketReadyRead(); private: - QXmppDiscoveryIq capabilities() const; - void flushDataBuffer(); - void parser(const QByteArray&); - void sendNonSASLAuth(bool plaintext); - void sendNonSASLAuthQuery(); - void sendAuthDigestMD5ResponseStep1(const QString& challenge); - void sendAuthDigestMD5ResponseStep2(); - void sendBindIQ(); - void sendSessionIQ(); - QXmppStreamPrivate * const d; }; |
