gloox
1.0.16
|
#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) |
virtual ConnectionError | connect () |
virtual ConnectionError | recv (int timeout=-1) |
virtual bool | send (const std::string &data) |
virtual ConnectionError | receive () |
virtual void | disconnect () |
virtual void | cleanup () |
virtual void | getStatistics (long int &totalIn, long int &totalOut) |
virtual void | handleReceivedData (const ConnectionBase *connection, const std::string &data) |
virtual void | handleConnect (const ConnectionBase *connection) |
virtual void | handleDisconnect (const ConnectionBase *connection, ConnectionError reason) |
virtual ConnectionBase * | newInstance () const |
virtual void | handleTag (Tag *tag) |
Public Member Functions inherited from ConnectionBase | |
ConnectionBase (ConnectionDataHandler *cdh) | |
virtual | ~ConnectionBase () |
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 |
Additional Inherited Members | |
Protected Attributes inherited from ConnectionBase | |
ConnectionDataHandler * | m_handler |
ConnectionState | m_state |
std::string | m_server |
int | m_port |
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.
|
virtual |
This function is called after a disconnect to clean up internal state. It is also called by ConnectionBase's destructor.
Reimplemented from ConnectionBase.
Definition at line 345 of file connectionbosh.cpp.
|
virtual |
Used to initiate the connection.
Implements ConnectionBase.
Definition at line 103 of file connectionbosh.cpp.
|
virtual |
Disconnects an established connection. NOOP if no active connection exists.
Implements ConnectionBase.
Definition at line 121 of file connectionbosh.cpp.
|
virtual |
Returns current connection statistics.
totalIn | The total number of bytes received. |
totalOut | The total number of bytes sent. |
Implements ConnectionBase.
Definition at line 353 of file connectionbosh.cpp.
|
virtual |
This function is called when e.g. the raw TCP connection was established.
connection | The connection. |
Implements ConnectionDataHandler.
Definition at line 408 of file connectionbosh.cpp.
|
virtual |
This connection is called when e.g. the raw TCP connection was closed.
connection | The connection. |
reason | The reason for the disconnect. |
Implements ConnectionDataHandler.
Definition at line 435 of file connectionbosh.cpp.
|
virtual |
This function is called for received from the underlying transport.
connection | The connection that received the data. |
data | The data received. |
Implements ConnectionDataHandler.
Definition at line 359 of file connectionbosh.cpp.
|
virtual |
This function is called when a registered XML element arrives. As with every handler in gloox, the Tag is going to be deleted after this function returned. If you need a copy afterwards, create it using Tag::clone().
tag | The complete Tag. |
Implements TagHandler.
Definition at line 460 of file connectionbosh.cpp.
|
virtual |
This function returns a new instance of the current ConnectionBase-derived object. The idea is to be able to 'clone' ConnectionBase-derived objects without knowing of what type they are exactly.
Implements ConnectionBase.
Definition at line 82 of file connectionbosh.cpp.
|
virtual |
Use this function to put the connection into 'receive mode', i.e. this function returns only when the connection is terminated.
Implements ConnectionBase.
Definition at line 337 of file connectionbosh.cpp.
|
virtual |
Use this periodically to receive data from the socket.
timeout | The timeout to use for select in microseconds. Default of -1 means blocking. |
Implements ConnectionBase.
Definition at line 161 of file connectionbosh.cpp.
|
virtual |
Use this function to send a string of data over the wire. The function returns only after all data has been sent.
data | The data to send. |
Implements ConnectionBase.
Definition at line 185 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.