diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-11 07:31:23 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-11 07:31:23 +0000 |
| commit | 40c39853816cfab113d79682c34bc76a2c79c357 (patch) | |
| tree | e4d6a184cf565cb87477339ce738299ff9787bc3 /src/server/QXmppServerConnection.h | |
| parent | 551c284e35280b7b91a939fe7352e496ffea402a (diff) | |
| download | qxmpp-40c39853816cfab113d79682c34bc76a2c79c357.tar.gz | |
rename "source" directory to "src"
Diffstat (limited to 'src/server/QXmppServerConnection.h')
| -rw-r--r-- | src/server/QXmppServerConnection.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/server/QXmppServerConnection.h b/src/server/QXmppServerConnection.h new file mode 100644 index 00000000..aa685dc8 --- /dev/null +++ b/src/server/QXmppServerConnection.h @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2008-2010 The QXmpp developers + * + * Authors: + * Manjeet Dahiya + * Sjors Gielen + * + * 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 QXMPPSERVERCONNECTION_H +#define QXMPPSERVERCONNECTION_H + +#include <QObject> +#include <QSslSocket> + +#include "QXmppClient.h" + +/** + * @brief The QXmppServerConnection class handles connections to other servers. + */ + +class QXmppServerConnection : public QObject +{ + Q_OBJECT + +public: + // should probably be moved to QXmppStream + enum Error + { + SocketError, ///< Error due to TCP socket + KeepAliveError, ///< Error due to no response to a keep alive + XmppStreamError, ///< Error due to XML stream + }; + + QXmppServerConnection(QSslSocket *serverSocket = 0, + const QByteArray &parseData = QByteArray(), QObject *parent = 0); + ~QXmppServerConnection(); + void connectToServer(const QString& host, + const QString& domain, + int port = 5269); + void disconnect(); + +signals: + + /// This signal is emitted when the client connects sucessfully 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 + /// QXmppRoster::rosterReceived(). After this signal, QXmppRoster object gets + /// populated and you can use getRoster() to get the handle of QXmppRoster 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 occured. + /// It could be due to TCP socket or the xml stream or the stanza. + /// Depending upon the type of error occured use the respective get function to + /// know the error. + void error(QXmppClient::Error); + + /// 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&); + +public: + QAbstractSocket::SocketError socketError(); + QXmppStanza::Error::Condition xmppStreamError(); + + QXmppLogger *logger(); + void setLogger(QXmppLogger *logger); + +public slots: + void sendPacket(const QXmppPacket&); + +private: + QXmppStream* m_stream; ///< Pointer to QXmppStream object, a wrapper over + ///< TCP socket and XMPP protocol +}; + +#endif // QXMPPCLIENT_H |
