gloox
1.1-svn
|
#include <connectionbosh.h>
Public Types | |
enum | ConnMode { ModeLegacyHTTP, ModePersistentHTTP, ModePipelining } |
Public Member Functions | |
ConnectionBOSH (ConnectionBase *connection, const LogSink &logInstance, const std::string &boshHost, const std::string &xmppServer, int xmppPort=5222) | |
ConnectionBOSH (ConnectionDataHandler *cdh, ConnectionBase *connection, const LogSink &logInstance, const std::string &boshHost, const std::string &xmppServer, int xmppPort=5222) | |
virtual | ~ConnectionBOSH () |
void | setServer (const std::string &xmppHost, unsigned short xmppPort=5222) |
void | setPath (const std::string &path) |
void | setMode (ConnMode mode) |
Public Member Functions inherited from ConnectionBase | |
ConnectionBase (ConnectionDataHandler *cdh) | |
virtual | ~ConnectionBase () |
virtual ConnectionError | connect ()=0 |
virtual ConnectionError | recv (int timeout=-1)=0 |
virtual bool | send (const std::string &data)=0 |
virtual ConnectionError | receive ()=0 |
virtual void | disconnect ()=0 |
virtual void | cleanup () |
ConnectionState | state () const |
void | registerConnectionDataHandler (ConnectionDataHandler *cdh) |
void | setServer (const std::string &server, int port=-1) |
const std::string & | server () const |
int | port () const |
virtual int | localPort () const |
virtual const std::string | localInterface () const |
virtual void | getStatistics (long int &totalIn, long int &totalOut)=0 |
virtual ConnectionBase * | newInstance () const =0 |
Additional Inherited Members | |
Protected Attributes inherited from ConnectionBase | |
ConnectionDataHandler * | m_handler |
ConnectionState | m_state |
std::string | m_server |
int | m_port |
Private Member Functions inherited from ConnectionDataHandler | |
virtual | ~ConnectionDataHandler () |
virtual void | handleReceivedData (const ConnectionBase *connection, const std::string &data)=0 |
virtual void | handleConnect (const ConnectionBase *connection)=0 |
virtual void | handleDisconnect (const ConnectionBase *connection, ConnectionError reason)=0 |
Private Member Functions inherited from TagHandler | |
virtual | ~TagHandler () |
virtual void | handleTag (Tag *tag)=0 |
This is an implementation of a BOSH (HTTP binding) connection.
Usage:
Make sure to pass the BOSH connection manager's host/port to the transport connection (ConnectionTCPClient in this case), and the XMPP server's host and port to the BOSH connection. You must also pass to BOSH the address of the BOSH server you are dealing with, this is used in the HTTP Host header.
In the case of using ConnectionBOSH through a HTTP proxy, supply httpServer and httpPort as those of the proxy. In all cases, boshHost should be set to the hostname (not IP address) of the server running the BOSH connection manager.
The reason why ConnectionBOSH doesn't manage its own ConnectionTCPClient is that it allows it to be used with other transports (like chained SOCKS5/HTTP proxies, or ConnectionTLS for HTTPS).
Sample configurations for different servers can be found in the bosh_example.cpp file included with gloox in the src/examples/ directory.
Definition at line 64 of file connectionbosh.h.
enum ConnMode |
The supported connection modes. Usually auto-detected.
Definition at line 110 of file connectionbosh.h.
ConnectionBOSH | ( | ConnectionBase * | connection, |
const LogSink & | logInstance, | ||
const std::string & | boshHost, | ||
const std::string & | xmppServer, | ||
int | xmppPort = 5222 |
||
) |
Constructs a new ConnectionBOSH object.
connection | A transport connection. It should be configured to connect to the BOSH connection manager's (or a HTTP proxy's) host and port, not to the XMPP host. ConnectionBOSH will own the transport connection and delete it in its destructor. |
logInstance | The log target. Obtain it from ClientBase::logInstance(). |
boshHost | The hostname of the BOSH connection manager |
xmppServer | A server to connect to. This is the XMPP server's address, not the connection manager's. |
xmppPort | The port to connect to. This is the XMPP server's port, not the connection manager's. |
Definition at line 31 of file connectionbosh.cpp.
ConnectionBOSH | ( | ConnectionDataHandler * | cdh, |
ConnectionBase * | connection, | ||
const LogSink & | logInstance, | ||
const std::string & | boshHost, | ||
const std::string & | xmppServer, | ||
int | xmppPort = 5222 |
||
) |
Constructs a new ConnectionBOSH object.
cdh | An ConnectionDataHandler-derived object that will handle incoming data. |
connection | A transport connection. It should be configured to connect to the connection manager's (or proxy's) host and port, not to the XMPP host. ConnectionBOSH will own the transport connection and delete it in its destructor. |
logInstance | The log target. Obtain it from ClientBase::logInstance(). |
boshHost | The hostname of the BOSH connection manager (not any intermediate proxy) |
xmppServer | A server to connect to. This is the XMPP server's address, not the connection manager's. |
xmppPort | The port to connect to. This is the XMPP server's port, not the connection manager's. |
Definition at line 44 of file connectionbosh.cpp.
|
virtual |
Virtual destructor
Definition at line 76 of file connectionbosh.cpp.
|
inline |
Sets the connection mode
mode | The connection mode, |
Definition at line 139 of file connectionbosh.h.
|
inline |
Sets the path on the connection manager to request
path | The path, the default is "/http-bind/", which is the default for many connection managers. |
Definition at line 130 of file connectionbosh.h.
|
inline |
Sets the XMPP server to proxy to.
xmppHost | The XMPP server hostname (IP address). |
xmppPort | The XMPP server port. |
Definition at line 122 of file connectionbosh.h.