Disco Class Reference

This class implements XEP-0030 (Service Discovery) and XEP-0092 (Software Version). More...

#include <disco.h>

Inheritance diagram for Disco:

Inheritance graph
[legend]
Collaboration diagram for Disco:

Collaboration graph
[legend]

List of all members.

Public Member Functions

void addFeature (const std::string &feature)
void removeFeature (const std::string &feature)
const StringListfeatures () const
void getDiscoInfo (const JID &to, const std::string &node, DiscoHandler *dh, int context, const std::string &tid="")
void getDiscoItems (const JID &to, const std::string &node, DiscoHandler *dh, int context, const std::string &tid="")
void setVersion (const std::string &name, const std::string &version, const std::string &os="")
void setIdentity (const std::string &category, const std::string &type)
void registerDiscoHandler (DiscoHandler *dh)
void removeDiscoHandler (DiscoHandler *dh)
void registerNodeHandler (DiscoNodeHandler *nh, const std::string &node)
void removeNodeHandler (DiscoNodeHandler *nh, const std::string &node)
virtual bool handleIq (Stanza *stanza)
virtual bool handleIqID (Stanza *stanza, int context)


Detailed Description

This class implements XEP-0030 (Service Discovery) and XEP-0092 (Software Version).

ClientBase will automatically instantiate a Disco object. It can be used to announce special features of your client, or its version, or...

XEP version: 2.2

Author:
Jakob Schroeter <js@camaya.net>

Definition at line 44 of file disco.h.


Member Function Documentation

void addFeature ( const std::string &  feature  ) 

Adds a feature to the list of supported Jabber features. The list will be posted as an answer to IQ queries in the "http://jabber.org/protocol/disco#info" namespace. These IQ packets will also be forwarded to the application's IqHandler, if it listens to the disco#info namespace. By default, disco(very) queries are handled by the library. By default, all supported, not disabled features are announced.

Parameters:
feature A feature (namespace) the host app supports.
Note:
Use this function for non-queryable features. For nodes that shall answer to disco#info queries, use registerNodeHandler().

Definition at line 216 of file disco.cpp.

void removeFeature ( const std::string &  feature  ) 

Removes the given feature from the list of advertised client features.

Parameters:
feature The feature to remove.
Since:
0.9

Definition at line 221 of file disco.cpp.

const StringList& features (  )  const [inline]

Lets you retrieve the features this Disco instance supports.

Returns:
A list of disco items.

Definition at line 74 of file disco.h.

void getDiscoInfo ( const JID to,
const std::string &  node,
DiscoHandler dh,
int  context,
const std::string &  tid = "" 
)

Queries the given JID for general infomation according to XEP-0030 (Service Discovery). To receive the results inherit from DiscoHandler and register with the Disco object.

Parameters:
to The destination-JID of the query.
node An optional node to query. Not inserted if empty.
dh The DiscoHandler to notify about results.
context A context identifier.
tid An optional id that is going to be used as the IQ request's id. Only necessary if you need to know the request's id.

Definition at line 226 of file disco.cpp.

void getDiscoItems ( const JID to,
const std::string &  node,
DiscoHandler dh,
int  context,
const std::string &  tid = "" 
)

Queries the given JID for its items according to XEP-0030 (Service Discovery). To receive the results inherit from DiscoHandler and register with the Disco object.

Parameters:
to The destination-JID of the query.
node An optional node to query. Not inserted if empty.
dh The DiscoHandler to notify about results.
context A context identifier.
tid An optional id that is going to be used as the IQ request's id. Only necessary if you need to know the request's id.

Definition at line 249 of file disco.cpp.

void setVersion ( const std::string &  name,
const std::string &  version,
const std::string &  os = "" 
)

Sets the version of the host application using this library. The library takes care of jabber:iq:version requests. These IQ packets will not be forwarded to the IqHandlers.

Parameters:
name The name to be returned to inquireing clients.
version The version to be returned to inquireing clients.
os The operating system to announce. Default: don't include.

Definition at line 272 of file disco.cpp.

void setIdentity ( const std::string &  category,
const std::string &  type 
)

Sets the identity of this entity. The library uses this information to answer disco::info requests with a correct identity. XEP-0030 requires an entity to have at least one identity. See XEP-0030 for more information on categories and types.

Parameters:
category The entity category of this client. Default: client
type The type of this entity. Default: bot

Definition at line 279 of file disco.cpp.

void registerDiscoHandler ( DiscoHandler dh  ) 

Use this function to register an DiscoHandler with the Disco object. This is only necessary if you want to receive Disco-set requests. Else a one-time registration happens when calling getDiscoInfo() and getDiscoItems(), respectively.

Parameters:
dh The DiscoHandler-derived object to register.

Definition at line 285 of file disco.cpp.

void removeDiscoHandler ( DiscoHandler dh  ) 

Unregisters the given DiscoHandler.

Parameters:
dh The DiscoHandler to unregister.

Definition at line 290 of file disco.cpp.

void registerNodeHandler ( DiscoNodeHandler nh,
const std::string &  node 
)

Use this function to register a DiscoNodeHandler with the Disco object. The DiscoNodeHandler will receive disco::items queries which are directed to the corresponding node registered for the handler.

Parameters:
nh The NodeHandler-derived object to register.
node The node name to associate with this handler. Use an empty string to register for the root node.

Definition at line 295 of file disco.cpp.

void removeNodeHandler ( DiscoNodeHandler nh,
const std::string &  node 
)

Removes the node handler for the given node.

Parameters:
nh The NodeHandler to unregister.
node The node for which the handler shall be removed. Use an empty string to remove the root node's handler.

Definition at line 300 of file disco.cpp.

bool handleIq ( Stanza stanza  )  [virtual]

Reimplement this function if you want to be notified about incoming IQs.

Parameters:
stanza The complete Stanza.
Returns:
Indicates whether a request of type 'get' or 'set' has been handled. This includes the obligatory 'result' answer. If you return false, a 'error' will be sent.

Implements IqHandler.

Definition at line 47 of file disco.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.

Parameters:
stanza The complete Stanza.
context A value to restore context, stored with ClientBase::trackID().
Returns:
Indicates whether a request of type 'get' or 'set' has been handled. This includes the obligatory 'result' answer. If you return false, a 'error' will be sent.

Implements IqHandler.

Definition at line 183 of file disco.cpp.


The documentation for this class was generated from the following files:
Generated on Sat Nov 10 08:50:33 2007 for gloox by  doxygen 1.5.3-20071008