QXmpp Version: 0.9.3
QXmppClient.h
1/*
2 * Copyright (C) 2008-2014 The QXmpp developers
3 *
4 * Author:
5 * Manjeet Dahiya
6 *
7 * Source:
8 * https://github.com/qxmpp-project/qxmpp
9 *
10 * This file is a part of QXmpp library.
11 *
12 * This library is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public
14 * License as published by the Free Software Foundation; either
15 * version 2.1 of the License, or (at your option) any later version.
16 *
17 * This library is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
21 *
22 */
23
24#ifndef QXMPPCLIENT_H
25#define QXMPPCLIENT_H
26
27#include <QObject>
28#include <QAbstractSocket>
29
30#include "QXmppConfiguration.h"
31#include "QXmppLogger.h"
32#include "QXmppPresence.h"
33
34class QSslError;
35
37class QXmppClientPrivate;
38class QXmppPresence;
39class QXmppMessage;
40class QXmppIq;
41class QXmppStream;
42
43// managers
44class QXmppDiscoveryIq;
48
50
52
79
80class QXMPP_EXPORT QXmppClient : public QXmppLoggable
81{
82 Q_OBJECT
83 Q_ENUMS(Error State)
84 Q_PROPERTY(QXmppLogger* logger READ logger WRITE setLogger NOTIFY loggerChanged)
85 Q_PROPERTY(State state READ state NOTIFY stateChanged)
86
87public:
90 enum Error
91 {
95 XmppStreamError
96 };
97
99 enum State
100 {
103 ConnectedState
104 };
105
106 QXmppClient(QObject *parent = 0);
107 ~QXmppClient();
108
109 bool addExtension(QXmppClientExtension* extension);
110 bool insertExtension(int index, QXmppClientExtension* extension);
111 bool removeExtension(QXmppClientExtension* extension);
112
113 QList<QXmppClientExtension*> extensions();
114
127 template<typename T>
129 {
130 QList<QXmppClientExtension*> list = extensions();
131 for (int i = 0; i < list.size(); ++i)
132 {
133 T* extension = qobject_cast<T*>(list.at(i));
134 if(extension)
135 return extension;
136 }
137 return 0;
138 }
139
140 bool isAuthenticated() const;
141 bool isConnected() const;
142
143 QXmppPresence clientPresence() const;
144 void setClientPresence(const QXmppPresence &presence);
145
146 QXmppConfiguration &configuration();
147 QXmppLogger *logger() const;
148 void setLogger(QXmppLogger *logger);
149
150 QAbstractSocket::SocketError socketError();
151 QString socketErrorString() const;
152 State state() const;
153 QXmppStanza::Error::Condition xmppStreamError();
154
155 QXmppRosterManager& rosterManager();
156 QXmppVCardManager& vCardManager();
157 QXmppVersionManager& versionManager();
158
159signals:
160
180 void connected();
181
185
192
195
200 void messageReceived(const QXmppMessage &message);
201
206 void presenceReceived(const QXmppPresence &presence);
207
212 void iqReceived(const QXmppIq &iq);
213
216 void sslErrors(const QList<QSslError> &errors);
217
220
221public slots:
222 void connectToServer(const QXmppConfiguration&,
223 const QXmppPresence& initialPresence =
224 QXmppPresence());
225 void connectToServer(const QString &jid,
226 const QString &password);
227 void disconnectFromServer();
228 bool sendPacket(const QXmppStanza&);
229 void sendMessage(const QString& bareJid, const QString& message);
230
231private slots:
232 void _q_elementReceived(const QDomElement &element, bool &handled);
233 void _q_reconnect();
234 void _q_socketStateChanged(QAbstractSocket::SocketState state);
235 void _q_streamConnected();
236 void _q_streamDisconnected();
237 void _q_streamError(QXmppClient::Error error);
238
239private:
240 QXmppClientPrivate * const d;
241};
242
243#endif // QXMPPCLIENT_H
The QXmppClientExtension class is the base class for QXmppClient extensions.
Definition: QXmppClientExtension.h:48
The QXmppClient class is the main class for using QXmpp.
Definition: QXmppClient.h:81
void presenceReceived(const QXmppPresence &presence)
void error(QXmppClient::Error)
void connected()
State
This enumeration describes a client state.
Definition: QXmppClient.h:100
@ DisconnectedState
Disconnected from the server.
Definition: QXmppClient.h:101
@ ConnectingState
Trying to connect to the server.
Definition: QXmppClient.h:102
void loggerChanged(QXmppLogger *logger)
This signal is emitted when the logger changes.
Error
Definition: QXmppClient.h:91
@ NoError
No error.
Definition: QXmppClient.h:92
@ KeepAliveError
Error due to no response to a keep alive.
Definition: QXmppClient.h:94
@ SocketError
Error due to TCP socket.
Definition: QXmppClient.h:93
void sslErrors(const QList< QSslError > &errors)
void stateChanged(QXmppClient::State state)
This signal is emitted when the client state changes.
void messageReceived(const QXmppMessage &message)
void iqReceived(const QXmppIq &iq)
T * findExtension()
Returns the extension which can be cast into type T*, or 0 if there is no such extension.
Definition: QXmppClient.h:128
void disconnected()
The QXmppConfiguration class holds configuration options.
Definition: QXmppConfiguration.h:49
The QXmppIq class is the base class for all IQs.
Definition: QXmppIq.h:43
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:112
The QXmppLogger class represents a sink for logging messages.
Definition: QXmppLogger.h:46
The QXmppMessage class represents an XMPP message.
Definition: QXmppMessage.h:39
The QXmppPresence class represents an XMPP presence stanza.
Definition: QXmppPresence.h:37
The QXmppRosterManager class provides access to a connected client's roster.
Definition: QXmppRosterManager.h:65
The QXmppStanza class is the base class for all XMPP stanzas.
Definition: QXmppStanza.h:91
The QXmppStream class is the base class for all XMPP streams.
Definition: QXmppStream.h:42
The QXmppVCardManager class gets/sets XMPP vCards. It is an implementation of XEP-0054: vcard-temp.
Definition: QXmppVCardManager.h:57
The QXmppVersionManager class makes it possible to request for the software version of an entity as d...
Definition: QXmppVersionManager.h:38