#include <rostermanager.h>
Inherits IqHandler, PresenceHandler, SubscriptionHandler, and PrivateXMLHandler.
Inheritance diagram for RosterManager:
Public Member Functions | |
RosterManager (ClientBase *parent, bool self=false) | |
virtual | ~RosterManager () |
void | fill () |
RosterListener::Roster * | roster () |
void | subscribe (const std::string &jid, const std::string &name, StringList &groups, const std::string &msg) |
void | synchronize () |
void | add (const std::string &jid, const std::string &name, StringList &groups) |
void | unsubscribe (const std::string &jid, const std::string &msg, bool remove) |
void | ackSubscriptionRequest (const JID &to, bool ack) |
const std::string & | delimiter () const |
void | setDelimiter (const std::string &delimiter) |
RosterItem * | getRosterItem (const JID &jid) |
void | registerRosterListener (RosterListener *rl, bool syncSubscribeReq=true) |
void | removeRosterListener () |
virtual bool | handleIq (Stanza *stanza) |
virtual bool | handleIqID (Stanza *stanza, int context) |
virtual void | handlePresence (Stanza *stanza) |
virtual void | handleSubscription (Stanza *stanza) |
virtual void | handlePrivateXML (const std::string &tag, Tag *xml) |
virtual void | handlePrivateXMLResult (const std::string &uid, PrivateXMLResult result) |
It takes care of changing presence, subscriptions, etc. You can modify any number of RosterItems within the Roster at any time. These changes must be synchronized with the server by calling synchronize(). Note that incoming Roster pushes initiated by other resources may overwrite changed values. Additionally, JEP-0083 (Nested Roster Groups) is implemented herein.
Definition at line 46 of file rostermanager.h.
RosterManager | ( | ClientBase * | parent, | |
bool | self = false | |||
) |
Creates a new RosterManager.
parent | The Client which is used for communication. | |
self | Whether to automatically include a self-contact in the roster. Default: false. |
Definition at line 25 of file rostermanager.cpp.
~RosterManager | ( | ) | [virtual] |
Virtual destructor.
Definition at line 46 of file rostermanager.cpp.
void fill | ( | ) |
This function does the initial filling of the roster with the current server-side roster.
Definition at line 69 of file rostermanager.cpp.
RosterListener::Roster * roster | ( | ) |
This function returns the roster.
Definition at line 64 of file rostermanager.cpp.
void subscribe | ( | const std::string & | jid, | |
const std::string & | name, | |||
StringList & | groups, | |||
const std::string & | msg | |||
) |
Use this function to subscribe to a new JID. The contact is added to the roster automatically (by compliant servers, as required by RFC 3921).
jid | The address to subscribe to. | |
name | The displayed name of the contact. | |
groups | A list of groups the contact belongs to. | |
msg | A message sent along with the request. |
Definition at line 157 of file rostermanager.cpp.
void synchronize | ( | ) |
Synchronizes locally modified RosterItems back to the server.
Definition at line 231 of file rostermanager.cpp.
void add | ( | const std::string & | jid, | |
const std::string & | name, | |||
StringList & | groups | |||
) |
Use this function to add a contact to the roster. No subscription request is sent.
jid | The JID to add. | |
name | The displayed name of the contact. | |
groups | A list of groups the contact belongs to. |
Definition at line 176 of file rostermanager.cpp.
Referenced by RosterManager::handlePresence(), and RosterManager::subscribe().
void unsubscribe | ( | const std::string & | jid, | |
const std::string & | msg, | |||
bool | remove | |||
) |
Use this function to unsubscribe from a JID in the roster.
jid | The address to unsubscribe from. | |
msg | A message to send along with the request. | |
remove | Whether the contact should also be removed from the roster. |
Definition at line 203 of file rostermanager.cpp.
Referenced by RosterManager::handleSubscription().
void ackSubscriptionRequest | ( | const JID & | to, | |
bool | ack | |||
) |
Use this function to acknowledge a subscription request if you requested asynchronous subscription request handling.
to | The JID to authorize/decline. | |
ack | Whether to authorize or decline the contact's request. |
Definition at line 262 of file rostermanager.cpp.
Referenced by RosterManager::handleSubscription().
const std::string& delimiter | ( | ) | const [inline] |
Use this function to retrieve the delimiter of Nested Roster Groups (JEP-0083).
Definition at line 120 of file rostermanager.h.
void setDelimiter | ( | const std::string & | delimiter | ) |
Use this function to set the group delimiter (JEP-0083).
delimiter | The group delimiter. |
Definition at line 421 of file rostermanager.cpp.
RosterItem * getRosterItem | ( | const JID & | jid | ) |
Lets you retrieve the RosterItem that belongs to the given JID.
jid | The JID to return the RosterItem for. |
Definition at line 438 of file rostermanager.cpp.
void registerRosterListener | ( | RosterListener * | rl, | |
bool | syncSubscribeReq = true | |||
) |
Register rl
as object that receives updates on roster operations. For GUI applications it may be necessary to display a dialog or whatever to the user without blocking. If you want that, use asynchronous subscription requests. If you want to answer a request right away, make it synchronous.
rl | The object that receives roster updates. | |
syncSubscribeReq | Indicates whether (Un)SubscriptionRequests shall be handled synchronous (true) or asynchronous (false). Default: synchronous. |
Definition at line 334 of file rostermanager.cpp.
void removeRosterListener | ( | ) |
Complementary function to registerRosterListener. Removes the current RosterListener. Roster events will not be delivered anywhere.
Definition at line 340 of file rostermanager.cpp.
bool handleIq | ( | Stanza * | stanza | ) | [virtual] |
Reimplement this function if you want to be notified about incoming IQs.
stanza | The complete Stanza. |
Implements IqHandler.
Definition at line 81 of file rostermanager.cpp.
bool handleIqID | ( | Stanza * | stanza, | |
int | context | |||
) | [virtual] |
Reimplement this function if you want to be notified about incoming IQs with a specific value of the id
attribute. You have to enable tracking of those IDs using Client::trackID()
. This is usually useful for IDs that generate a positive reply, i.e. <iq type='result' id='reg'/> where a namespace filter wouldn't work.
stanza | The complete Stanza. | |
context | A value to restore context, stored with ClientBase::trackID(). |
Implements IqHandler.
Definition at line 109 of file rostermanager.cpp.
void handlePresence | ( | Stanza * | stanza | ) | [virtual] |
Reimplement this function if you want to be updated on incoming presence notifications.
stanza | The complete stanza. |
Implements PresenceHandler.
Definition at line 114 of file rostermanager.cpp.
void handleSubscription | ( | Stanza * | stanza | ) | [virtual] |
Reimplement this function if you want to be notified about incoming subscriptions/subscription requests.
stanza | The complete Stanza. |
Implements SubscriptionHandler.
Definition at line 275 of file rostermanager.cpp.
void handlePrivateXML | ( | const std::string & | tag, | |
Tag * | xml | |||
) | [virtual] |
Reimplement this function to receive the private XML that was requested earlier using PrivateXML::requestXML()
.
tag | The tag of the storage packet. | |
xml | The private xml, i.e. the first child of the <query> tag. |
Implements PrivateXMLHandler.
Definition at line 429 of file rostermanager.cpp.
void handlePrivateXMLResult | ( | const std::string & | uid, | |
PrivateXMLResult | result | |||
) | [virtual] |
This function is called to notify about the result of a 'store' or 'request' operation (successful requests are announced by means of handlePrivateXML()).
uid | The ID of the query. | |
result | The result of the operation. |
Implements PrivateXMLHandler.
Definition at line 434 of file rostermanager.cpp.