connectionbase.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CONNECTIONBASE_H__
00016 #define CONNECTIONBASE_H__
00017
00018 #include "gloox.h"
00019 #include "connectiondatahandler.h"
00020
00021 #include <string>
00022
00023 namespace gloox
00024 {
00025
00034 class GLOOX_API ConnectionBase
00035 {
00036 public:
00042 ConnectionBase( ConnectionDataHandler *cdh )
00043 : m_handler( cdh ), m_state( StateDisconnected ), m_port( -1 )
00044 {}
00045
00049 virtual ~ConnectionBase() { cleanup(); }
00050
00055 virtual ConnectionError connect() = 0;
00056
00062 virtual ConnectionError recv( int timeout = -1 ) = 0;
00063
00071 virtual bool send( const std::string& data ) = 0;
00072
00078 virtual ConnectionError receive() = 0;
00079
00083 virtual void disconnect() = 0;
00084
00089 virtual void cleanup() {}
00090
00095 ConnectionState state() const { return m_state; }
00096
00102 void registerConnectionDataHandler( ConnectionDataHandler *cdh ) { m_handler = cdh; }
00103
00109 void setServer( const std::string &server, int port = -1 ) { m_server = server; m_port = port; }
00110
00115 const std::string& server() const { return m_server; }
00116
00122 virtual void getStatistics( int &totalIn, int &totalOut ) = 0;
00123
00130 virtual ConnectionBase* newInstance() const = 0;
00131
00132 protected:
00133 ConnectionDataHandler *m_handler;
00134 ConnectionState m_state;
00135 std::string m_server;
00136 int m_port;
00137
00138 };
00139
00140 }
00141
00142 #endif // CONNECTIONBASE_H__