diff options
Diffstat (limited to 'Swiften/Client')
-rw-r--r-- | Swiften/Client/Client.h | 26 | ||||
-rw-r--r-- | Swiften/Client/CoreClient.h | 103 |
2 files changed, 106 insertions, 23 deletions
diff --git a/Swiften/Client/Client.h b/Swiften/Client/Client.h index eb3fc09..47a276a 100644 --- a/Swiften/Client/Client.h +++ b/Swiften/Client/Client.h @@ -29,12 +29,16 @@ namespace Swift { * * Besides connecting to an XMPP server, this class also provides interfaces for * performing most tasks on the XMPP network. - * - * \param storages The interfaces for storing cache information etc. If this is NULL, - * all data will be stored in memory (and be lost on shutdown) */ class Client : public CoreClient { public: + /** + * Constructs a client for the given JID with the given password. + * + * \param storages The interfaces for storing cache information etc. If + * this is NULL, + * all data will be stored in memory (and be lost on shutdown) + */ Client(const JID& jid, const String& password, Storages* storages = NULL); ~Client(); @@ -46,16 +50,18 @@ namespace Swift { */ void setSoftwareVersion(const String& name, const String& version); - /** + /** * Returns a representation of the roster. * - * The roster is initially empty. To populate it, call requestRoster(), which - * will request the roster from the server. When the roster has been requested, - * it will also be kept up to date when it is updated on the server side. + * The roster is initially empty. To populate it, call requestRoster(), + * which will request the roster from the server. When the roster has + * been requested, it will also be kept up to date when it is updated on + * the server side. * - * This pointer remains the same across the lifetime of Client. All changes - * to the roster (e.g. after the initial roster request, or after subsequent - * roster updates) are notified through the XMPPRoster's signals. + * This pointer remains the same across the lifetime of Client. All + * changes to the roster (e.g. after the initial roster request, or after + * subsequent roster updates) are notified through the XMPPRoster's + * signals. * * \see requestRoster() */ diff --git a/Swiften/Client/CoreClient.h b/Swiften/Client/CoreClient.h index 24f44fc..f440dfe 100644 --- a/Swiften/Client/CoreClient.h +++ b/Swiften/Client/CoreClient.h @@ -32,38 +32,63 @@ namespace Swift { class ClientSession; class BasicSessionStream; - /** + /** * The central class for communicating with an XMPP server. * - * This class is responsible for setting up the connection with the XMPP server, authenticating, and - * initializing the session. + * This class is responsible for setting up the connection with the XMPP + * server, authenticating, and initializing the session. * - * This class can be used directly in your application, although the Client subclass provides more - * functionality and interfaces, and is better suited for most needs. + * This class can be used directly in your application, although the Client + * subclass provides more functionality and interfaces, and is better suited + * for most needs. */ - class CoreClient { - public: - CoreClient(const JID& jid, const String& password); + class CoreClient { + public: + /** + * Constructs a client for the given JID with the given password. + */ + CoreClient(const JID& jid, const String& password); ~CoreClient(); void setCertificate(const String& certificate); + /** + * Connects the client to the server. + * + * After the connection is established, the client will set + * initialize the stream and authenticate. + */ void connect(); + + /** + * Disconnects the client from the server. + */ + void disconnect(); + void connect(const JID& jid); void connect(const String& host); - void disconnect(); + /** + * Sends a message. + */ void sendMessage(Message::ref); + + /** + * Sends a presence stanza. + */ void sendPresence(Presence::ref); + /** + * Returns the IQ router for this client. + */ IQRouter* getIQRouter() const { return iqRouter_; } - StanzaChannel* getStanzaChannel() const { - return stanzaChannel_; - } - + /** + * Checks whether the client is connected to the server, + * and stanzas can be sent. + */ bool isAvailable() const { return stanzaChannel_->isAvailable(); } @@ -81,14 +106,66 @@ namespace Swift { } } + /** + * Checks whether stream management is enabled. + * + * If stream management is enabled, onStanzaAcked will be + * emitted when a stanza is received by the server. + * + * \see onStanzaAcked + */ + bool getStreamManagementEnabled() const { + return stanzaChannel_->getStreamManagementEnabled(); + } + + StanzaChannel* getStanzaChannel() const { + return stanzaChannel_; + } + public: + /** + * Emitted when a non-recoverable error occurs. + */ boost::signal<void (const ClientError&)> onError; + + /** + * Emitted when the client is connected and authenticated, + * and stanzas can be sent. + */ boost::signal<void ()> onConnected; + + /** + * Emitted when the client receives data. + * + * This signal is emitted before the XML data is parsed, + * so this data is unformatted. + */ boost::signal<void (const String&)> onDataRead; + + /** + * Emitted when the client sends data. + * + * This signal is emitted after the XML was serialized, and + * is unformatted. + */ boost::signal<void (const String&)> onDataWritten; + /** + * Emitted when a message is received. + */ boost::signal<void (Message::ref)> onMessageReceived; + + /** + * Emitted when a presence stanza is received. + */ boost::signal<void (Presence::ref) > onPresenceReceived; + + /** + * Emitted when the server acknowledges receipt of a + * stanza (if acknowledgements are available). + * + * \see getStreamManagementEnabled() + */ boost::signal<void (Stanza::ref)> onStanzaAcked; private: |