diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:33:41 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:33:41 +0000 |
| commit | 21acd67e9b65bea87902032b12709675905aa922 (patch) | |
| tree | ed5ae9066b10400c4fe6e67dfaf2f4c37a09c32e /src/QXmppClient.h | |
| parent | cea7ae1e702b82d2d0d0a851de1aae58270b14f6 (diff) | |
| download | qxmpp-21acd67e9b65bea87902032b12709675905aa922.tar.gz | |
start moving client-specific code
Diffstat (limited to 'src/QXmppClient.h')
| -rw-r--r-- | src/QXmppClient.h | 244 |
1 files changed, 0 insertions, 244 deletions
diff --git a/src/QXmppClient.h b/src/QXmppClient.h deleted file mode 100644 index 3e1d8536..00000000 --- a/src/QXmppClient.h +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (C) 2008-2011 The QXmpp developers - * - * Author: - * Manjeet Dahiya - * - * Source: - * http://code.google.com/p/qxmpp - * - * This file is a part of QXmpp library. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - */ - -#ifndef QXMPPCLIENT_H -#define QXMPPCLIENT_H - -#include <QObject> -#include <QAbstractSocket> - -#include "QXmppConfiguration.h" -#include "QXmppLogger.h" -#include "QXmppPresence.h" - -class QXmppClientExtension; -class QXmppClientPrivate; -class QXmppPresence; -class QXmppMessage; -class QXmppPacket; -class QXmppIq; -class QXmppStream; - -// managers -class QXmppDiscoveryIq; -class QXmppReconnectionManager; -class QXmppRosterManager; -class QXmppVCardManager; -class QXmppVersionManager; - -/// \defgroup Core - -/// \defgroup Managers - -/// \brief The QXmppClient class is the main class for using QXmpp. -/// -/// It provides the user all the required functionality to connect to the server -/// and perform operations afterwards. -/// -/// This class will provide the handle/reference to QXmppRosterManager (roster management), -/// QXmppVCardManager (vCard manager), QXmppReconnectionManager (reconnection -/// mechanism) and QXmppVersionManager (software version information). -/// -/// By default, a reconnection mechanism exists, which makes sure of reconnecting -/// to the server on disconnections due to an error. User can have a custom -/// reconnection mechanism as well. -/// -/// Not all the managers or extensions have been enabled by default. One can -/// enable/disable the managers using the funtions addExtension() and -/// removeExtension(). findExtension() can be used to find reference/pointer to -/// particular instansiated and enabled manager. -/// -/// List of managers enabled by default: -/// - QXmppRosterManager -/// - QXmppVCardManager -/// - QXmppVersionManager -/// - QXmppDiscoveryManager -/// - QXmppEntityTimeManager -/// -/// \ingroup Core - -class QXmppClient : public QXmppLoggable -{ - Q_OBJECT - Q_ENUMS(Error State) - Q_PROPERTY(QXmppLogger* logger READ logger WRITE setLogger NOTIFY loggerChanged) - Q_PROPERTY(State state READ state NOTIFY stateChanged) - -public: - /// An enumeration for type of error. - /// Error could come due a TCP socket or XML stream or due to various stanzas. - enum Error - { - NoError, ///< No error. - SocketError, ///< Error due to TCP socket. - KeepAliveError, ///< Error due to no response to a keep alive. - XmppStreamError, ///< Error due to XML stream. - }; - - /// This enumeration describes a client state. - enum State - { - DisconnectedState, ///< Disconnected from the server. - ConnectingState, ///< Trying to connect to the server. - ConnectedState, ///< Connected to the server. - }; - - QXmppClient(QObject *parent = 0); - ~QXmppClient(); - - bool addExtension(QXmppClientExtension* extension); - bool removeExtension(QXmppClientExtension* extension); - - QList<QXmppClientExtension*> extensions(); - - /// \brief Returns the extension which can be cast into type T*, or 0 - /// if there is no such extension. - /// - /// Usage example: - /// \code - /// QXmppDiscoveryManager* ext = client->findExtension<QXmppDiscoveryManager>(); - /// if(ext) - /// { - /// //extension found, do stuff... - /// } - /// \endcode - /// - template<typename T> - T* findExtension() - { - QList<QXmppClientExtension*> list = extensions(); - for (int i = 0; i < list.size(); ++i) - { - T* extension = qobject_cast<T*>(list.at(i)); - if(extension) - return extension; - } - return 0; - } - - void connectToServer(const QXmppConfiguration&, - const QXmppPresence& initialPresence = - QXmppPresence()); - bool isConnected() const; - - QXmppPresence clientPresence() const; - void setClientPresence(const QXmppPresence &presence); - - QXmppConfiguration &configuration(); - QXmppLogger *logger() const; - void setLogger(QXmppLogger *logger); - - QAbstractSocket::SocketError socketError(); - State state() const; - QXmppStanza::Error::Condition xmppStreamError(); - - QXmppRosterManager& rosterManager(); - QXmppVCardManager& vCardManager(); - QXmppVersionManager& versionManager(); - - QXmppReconnectionManager* reconnectionManager(); - bool setReconnectionManager(QXmppReconnectionManager*); - -signals: - - /// This signal is emitted when the client connects successfully to the XMPP - /// server i.e. when a successful XMPP connection is established. - /// XMPP Connection involves following sequential steps: - /// - TCP socket connection - /// - Client sends start stream - /// - Server sends start stream - /// - TLS negotiation (encryption) - /// - Authentication - /// - Resource binding - /// - Session establishment - /// - /// After all these steps a successful XMPP connection is established and - /// connected() signal is emitted. - /// - /// After the connected() signal is emitted QXmpp will send the roster request - /// to the server. On receiving the roster, QXmpp will emit - /// QXmppRosterManager::rosterReceived(). After this signal, QXmppRosterManager object gets - /// populated and you can use rosterManager() to get the handle of QXmppRosterManager object. - /// - void connected(); - - /// This signal is emitted when the XMPP connection disconnects. - /// - void disconnected(); - - /// This signal is emitted when the XMPP connection encounters any error. - /// The QXmppClient::Error parameter specifies the type of error occurred. - /// It could be due to TCP socket or the xml stream or the stanza. - /// Depending upon the type of error occurred use the respective get function to - /// know the error. - void error(QXmppClient::Error); - - /// This signal is emitted when the logger changes. - void loggerChanged(QXmppLogger *logger); - - /// Notifies that an XMPP message stanza is received. The QXmppMessage - /// parameter contains the details of the message sent to this client. - /// In other words whenever someone sends you a message this signal is - /// emitted. - void messageReceived(const QXmppMessage &message); - - /// Notifies that an XMPP presence stanza is received. The QXmppPresence - /// parameter contains the details of the presence sent to this client. - /// This signal is emitted when someone login/logout or when someone's status - /// changes Busy, Idle, Invisible etc. - void presenceReceived(const QXmppPresence &presence); - - /// Notifies that an XMPP iq stanza is received. The QXmppIq - /// parameter contains the details of the iq sent to this client. - /// IQ stanzas provide a structured request-response mechanism. Roster - /// management, setting-getting vCards etc is done using iq stanzas. - void iqReceived(const QXmppIq &iq); - - /// This signal is emitted when the client state changes. - void stateChanged(QXmppClient::State state); - - /// \cond - // Deprecated in release 0.3.0 - // Use QXmppDiscoveryManager::informationReceived(const QXmppDiscoveryIq&) - // Notifies that an XMPP service discovery iq stanza is received. - void discoveryIqReceived(const QXmppDiscoveryIq&); - /// \endcond - -public slots: - void connectToServer(const QString &jid, - const QString &password); - void disconnectFromServer(); - bool sendPacket(const QXmppPacket&); - void sendMessage(const QString& bareJid, const QString& message); - -private slots: - void _q_elementReceived(const QDomElement &element, bool &handled); - void _q_socketStateChanged(QAbstractSocket::SocketState state); - void _q_streamConnected(); - void _q_streamDisconnected(); - -private: - QXmppClientPrivate * const d; -}; - -#endif // QXMPPCLIENT_H |
