client.h

00001 /*
00002   Copyright (c) 2004-2006 by Jakob Schroeter <js@camaya.net>
00003   This file is part of the gloox library. http://camaya.net/gloox
00004 
00005   This software is distributed under a license. The full license
00006   agreement can be found in the file LICENSE in this distribution.
00007   This software may not be copied, modified, sold or distributed
00008   other than expressed in the named license agreement.
00009 
00010   This software is distributed without any warranty.
00011 */
00012 
00013 
00014 #ifndef CLIENT_H__
00015 #define CLIENT_H__
00016 
00017 #include "clientbase.h"
00018 #include "iqhandler.h"
00019 
00020 #include <string>
00021 
00022 namespace gloox
00023 {
00024 
00025   class RosterManager;
00026   class Disco;
00027   class NonSaslAuth;
00028   class Stanza;
00029 
00101   class GLOOX_API Client : public ClientBase
00102   {
00103     public:
00104 
00105       friend class NonSaslAuth;
00106       friend class Parser;
00107 
00114       Client( const std::string& server );
00115 
00126       Client( const JID& jid, const std::string& password, int port = -1 );
00127 
00140       Client( const std::string& username, const std::string& password,
00141               const std::string& server, const std::string& resource, int port = -1 );
00142 
00146       virtual ~Client();
00147 
00153       void bindResource();
00154 
00159       virtual const std::string username() const { return m_jid.username(); };
00160 
00165       std::string const resource() const { return m_jid.resource(); };
00166 
00171       int priority() const { return m_priority; };
00172 
00177       void setUsername( const std::string &username );
00178 
00183       void setResource( const std::string &resource ) { m_jid.setResource( resource ); };
00184 
00189       void setInitialPriority( int priority );
00190 
00197       void setAutoPresence( bool autoPresence ) { m_autoPresence = autoPresence; };
00198 
00204       GLOOX_DEPRECATED void setForceNonSasl( bool force = true ) { m_forceNonSasl = force; };
00205 
00212       void disableDisco();
00213 
00219       void disableRoster();
00220 
00225       RosterManager* rosterManager();
00226 
00231       Disco* disco();
00232 
00236       void disconnect();
00237 
00238     protected:
00242       void nonSaslLogin();
00243 
00244     private:
00245       virtual void handleStartNode() {};
00246       virtual bool handleNormalNode( Stanza *stanza );
00247       virtual void disconnect( ConnectionError reason );
00248       int getStreamFeatures( Stanza *stanza );
00249       int getSaslMechs( Tag *tag );
00250       int getCompressionMethods( Tag *tag );
00251       void processResourceBind( Stanza *stanza );
00252       void processCreateSession( Stanza *stanza );
00253       void sendInitialPresence();
00254       void createSession();
00255       void negotiateCompression( StreamFeature method );
00256       void connected();
00257       virtual void rosterFilled();
00258 
00259       void init();
00260 
00261       RosterManager *m_rosterManager;
00262       NonSaslAuth *m_auth;
00263       Disco *m_disco;
00264 
00265       bool m_resourceBound;
00266       bool m_autoPresence;
00267       bool m_forceNonSasl;
00268       bool m_manageRoster;
00269       bool m_handleDisco;
00270       bool m_doAuth;
00271 
00272       int m_streamFeatures;
00273       int m_priority;
00274 
00275   };
00276 
00277 }
00278 
00279 #endif // CLIENT_H__

Generated on Wed Dec 20 18:25:28 2006 for gloox by  doxygen 1.5.1