Disco Class Reference

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

#include <disco.h>

Inherits IqHandler.

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)
const StringListfeatures () const
void getDiscoInfo (const std::string &to, const std::string &node, DiscoHandler *dh, int context)
void getDiscoItems (const std::string &to, const std::string &node, DiscoHandler *dh, int context)
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 (const std::string &node)
virtual bool handleIq (Stanza *stanza)
virtual bool handleIqID (Stanza *stanza, int context)

Friends

class Client
class Component

Detailed Description

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

Client and Component will automatically instantiate a Disco obejct. It can be used to announce special features of your client, or its version, or...

Author:
Jakob Schroeter <js@camaya.net>

Definition at line 43 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. You can call Client::disableDisco() to disable automatic disco entirely. 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 222 of file disco.cpp.

Referenced by Adhoc::Adhoc(), InBandBytestreamManager::InBandBytestreamManager(), LastActivity::LastActivity(), and VCardManager::VCardManager().

const StringList& features (  )  const [inline]

Lets you retrieve the features this Disco instance supports.

Returns:
A list of disco items.

Definition at line 68 of file disco.h.

Referenced by Disco::handleIq().

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

Queries the given JID for general infomation according to JEP-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.

Definition at line 227 of file disco.cpp.

Referenced by FlexibleOffline::checkSupport(), and FlexibleOffline::getMsgCount().

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

Queries the given JID for its items according to JEP-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.

Definition at line 249 of file disco.cpp.

Referenced by FlexibleOffline::fetchHeaders().

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 271 of file disco.cpp.

Referenced by Component::Component().

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. JEP-0030 requires an entity to have at least one identity. See JEP-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 278 of file disco.cpp.

Referenced by Component::Component().

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 284 of file disco.cpp.

void removeDiscoHandler ( DiscoHandler dh  ) 

Unregisters the given DiscoHandler.

Parameters:
dh The DiscoHandler to unregister.

Definition at line 289 of file disco.cpp.

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

Use this function to register an DiscoNodeHandler with the Disco object. The DiscoNodeHandler will receive disco::items queries which are directed to the corresponding node registered for the handler. Only one handler per node is possible.

Parameters:
nh The NodeHandler-derived object to register.
node The node name to associate with this handler.

Definition at line 294 of file disco.cpp.

Referenced by Adhoc::Adhoc(), and Adhoc::registerAdhocCommandProvider().

void removeNodeHandler ( const std::string &  node  ) 

Removes the node handler.

Parameters:
node The node for which the handler shall be removed.

Definition at line 299 of file disco.cpp.

Referenced by Adhoc::removeAdhocCommandProvider(), and Adhoc::~Adhoc().

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 191 of file disco.cpp.


The documentation for this class was generated from the following files:
Generated on Tue May 1 14:20:23 2007 for gloox by  doxygen 1.5.1