Package nbxmpp :: Module bosh :: Class NonBlockingBOSH
[hide private]
[frames] | no frames]

Class NonBlockingBOSH

source code


Instance Methods [hide private]
 
__init__(self, raise_event, on_disconnect, idlequeue, estabilish_tls, certs, xmpp_server, domain, bosh_dict, proxy_creds)
Each trasport class can have different constructor but it has to have at least all the arguments of NonBlockingTransport constructor
source code
 
connect(self, conn_5tuple, on_connect, on_connect_failure)
Creates and connects transport to server and port defined in conn_5tuple which should be item from list returned from getaddrinfo
source code
 
_on_connect(self)
Preceeds call of on_connect callback
source code
 
set_timeout(self, timeout) source code
 
on_http_request_possible(self)
Called when HTTP request it's possible to send a HTTP request. It can be when socket is connected or when HTTP response arrived
source code
 
get_socket_in(self, state)
Get sockets in desired state
source code
 
get_free_socket(self)
Select and returns socket eligible for sending a data to
source code
 
send_BOSH(self, payload)
Tries to send a stanza in payload by appeding it to a buffer and plugging a free socket for writing.
source code
 
plug_socket(self) source code
 
build_stanza(self, socket)
Build a BOSH body tag from data in buffers and adds key, rid and ack attributes to it
source code
 
on_bosh_wait_timeout(self) source code
 
renew_bosh_wait_timeout(self, timeout) source code
 
remove_bosh_wait_timeout(self) source code
 
on_persistent_fallback(self, socket)
Called from underlying transport when server closes TCP connection
source code
 
handle_body_attrs(self, stanza_attrs)
Called for each incoming body stanza from dispatcher. Checks body attributes.
source code
 
append_stanza(self, stanza)
Append stanza to a buffer to send
source code
 
send(self, stanza, now=False) source code
 
get_current_state(self) source code
 
connect_and_flush(self, socket) source code
 
boshify_stanzas(self, stanzas=[], body_attrs=None)
Wraps zero to many stanzas by body tag with xmlns and sid
source code
 
send_init(self, after_SASL=False) source code
 
start_disconnect(self) source code
 
get_new_http_socket(self) source code
 
onreceive(self, recv_handler)
Set the on_receive callback.
source code
 
on_received_http(self, data, socket) source code
 
disconnect(self, do_callback=True) source code

Inherited from transports_nb.NonBlockingTransport: get_fd, get_state, plugin, plugout, read_timeout, read_timeout2, remove_timeout, renew_send_timeout, renew_send_timeout2, set_send_timeout, set_send_timeout2, set_state, set_timeout2

Inherited from plugin.PlugIn: PlugIn, PlugOut

Class Methods [hide private]

Inherited from plugin.PlugIn: get_instance

Method Details [hide private]

__init__(self, raise_event, on_disconnect, idlequeue, estabilish_tls, certs, xmpp_server, domain, bosh_dict, proxy_creds)
(Constructor)

source code 
Each trasport class can have different constructor but it has to have at least all the arguments of NonBlockingTransport constructor
Parameters:
  • raise_event - callback for monitoring of sent and received data
  • on_disconnect - callback called on disconnection during runtime
  • idlequeue - processing idlequeue
  • estabilish_tls - boolean whether to estabilish TLS connection after TCP connection is done
  • certs - tuple of (cacerts, mycerts) see constructor of tls_nb.NonBlockingTLS for more details
Overrides: plugin.PlugIn.__init__

connect(self, conn_5tuple, on_connect, on_connect_failure)

source code 
Creates and connects transport to server and port defined in conn_5tuple which should be item from list returned from getaddrinfo
Parameters:
  • conn_5tuple - 5-tuple returned from getaddrinfo
  • on_connect - callback called on successful connect to the server
  • on_connect_failure - callback called on failure when connecting
Overrides: transports_nb.NonBlockingTransport.connect
(inherited documentation)

_on_connect(self)

source code 
Preceeds call of on_connect callback
Overrides: transports_nb.NonBlockingTransport._on_connect
(inherited documentation)

set_timeout(self, timeout)

source code 
Overrides: transports_nb.NonBlockingTransport.set_timeout

on_http_request_possible(self)

source code 

Called when HTTP request it's possible to send a HTTP request. It can be when socket is connected or when HTTP response arrived

There should be always one pending request to BOSH CM.

get_socket_in(self, state)

source code 
Get sockets in desired state

get_free_socket(self)

source code 
Select and returns socket eligible for sending a data to

send_BOSH(self, payload)

source code 
Tries to send a stanza in payload by appeding it to a buffer and plugging a free socket for writing.

plug_socket(self)

source code 

build_stanza(self, socket)

source code 

Build a BOSH body tag from data in buffers and adds key, rid and ack attributes to it

This method is called from _do_send() of underlying transport. This is to ensure rid and keys will be processed in correct order. If I generate them before plugging a socket for write (and did it for two sockets/HTTP connections) in parallel, they might be sent in wrong order, which results in violating the BOSH session and server-side disconnect.

on_bosh_wait_timeout(self)

source code 

renew_bosh_wait_timeout(self, timeout)

source code 

remove_bosh_wait_timeout(self)

source code 

on_persistent_fallback(self, socket)

source code 
Called from underlying transport when server closes TCP connection
Parameters:
  • socket - disconnected transport object

handle_body_attrs(self, stanza_attrs)

source code 
Called for each incoming body stanza from dispatcher. Checks body attributes.

append_stanza(self, stanza)

source code 
Append stanza to a buffer to send

send(self, stanza, now=False)

source code 
Overrides: transports_nb.NonBlockingTransport.send

get_current_state(self)

source code 

connect_and_flush(self, socket)

source code 

boshify_stanzas(self, stanzas=[], body_attrs=None)

source code 
Wraps zero to many stanzas by body tag with xmlns and sid

send_init(self, after_SASL=False)

source code 

start_disconnect(self)

source code 
Overrides: transports_nb.NonBlockingTransport.start_disconnect

get_new_http_socket(self)

source code 

onreceive(self, recv_handler)

source code 

Set the on_receive callback.

onreceive(None) sets callback to Dispatcher.ProcessNonBlocking which is the default one that will decide what to do with received stanza based on its tag name and namespace.

Do not confuse it with on_receive() method, which is the callback itself.

Overrides: transports_nb.NonBlockingTransport.onreceive
(inherited documentation)

on_received_http(self, data, socket)

source code 

disconnect(self, do_callback=True)

source code 
Overrides: transports_nb.NonBlockingTransport.disconnect