Client Class Reference

This class implements a basic Jabber Client. More...

#include <client.h>

Inherits ClientBase.

Inheritance diagram for Client:

Inheritance graph
[legend]
Collaboration diagram for Client:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Client (const std::string &server)
 Client (const JID &jid, const std::string &password, int port=-1)
 Client (const std::string &username, const std::string &password, const std::string &server, const std::string &resource, int port=-1)
virtual ~Client ()
void bindResource ()
virtual const std::string username () const
std::string const resource () const
int priority () const
void setUsername (const std::string &username)
void setResource (const std::string &resource)
void setInitialPriority (int priority)
void setAutoPresence (bool autoPresence)
GLOOX_DEPRECATED void setForceNonSasl (bool force=true)
void disableDisco ()
void disableRoster ()
RosterManagerrosterManager ()
Discodisco ()

Protected Member Functions

void nonSaslLogin ()

Friends

class NonSaslAuth
class Parser

Detailed Description

This class implements a basic Jabber Client.

It supports SASL (Authentication) as well as TLS (Encryption), which can be switched on/off separately. They are used automatically if the server supports them.

To use, create a new Client instance and feed it connection credentials, either in the Constructor or afterwards using the setters. You should then register packet handlers implementing the corresponding Interfaces (ConnectionListener, PresenceHandler, MessageHandler, IqHandler, SubscriptionHandler), and call connect() to establish the connection to the server.

Simple usage example:

 using namespace gloox;

 void TestProg::doIt()
 {
   Client* j = new Client( "user@server/resource", "password" );
   j->registerPresenceHandler( this );
   j->setVersion( "TestProg", "1.0" );
   j->setIdentity( "client", "bot" );
   j->setAutoPresence( true );
   j->setInitialPriority( 5 );
   j->connect();
 }

 virtual void TestProg::presenceHandler( Stanza *stanza )
 {
   // handle incoming presence packets here
 }

However, you can skip the presence handling stuff if you make use of the RosterManager.

By default, the library handles a few (incoming) IQ namespaces on the application's behalf. These include:

Definition at line 81 of file client.h.


Constructor & Destructor Documentation

Client const std::string &  server  ) 
 

Constructs a new Client which can be used for account registration only. SASL and TLS are on by default. The port will be determined by looking up SRV records. Alternatively, you can set the port explicitly by calling setPort().

Parameters:
server The server to connect to.

Definition at line 37 of file client.cpp.

References ClientBase::m_jid, and JID::setServer().

Client const JID jid,
const std::string &  password,
int  port = -1
 

Constructs a new Client. SASL and TLS are on by default. This should be the default constructor for most use cases. The server address will be taken from the JID. The actual host will be resolved using SRV records. The domain part of the JID is used as a fallback in case no SRV record is found, or you can set the server address separately by calling setServer().

Parameters:
jid A full Jabber ID used for connecting to the server.
password The password used for authentication.
port The port to connect to. The default of -1 means to look up the port via DNS SRV.

Definition at line 48 of file client.cpp.

References ClientBase::jid(), ClientBase::m_jid, ClientBase::m_server, and JID::serverRaw().

Client const std::string &  username,
const std::string &  password,
const std::string &  server,
const std::string &  resource,
int  port = -1
 

Constructs a new Client. SASL and TLS are on by default. The actual host will be resolved using SRV records. The server value is used as a fallback in case no SRV record is found.

Parameters:
username The username/local part of the JID.
resource The resource part of the JID.
password The password to use for authentication.
server The Jabber ID'S server part and the host name to connect to. If those are different for your setup, use the second constructor instead.
port The port to connect to. The default of -1 means to look up the port via DNS SRV.

Definition at line 60 of file client.cpp.

References ClientBase::m_jid, JID::setResource(), JID::setServer(), and JID::setUsername().

~Client  )  [virtual]
 

Virtual destructor.

Definition at line 75 of file client.cpp.


Member Function Documentation

void bindResource  ) 
 

Use this function to re-try to bind a resource only in case you were notified about an error by means of ConnectionListener::onResourceBindError().

Definition at line 311 of file client.cpp.

References Tag::addAttrib(), Tag::addChild(), Client::resource(), and ClientBase::send().

void disableDisco  ) 
 

Disables automatic handling of disco queries. There is currently no way to re-enable disco query-handling.

Note:
This disables the browsing capabilities because both use the same Disco object.

Definition at line 433 of file client.cpp.

void disableRoster  ) 
 

Disables the automatic roster management. You have to keep track of incoming presence yourself if you want to have a roster.

Definition at line 440 of file client.cpp.

Disco * disco  ) 
 

This function gives access to the Disco object.

Returns:
A pointer to the Disco object.

Definition at line 478 of file client.cpp.

int priority  )  const [inline]
 

Returns the current priority.

Returns:
The priority of the current resource.

Definition at line 151 of file client.h.

std::string const resource  )  const [inline]
 

Returns the current prepped resource.

Returns:
The resource used to connect.

Definition at line 145 of file client.h.

Referenced by Client::bindResource().

RosterManager * rosterManager  ) 
 

This function gives access to the RosterManager object.

Returns:
A pointer to the RosterManager.

Definition at line 473 of file client.cpp.

void setAutoPresence bool  autoPresence  )  [inline]
 

Enables/disables the automatic sending of a presence packet upon successful authentication before the ConnectionListeners are notified. Default: off

Parameters:
autoPresence Whether to switch AutoPresence on or off.

Definition at line 177 of file client.h.

GLOOX_DEPRECATED void setForceNonSasl bool  force = true  )  [inline]
 

This is a temporary hack to allow login to google talk. You must set this to true to avoid SASL PLAIN login, which fails. Google talk does not announce availability of non-SASL auth which is why it has to be enabled explicitely.

Parameters:
force Whether to force non-SASL auth. Default true.
Deprecated:

Definition at line 186 of file client.h.

void setInitialPriority int  priority  ) 
 

Set initial priority. Legal values: -128 <= priority <= 127

Parameters:
priority The initial priority value.

Definition at line 463 of file client.cpp.

void setResource const std::string &  resource  )  [inline]
 

Sets the resource to use to connect to the XMPP server.

Parameters:
resource The resource to use to log into the server.

Definition at line 163 of file client.h.

void setUsername const std::string &  username  )  [inline]
 

Sets the username to use to connect to the XMPP server.

Parameters:
username The username to authenticate with.

Definition at line 157 of file client.h.

virtual const std::string username  )  const [inline, virtual]
 

Returns the current prepped username.

Returns:
The username used to connect.

Implements ClientBase.

Definition at line 139 of file client.h.

Referenced by NonSaslAuth::doAuth().


The documentation for this class was generated from the following files:
Generated on Mon Jan 16 16:19:56 2006 for gloox by  doxygen 1.4.6