Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/apidocs/api-objects.txt1615
-rw-r--r--doc/apidocs/class-tree.html427
-rw-r--r--doc/apidocs/crarr.pngbin0 -> 340 bytes
-rw-r--r--doc/apidocs/epydoc.css322
-rw-r--r--doc/apidocs/epydoc.js293
-rw-r--r--doc/apidocs/frames.html17
-rw-r--r--doc/apidocs/help.html278
-rw-r--r--doc/apidocs/identifier-index.html2839
-rw-r--r--doc/apidocs/index.html17
-rw-r--r--doc/apidocs/module-tree.html148
-rw-r--r--doc/apidocs/nbxmpp-module.html1829
-rw-r--r--doc/apidocs/nbxmpp-pysrc.html148
-rw-r--r--doc/apidocs/nbxmpp.auth_nb-module.html726
-rw-r--r--doc/apidocs/nbxmpp.auth_nb-pysrc.html1310
-rw-r--r--doc/apidocs/nbxmpp.auth_nb.NonBlockingBind-class.html475
-rw-r--r--doc/apidocs/nbxmpp.auth_nb.NonBlockingNonSASL-class.html401
-rw-r--r--doc/apidocs/nbxmpp.auth_nb.SASL-class.html578
-rw-r--r--doc/apidocs/nbxmpp.bosh-module.html424
-rw-r--r--doc/apidocs/nbxmpp.bosh-pysrc.html910
-rw-r--r--doc/apidocs/nbxmpp.bosh.AckChecker-class.html339
-rw-r--r--doc/apidocs/nbxmpp.bosh.KeyStack-class.html262
-rw-r--r--doc/apidocs/nbxmpp.bosh.NonBlockingBOSH-class.html1298
-rw-r--r--doc/apidocs/nbxmpp.c14n-module.html325
-rw-r--r--doc/apidocs/nbxmpp.c14n-pysrc.html183
-rw-r--r--doc/apidocs/nbxmpp.client_nb-module.html243
-rw-r--r--doc/apidocs/nbxmpp.client_nb-pysrc.html1054
-rw-r--r--doc/apidocs/nbxmpp.client_nb.NonBlockingClient-class.html1232
-rw-r--r--doc/apidocs/nbxmpp.dispatcher_nb-module.html344
-rw-r--r--doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html1063
-rw-r--r--doc/apidocs/nbxmpp.dispatcher_nb.BOSHDispatcher-class.html469
-rw-r--r--doc/apidocs/nbxmpp.dispatcher_nb.Dispatcher-class.html262
-rw-r--r--doc/apidocs/nbxmpp.dispatcher_nb.XMPPDispatcher-class.html1411
-rw-r--r--doc/apidocs/nbxmpp.features_nb-module.html982
-rw-r--r--doc/apidocs/nbxmpp.features_nb-pysrc.html344
-rw-r--r--doc/apidocs/nbxmpp.idlequeue-module.html551
-rw-r--r--doc/apidocs/nbxmpp.idlequeue-pysrc.html812
-rw-r--r--doc/apidocs/nbxmpp.idlequeue.GlibIdleQueue-class.html467
-rw-r--r--doc/apidocs/nbxmpp.idlequeue.IdleCommand-class.html685
-rw-r--r--doc/apidocs/nbxmpp.idlequeue.IdleObject-class.html408
-rw-r--r--doc/apidocs/nbxmpp.idlequeue.IdleQueue-class.html801
-rw-r--r--doc/apidocs/nbxmpp.idlequeue.SelectIdleQueue-class.html390
-rw-r--r--doc/apidocs/nbxmpp.plugin-module.html233
-rw-r--r--doc/apidocs/nbxmpp.plugin-pysrc.html271
-rw-r--r--doc/apidocs/nbxmpp.plugin.PlugIn-class.html363
-rw-r--r--doc/apidocs/nbxmpp.protocol-module.html5651
-rw-r--r--doc/apidocs/nbxmpp.protocol-pysrc.html2183
-rw-r--r--doc/apidocs/nbxmpp.protocol.Acks-class.html497
-rw-r--r--doc/apidocs/nbxmpp.protocol.BOSHBody-class.html348
-rw-r--r--doc/apidocs/nbxmpp.protocol.BadFormat-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.BadNamespacePrefix-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.Conflict-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.ConnectionTimeout-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.DataField-class.html950
-rw-r--r--doc/apidocs/nbxmpp.protocol.DataForm-class.html817
-rw-r--r--doc/apidocs/nbxmpp.protocol.Error-class.html410
-rw-r--r--doc/apidocs/nbxmpp.protocol.ErrorNode-class.html337
-rw-r--r--doc/apidocs/nbxmpp.protocol.Hashes-class.html475
-rw-r--r--doc/apidocs/nbxmpp.protocol.HostGone-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.HostUnknown-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.ImproperAddressing-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.InternalServerError-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.InvalidFrom-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.InvalidID-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.InvalidNamespace-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.InvalidXML-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.Iq-class.html765
-rw-r--r--doc/apidocs/nbxmpp.protocol.JID-class.html657
-rw-r--r--doc/apidocs/nbxmpp.protocol.Message-class.html776
-rw-r--r--doc/apidocs/nbxmpp.protocol.NodeProcessed-class.html216
-rw-r--r--doc/apidocs/nbxmpp.protocol.NotAuthorized-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.PolicyViolation-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.Presence-class.html950
-rw-r--r--doc/apidocs/nbxmpp.protocol.Protocol-class.html1040
-rw-r--r--doc/apidocs/nbxmpp.protocol.RemoteConnectionFailed-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.ResourceConstraint-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.RestrictedXML-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.SeeOtherHost-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.StreamError-class.html239
-rw-r--r--doc/apidocs/nbxmpp.protocol.SystemShutdown-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.UndefinedCondition-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.UnsupportedEncoding-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.UnsupportedStanzaType-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.UnsupportedVersion-class.html214
-rw-r--r--doc/apidocs/nbxmpp.protocol.XMLNotWellFormed-class.html214
-rw-r--r--doc/apidocs/nbxmpp.proxy_connectors-module.html255
-rw-r--r--doc/apidocs/nbxmpp.proxy_connectors-pysrc.html574
-rw-r--r--doc/apidocs/nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html278
-rw-r--r--doc/apidocs/nbxmpp.proxy_connectors.ProxyConnector-class.html365
-rw-r--r--doc/apidocs/nbxmpp.proxy_connectors.SOCKS5Connector-class.html350
-rw-r--r--doc/apidocs/nbxmpp.roster_nb-module.html245
-rw-r--r--doc/apidocs/nbxmpp.roster_nb-pysrc.html647
-rw-r--r--doc/apidocs/nbxmpp.roster_nb.NonBlockingRoster-class.html1467
-rw-r--r--doc/apidocs/nbxmpp.simplexml-module.html488
-rw-r--r--doc/apidocs/nbxmpp.simplexml-pysrc.html983
-rw-r--r--doc/apidocs/nbxmpp.simplexml.NT-class.html258
-rw-r--r--doc/apidocs/nbxmpp.simplexml.Node-class.html1777
-rw-r--r--doc/apidocs/nbxmpp.simplexml.NodeBuilder-class.html700
-rw-r--r--doc/apidocs/nbxmpp.simplexml.T-class.html319
-rw-r--r--doc/apidocs/nbxmpp.smacks-module.html233
-rw-r--r--doc/apidocs/nbxmpp.smacks-pysrc.html329
-rw-r--r--doc/apidocs/nbxmpp.smacks.Smacks-class.html500
-rw-r--r--doc/apidocs/nbxmpp.stringprepare-module.html664
-rw-r--r--doc/apidocs/nbxmpp.stringprepare-pysrc.html372
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.EmptyMappingTable-class.html253
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.ILookupTable-class.html192
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.IMappingTable-class.html192
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.LookupTable-class.html253
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.LookupTableFromFunction-class.html216
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.MappingTableFromFunction-class.html216
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.NamePrep-class.htmlbin0 -> 16404 bytes
-rw-r--r--doc/apidocs/nbxmpp.stringprepare.Profile-class.html383
-rw-r--r--doc/apidocs/nbxmpp.tls_nb-module.html412
-rw-r--r--doc/apidocs/nbxmpp.tls_nb-pysrc.html1193
-rw-r--r--doc/apidocs/nbxmpp.tls_nb.NonBlockingTLS-class.html679
-rw-r--r--doc/apidocs/nbxmpp.tls_nb.PyOpenSSLWrapper-class.html367
-rw-r--r--doc/apidocs/nbxmpp.tls_nb.SSLWrapper-class.html321
-rw-r--r--doc/apidocs/nbxmpp.tls_nb.SSLWrapper.Error-class.html338
-rw-r--r--doc/apidocs/nbxmpp.tls_nb.StdlibSSLWrapper-class.html328
-rw-r--r--doc/apidocs/nbxmpp.transports_nb-module.html698
-rw-r--r--doc/apidocs/nbxmpp.transports_nb-pysrc.html1486
-rw-r--r--doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTP-class.html544
-rw-r--r--doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html385
-rw-r--r--doc/apidocs/nbxmpp.transports_nb.NonBlockingTCP-class.html1061
-rw-r--r--doc/apidocs/nbxmpp.transports_nb.NonBlockingTransport-class.html1102
-rw-r--r--doc/apidocs/redirect.html38
-rw-r--r--doc/apidocs/toc-everything.html496
-rw-r--r--doc/apidocs/toc-nbxmpp-module.html86
-rw-r--r--doc/apidocs/toc-nbxmpp.auth_nb-module.html51
-rw-r--r--doc/apidocs/toc-nbxmpp.bosh-module.html41
-rw-r--r--doc/apidocs/toc-nbxmpp.c14n-module.html35
-rw-r--r--doc/apidocs/toc-nbxmpp.client_nb-module.html34
-rw-r--r--doc/apidocs/toc-nbxmpp.dispatcher_nb-module.html39
-rw-r--r--doc/apidocs/toc-nbxmpp.features_nb-module.html58
-rw-r--r--doc/apidocs/toc-nbxmpp.idlequeue-module.html48
-rw-r--r--doc/apidocs/toc-nbxmpp.plugin-module.html34
-rw-r--r--doc/apidocs/toc-nbxmpp.protocol-module.html273
-rw-r--r--doc/apidocs/toc-nbxmpp.proxy_connectors-module.html36
-rw-r--r--doc/apidocs/toc-nbxmpp.roster_nb-module.html34
-rw-r--r--doc/apidocs/toc-nbxmpp.simplexml-module.html43
-rw-r--r--doc/apidocs/toc-nbxmpp.smacks-module.html34
-rw-r--r--doc/apidocs/toc-nbxmpp.stringprepare-module.html56
-rw-r--r--doc/apidocs/toc-nbxmpp.tls_nb-module.html42
-rw-r--r--doc/apidocs/toc-nbxmpp.transports_nb-module.html52
-rw-r--r--doc/apidocs/toc.html49
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_a.gifbin0 -> 8618 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_a_2.gifbin0 -> 7050 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_a_3.gifbin0 -> 9936 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_b.gifbin0 -> 26446 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_d.gifbin0 -> 22695 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_d_2.gifbin0 -> 18037 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_i.gifbin0 -> 9233 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_i_2.gifbin0 -> 6306 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_i_3.gifbin0 -> 8891 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_i_4.gifbin0 -> 10136 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_i_5.gifbin0 -> 9567 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p.gifbin0 -> 21383 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_10.gifbin0 -> 21535 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_11.gifbin0 -> 13514 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_12.gifbin0 -> 14869 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_13.gifbin0 -> 8490 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_14.gifbin0 -> 8600 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_15.gifbin0 -> 8861 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_16.gifbin0 -> 8760 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_17.gifbin0 -> 8516 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_18.gifbin0 -> 8416 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_19.gifbin0 -> 8811 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_2.gifbin0 -> 15522 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_20.gifbin0 -> 8519 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_21.gifbin0 -> 30199 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_22.gifbin0 -> 31721 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_23.gifbin0 -> 7900 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_24.gifbin0 -> 8626 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_25.gifbin0 -> 8656 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_26.gifbin0 -> 31991 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_27.gifbin0 -> 24268 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_28.gifbin0 -> 8927 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_29.gifbin0 -> 8822 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_3.gifbin0 -> 13525 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_30.gifbin0 -> 8668 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_31.gifbin0 -> 8659 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_32.gifbin0 -> 44547 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_33.gifbin0 -> 8841 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_34.gifbin0 -> 8741 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_35.gifbin0 -> 8856 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_36.gifbin0 -> 9037 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_37.gifbin0 -> 8852 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_38.gifbin0 -> 8846 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_39.gifbin0 -> 7961 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_4.gifbin0 -> 8523 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_40.gifbin0 -> 8575 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_41.gifbin0 -> 7935 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_5.gifbin0 -> 8960 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_6.gifbin0 -> 8388 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_7.gifbin0 -> 8717 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_8.gifbin0 -> 21026 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_p_9.gifbin0 -> 19603 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_r.gifbin0 -> 13035 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_s.gifbin0 -> 4213 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_s_2.gifbin0 -> 24702 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_s_3.gifbin0 -> 3762 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t.gifbin0 -> 6495 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_2.gifbin0 -> 6050 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_3.gifbin0 -> 6677 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_4.gifbin0 -> 14119 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_5.gifbin0 -> 5419 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_6.gifbin0 -> 33193 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_7.gifbin0 -> 34037 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_8.gifbin0 -> 26674 bytes
-rw-r--r--doc/apidocs/uml_class_diagram_for_nbxmpp_t_9.gifbin0 -> 19007 bytes
-rw-r--r--doc/epydoc.conf26
-rwxr-xr-xdoc/examples/xsend.py80
211 files changed, 72104 insertions, 0 deletions
diff --git a/doc/apidocs/api-objects.txt b/doc/apidocs/api-objects.txt
new file mode 100644
index 0000000..6375d63
--- /dev/null
+++ b/doc/apidocs/api-objects.txt
@@ -0,0 +1,1615 @@
+nbxmpp nbxmpp-module.html
+nbxmpp.STREAM_NOT_AUTHORIZED nbxmpp-module.html#STREAM_NOT_AUTHORIZED
+nbxmpp.STREAM_RESTRICTED_XML nbxmpp-module.html#STREAM_RESTRICTED_XML
+nbxmpp.isResultNode nbxmpp.protocol-module.html#isResultNode
+nbxmpp.STREAM_CONNECTION_TIMEOUT nbxmpp-module.html#STREAM_CONNECTION_TIMEOUT
+nbxmpp.STREAM_IMPROPER_ADDRESSING nbxmpp-module.html#STREAM_IMPROPER_ADDRESSING
+nbxmpp.STREAM_UNSUPPORTED_STANZA_TYPE nbxmpp-module.html#STREAM_UNSUPPORTED_STANZA_TYPE
+nbxmpp.ERR_GONE nbxmpp-module.html#ERR_GONE
+nbxmpp.ERR_CONFLICT nbxmpp-module.html#ERR_CONFLICT
+nbxmpp.ERR_NOT_AUTHORIZED nbxmpp-module.html#ERR_NOT_AUTHORIZED
+nbxmpp.ERR_REGISTRATION_REQUIRED nbxmpp-module.html#ERR_REGISTRATION_REQUIRED
+nbxmpp.ERR_INTERNAL_SERVER_ERROR nbxmpp-module.html#ERR_INTERNAL_SERVER_ERROR
+nbxmpp.SASL_INCORRECT_ENCODING nbxmpp-module.html#SASL_INCORRECT_ENCODING
+nbxmpp.STREAM_INTERNAL_SERVER_ERROR nbxmpp-module.html#STREAM_INTERNAL_SERVER_ERROR
+nbxmpp.ERR_REDIRECT nbxmpp-module.html#ERR_REDIRECT
+nbxmpp.isErrorNode nbxmpp.protocol-module.html#isErrorNode
+nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED nbxmpp-module.html#ERR_FEATURE_NOT_IMPLEMENTED
+nbxmpp.name nbxmpp-module.html#name
+nbxmpp.ERR_RESOURCE_CONSTRAINT nbxmpp-module.html#ERR_RESOURCE_CONSTRAINT
+nbxmpp.SASL_INVALID_AUTHZID nbxmpp-module.html#SASL_INVALID_AUTHZID
+nbxmpp.ERR_JID_MALFORMED nbxmpp-module.html#ERR_JID_MALFORMED
+nbxmpp.ERR_SERVICE_UNAVAILABLE nbxmpp-module.html#ERR_SERVICE_UNAVAILABLE
+nbxmpp.STREAM_UNDEFINED_CONDITION nbxmpp-module.html#STREAM_UNDEFINED_CONDITION
+nbxmpp.STREAM_BAD_NAMESPACE_PREFIX nbxmpp-module.html#STREAM_BAD_NAMESPACE_PREFIX
+nbxmpp.ERRORS nbxmpp-module.html#ERRORS
+nbxmpp.STREAM_BAD_FORMAT nbxmpp-module.html#STREAM_BAD_FORMAT
+nbxmpp.SASL_ABORTED nbxmpp-module.html#SASL_ABORTED
+nbxmpp.STREAM_HOST_GONE nbxmpp-module.html#STREAM_HOST_GONE
+nbxmpp.ERR_UNDEFINED_CONDITION nbxmpp-module.html#ERR_UNDEFINED_CONDITION
+nbxmpp.STREAM_INVALID_FROM nbxmpp-module.html#STREAM_INVALID_FROM
+nbxmpp.ERR_REMOTE_SERVER_TIMEOUT nbxmpp-module.html#ERR_REMOTE_SERVER_TIMEOUT
+nbxmpp.STREAM_UNSUPPORTED_VERSION nbxmpp-module.html#STREAM_UNSUPPORTED_VERSION
+nbxmpp.SASL_NOT_AUTHORIZED nbxmpp-module.html#SASL_NOT_AUTHORIZED
+nbxmpp.ERR_REMOTE_SERVER_NOT_FOUND nbxmpp-module.html#ERR_REMOTE_SERVER_NOT_FOUND
+nbxmpp.ERR_SUBSCRIPTION_REQUIRED nbxmpp-module.html#ERR_SUBSCRIPTION_REQUIRED
+nbxmpp.SASL_MECHANISM_TOO_WEAK nbxmpp-module.html#SASL_MECHANISM_TOO_WEAK
+nbxmpp.STREAM_SYSTEM_SHUTDOWN nbxmpp-module.html#STREAM_SYSTEM_SHUTDOWN
+nbxmpp.STREAM_INVALID_XML nbxmpp-module.html#STREAM_INVALID_XML
+nbxmpp.STREAM_UNSUPPORTED_ENCODING nbxmpp-module.html#STREAM_UNSUPPORTED_ENCODING
+nbxmpp.ERR_NOT_ALLOWED nbxmpp-module.html#ERR_NOT_ALLOWED
+nbxmpp.STREAM_SEE_OTHER_HOST nbxmpp-module.html#STREAM_SEE_OTHER_HOST
+nbxmpp.ascii_upper nbxmpp.protocol-module.html#ascii_upper
+nbxmpp.STREAM_HOST_UNKNOWN nbxmpp-module.html#STREAM_HOST_UNKNOWN
+nbxmpp.ERR_BAD_REQUEST nbxmpp-module.html#ERR_BAD_REQUEST
+nbxmpp.STREAM_XML_NOT_WELL_FORMED nbxmpp-module.html#STREAM_XML_NOT_WELL_FORMED
+nbxmpp.STREAM_POLICY_VIOLATION nbxmpp-module.html#STREAM_POLICY_VIOLATION
+nbxmpp.__package__ nbxmpp-module.html#__package__
+nbxmpp.ERR_UNEXPECTED_REQUEST nbxmpp-module.html#ERR_UNEXPECTED_REQUEST
+nbxmpp.ERR_RECIPIENT_UNAVAILABLE nbxmpp-module.html#ERR_RECIPIENT_UNAVAILABLE
+nbxmpp.SASL_TEMPORARY_AUTH_FAILURE nbxmpp-module.html#SASL_TEMPORARY_AUTH_FAILURE
+nbxmpp.SASL_INVALID_MECHANISM nbxmpp-module.html#SASL_INVALID_MECHANISM
+nbxmpp.ERR_PAYMENT_REQUIRED nbxmpp-module.html#ERR_PAYMENT_REQUIRED
+nbxmpp.STREAM_CONFLICT nbxmpp-module.html#STREAM_CONFLICT
+nbxmpp.STREAM_RESOURCE_CONSTRAINT nbxmpp-module.html#STREAM_RESOURCE_CONSTRAINT
+nbxmpp.ERR_ITEM_NOT_FOUND nbxmpp-module.html#ERR_ITEM_NOT_FOUND
+nbxmpp.STREAM_INVALID_NAMESPACE nbxmpp-module.html#STREAM_INVALID_NAMESPACE
+nbxmpp.STREAM_REMOTE_CONNECTION_FAILED nbxmpp-module.html#STREAM_REMOTE_CONNECTION_FAILED
+nbxmpp.STREAM_INVALID_ID nbxmpp-module.html#STREAM_INVALID_ID
+nbxmpp.ERR_NOT_ACCEPTABLE nbxmpp-module.html#ERR_NOT_ACCEPTABLE
+nbxmpp.ERR_FORBIDDEN nbxmpp-module.html#ERR_FORBIDDEN
+nbxmpp.auth_nb nbxmpp.auth_nb-module.html
+nbxmpp.auth_nb.challenge_splitter nbxmpp.auth_nb-module.html#challenge_splitter
+nbxmpp.auth_nb.HH nbxmpp.auth_nb-module.html#HH
+nbxmpp.auth_nb.SASL_IN_PROCESS nbxmpp.auth_nb-module.html#SASL_IN_PROCESS
+nbxmpp.auth_nb.GSS_STATE_WRAP nbxmpp.auth_nb-module.html#GSS_STATE_WRAP
+nbxmpp.auth_nb.have_kerberos nbxmpp.auth_nb-module.html#have_kerberos
+nbxmpp.auth_nb.scram_parse nbxmpp.auth_nb-module.html#scram_parse
+nbxmpp.auth_nb.SASL_FAILURE nbxmpp.auth_nb-module.html#SASL_FAILURE
+nbxmpp.auth_nb.log nbxmpp.auth_nb-module.html#log
+nbxmpp.auth_nb.__package__ nbxmpp.auth_nb-module.html#__package__
+nbxmpp.auth_nb.C nbxmpp.auth_nb-module.html#C
+nbxmpp.auth_nb.H nbxmpp.auth_nb-module.html#H
+nbxmpp.auth_nb.kerberos nbxmpp.auth_nb-module.html#kerberos
+nbxmpp.auth_nb.SASL_SUCCESS nbxmpp.auth_nb-module.html#SASL_SUCCESS
+nbxmpp.auth_nb.isResultNode nbxmpp.protocol-module.html#isResultNode
+nbxmpp.auth_nb.GSS_STATE_STEP nbxmpp.auth_nb-module.html#GSS_STATE_STEP
+nbxmpp.auth_nb.SASL_UNSUPPORTED nbxmpp.auth_nb-module.html#SASL_UNSUPPORTED
+nbxmpp.auth_nb.SASL_FAILURE_IN_PROGRESS nbxmpp.auth_nb-module.html#SASL_FAILURE_IN_PROGRESS
+nbxmpp.bosh nbxmpp.bosh-module.html
+nbxmpp.bosh.FAKE_DESCRIPTOR nbxmpp.bosh-module.html#FAKE_DESCRIPTOR
+nbxmpp.bosh.KEY_COUNT nbxmpp.bosh-module.html#KEY_COUNT
+nbxmpp.bosh.get_rand_number nbxmpp.bosh-module.html#get_rand_number
+nbxmpp.bosh.bosh_errors nbxmpp.bosh-module.html#bosh_errors
+nbxmpp.bosh.__package__ nbxmpp.bosh-module.html#__package__
+nbxmpp.bosh.log nbxmpp.bosh-module.html#log
+nbxmpp.bosh.urisplit nbxmpp.transports_nb-module.html#urisplit
+nbxmpp.c14n nbxmpp.c14n-module.html
+nbxmpp.c14n.ustr nbxmpp.simplexml-module.html#ustr
+nbxmpp.c14n.normalise_attr nbxmpp.c14n-module.html#normalise_attr
+nbxmpp.c14n.normalise_text nbxmpp.c14n-module.html#normalise_text
+nbxmpp.c14n.c14n nbxmpp.c14n-module.html#c14n
+nbxmpp.c14n.__package__ nbxmpp.c14n-module.html#__package__
+nbxmpp.client_nb nbxmpp.client_nb-module.html
+nbxmpp.client_nb.log nbxmpp.client_nb-module.html#log
+nbxmpp.client_nb.__package__ nbxmpp.client_nb-module.html#__package__
+nbxmpp.dispatcher_nb nbxmpp.dispatcher_nb-module.html
+nbxmpp.dispatcher_nb.XML_DECLARATION nbxmpp.dispatcher_nb-module.html#XML_DECLARATION
+nbxmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS nbxmpp.dispatcher_nb-module.html#DEFAULT_TIMEOUT_SECONDS
+nbxmpp.dispatcher_nb.log nbxmpp.dispatcher_nb-module.html#log
+nbxmpp.dispatcher_nb.__package__ nbxmpp.dispatcher_nb-module.html#__package__
+nbxmpp.dispatcher_nb.outgoingID nbxmpp.dispatcher_nb-module.html#outgoingID
+nbxmpp.features_nb nbxmpp.features_nb-module.html
+nbxmpp.features_nb.getPrivacyList nbxmpp.features_nb-module.html#getPrivacyList
+nbxmpp.features_nb.register nbxmpp.features_nb-module.html#register
+nbxmpp.features_nb._ReceivedRegInfo nbxmpp.features_nb-module.html#_ReceivedRegInfo
+nbxmpp.features_nb.setDefaultPrivacyList nbxmpp.features_nb-module.html#setDefaultPrivacyList
+nbxmpp.features_nb.isResultNode nbxmpp.protocol-module.html#isResultNode
+nbxmpp.features_nb.setActivePrivacyList nbxmpp.features_nb-module.html#setActivePrivacyList
+nbxmpp.features_nb.getActiveAndDefaultPrivacyLists nbxmpp.features_nb-module.html#getActiveAndDefaultPrivacyLists
+nbxmpp.features_nb.PL_ACT_DENY nbxmpp.features_nb-module.html#PL_ACT_DENY
+nbxmpp.features_nb.__package__ nbxmpp.features_nb-module.html#__package__
+nbxmpp.features_nb.delPrivacyList nbxmpp.features_nb-module.html#delPrivacyList
+nbxmpp.features_nb.setPrivacyList nbxmpp.features_nb-module.html#setPrivacyList
+nbxmpp.features_nb.REGISTER_DATA_RECEIVED nbxmpp.features_nb-module.html#REGISTER_DATA_RECEIVED
+nbxmpp.features_nb.PRIVACY_LISTS_RECEIVED nbxmpp.features_nb-module.html#PRIVACY_LISTS_RECEIVED
+nbxmpp.features_nb.PL_ACT_ALLOW nbxmpp.features_nb-module.html#PL_ACT_ALLOW
+nbxmpp.features_nb.getPrivacyLists nbxmpp.features_nb-module.html#getPrivacyLists
+nbxmpp.features_nb.PL_TYPE_JID nbxmpp.features_nb-module.html#PL_TYPE_JID
+nbxmpp.features_nb.PRIVACY_LISTS_ACTIVE_DEFAULT nbxmpp.features_nb-module.html#PRIVACY_LISTS_ACTIVE_DEFAULT
+nbxmpp.features_nb.getRegInfo nbxmpp.features_nb-module.html#getRegInfo
+nbxmpp.features_nb._on_default_response nbxmpp.features_nb-module.html#_on_default_response
+nbxmpp.features_nb.PL_TYPE_GROUP nbxmpp.features_nb-module.html#PL_TYPE_GROUP
+nbxmpp.features_nb.changePasswordTo nbxmpp.features_nb-module.html#changePasswordTo
+nbxmpp.features_nb.unregister nbxmpp.features_nb-module.html#unregister
+nbxmpp.features_nb.PRIVACY_LIST_RECEIVED nbxmpp.features_nb-module.html#PRIVACY_LIST_RECEIVED
+nbxmpp.features_nb.PL_TYPE_SUBC nbxmpp.features_nb-module.html#PL_TYPE_SUBC
+nbxmpp.idlequeue nbxmpp.idlequeue-module.html
+nbxmpp.idlequeue.PENDING_WRITE nbxmpp.idlequeue-module.html#PENDING_WRITE
+nbxmpp.idlequeue.FLAG_READ_WRITE nbxmpp.idlequeue-module.html#FLAG_READ_WRITE
+nbxmpp.idlequeue.PENDING_READ nbxmpp.idlequeue-module.html#PENDING_READ
+nbxmpp.idlequeue.FLAG_READ nbxmpp.idlequeue-module.html#FLAG_READ
+nbxmpp.idlequeue.FLAG_CLOSE nbxmpp.idlequeue-module.html#FLAG_CLOSE
+nbxmpp.idlequeue.__package__ nbxmpp.idlequeue-module.html#__package__
+nbxmpp.idlequeue.HAVE_GOBJECT nbxmpp.idlequeue-module.html#HAVE_GOBJECT
+nbxmpp.idlequeue.IS_CLOSED nbxmpp.idlequeue-module.html#IS_CLOSED
+nbxmpp.idlequeue.log nbxmpp.idlequeue-module.html#log
+nbxmpp.idlequeue.FLAG_WRITE nbxmpp.idlequeue-module.html#FLAG_WRITE
+nbxmpp.idlequeue.get_idlequeue nbxmpp.idlequeue-module.html#get_idlequeue
+nbxmpp.plugin nbxmpp.plugin-module.html
+nbxmpp.plugin.__package__ nbxmpp.plugin-module.html#__package__
+nbxmpp.plugin.log nbxmpp.plugin-module.html#log
+nbxmpp.protocol nbxmpp.protocol-module.html
+nbxmpp.protocol.NS_MUC_ADMIN nbxmpp.protocol-module.html#NS_MUC_ADMIN
+nbxmpp.protocol.STREAM_NOT_AUTHORIZED nbxmpp.protocol-module.html#STREAM_NOT_AUTHORIZED
+nbxmpp.protocol.NS_FILE nbxmpp.protocol-module.html#NS_FILE
+nbxmpp.protocol.NS_VCARD_UPDATE nbxmpp.protocol-module.html#NS_VCARD_UPDATE
+nbxmpp.protocol.NS_PUBSUB_EVENT nbxmpp.protocol-module.html#NS_PUBSUB_EVENT
+nbxmpp.protocol.isResultNode nbxmpp.protocol-module.html#isResultNode
+nbxmpp.protocol.NS_RECEIPTS nbxmpp.protocol-module.html#NS_RECEIPTS
+nbxmpp.protocol.STREAM_CONNECTION_TIMEOUT nbxmpp.protocol-module.html#STREAM_CONNECTION_TIMEOUT
+nbxmpp.protocol.STREAM_IMPROPER_ADDRESSING nbxmpp.protocol-module.html#STREAM_IMPROPER_ADDRESSING
+nbxmpp.protocol.STREAM_UNSUPPORTED_STANZA_TYPE nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_STANZA_TYPE
+nbxmpp.protocol.NS_PING nbxmpp.protocol-module.html#NS_PING
+nbxmpp.protocol.ERR_GONE nbxmpp.protocol-module.html#ERR_GONE
+nbxmpp.protocol.NS_PHYSLOC nbxmpp.protocol-module.html#NS_PHYSLOC
+nbxmpp.protocol.NS_CHATTING nbxmpp.protocol-module.html#NS_CHATTING
+nbxmpp.protocol.ERR_CONFLICT nbxmpp.protocol-module.html#ERR_CONFLICT
+nbxmpp.protocol.NS_COMPRESS nbxmpp.protocol-module.html#NS_COMPRESS
+nbxmpp.protocol.NS_HASHES_SHA1 nbxmpp.protocol-module.html#NS_HASHES_SHA1
+nbxmpp.protocol.NS_AGENTS nbxmpp.protocol-module.html#NS_AGENTS
+nbxmpp.protocol.NS_CAPTCHA nbxmpp.protocol-module.html#NS_CAPTCHA
+nbxmpp.protocol.NS_MOOD nbxmpp.protocol-module.html#NS_MOOD
+nbxmpp.protocol.ERR_NOT_AUTHORIZED nbxmpp.protocol-module.html#ERR_NOT_AUTHORIZED
+nbxmpp.protocol.ERR_REGISTRATION_REQUIRED nbxmpp.protocol-module.html#ERR_REGISTRATION_REQUIRED
+nbxmpp.protocol.ERR_INTERNAL_SERVER_ERROR nbxmpp.protocol-module.html#ERR_INTERNAL_SERVER_ERROR
+nbxmpp.protocol.SASL_INCORRECT_ENCODING nbxmpp.protocol-module.html#SASL_INCORRECT_ENCODING
+nbxmpp.protocol.NS_MUC_OWNER nbxmpp.protocol-module.html#NS_MUC_OWNER
+nbxmpp.protocol.NS_ACTIVITY nbxmpp.protocol-module.html#NS_ACTIVITY
+nbxmpp.protocol.NS_ARCHIVE_MANUAL nbxmpp.protocol-module.html#NS_ARCHIVE_MANUAL
+nbxmpp.protocol.NS_JINGLE_RTP_AUDIO nbxmpp.protocol-module.html#NS_JINGLE_RTP_AUDIO
+nbxmpp.protocol.NS_PRESENCE nbxmpp.protocol-module.html#NS_PRESENCE
+nbxmpp.protocol.STREAM_INTERNAL_SERVER_ERROR nbxmpp.protocol-module.html#STREAM_INTERNAL_SERVER_ERROR
+nbxmpp.protocol.NS_CHATSTATES nbxmpp.protocol-module.html#NS_CHATSTATES
+nbxmpp.protocol.ERR_REDIRECT nbxmpp.protocol-module.html#ERR_REDIRECT
+nbxmpp.protocol.isErrorNode nbxmpp.protocol-module.html#isErrorNode
+nbxmpp.protocol.NS_GROUPCHAT nbxmpp.protocol-module.html#NS_GROUPCHAT
+nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED
+nbxmpp.protocol.NS_GATEWAY nbxmpp.protocol-module.html#NS_GATEWAY
+nbxmpp.protocol.NS_DISCO_ITEMS nbxmpp.protocol-module.html#NS_DISCO_ITEMS
+nbxmpp.protocol.NS_MUC_CONFIG nbxmpp.protocol-module.html#NS_MUC_CONFIG
+nbxmpp.protocol.name nbxmpp.protocol-module.html#name
+nbxmpp.protocol.NS_BIND nbxmpp.protocol-module.html#NS_BIND
+nbxmpp.protocol.NS_JINGLE_ERRORS nbxmpp.protocol-module.html#NS_JINGLE_ERRORS
+nbxmpp.protocol.NS_XMPP_STREAMS nbxmpp.protocol-module.html#NS_XMPP_STREAMS
+nbxmpp.protocol.NS_IQ nbxmpp.protocol-module.html#NS_IQ
+nbxmpp.protocol.ERR_RESOURCE_CONSTRAINT nbxmpp.protocol-module.html#ERR_RESOURCE_CONSTRAINT
+nbxmpp.protocol.NS_CLIENT nbxmpp.protocol-module.html#NS_CLIENT
+nbxmpp.protocol.NS_FORWARD nbxmpp.protocol-module.html#NS_FORWARD
+nbxmpp.protocol.SASL_INVALID_AUTHZID nbxmpp.protocol-module.html#SASL_INVALID_AUTHZID
+nbxmpp.protocol.NS_EVENT nbxmpp.protocol-module.html#NS_EVENT
+nbxmpp.protocol.NS_AVATAR nbxmpp.protocol-module.html#NS_AVATAR
+nbxmpp.protocol.NS_JINGLE_IBB nbxmpp.protocol-module.html#NS_JINGLE_IBB
+nbxmpp.protocol.NS_DATA_LAYOUT nbxmpp.protocol-module.html#NS_DATA_LAYOUT
+nbxmpp.protocol.NS_TUNE nbxmpp.protocol-module.html#NS_TUNE
+nbxmpp.protocol.stream_exceptions nbxmpp.protocol-module.html#stream_exceptions
+nbxmpp.protocol.xmpp_stanza_error_conditions nbxmpp.protocol-module.html#xmpp_stanza_error_conditions
+nbxmpp.protocol.NS_HASHES_SHA256 nbxmpp.protocol-module.html#NS_HASHES_SHA256
+nbxmpp.protocol.NS_CARBONS nbxmpp.protocol-module.html#NS_CARBONS
+nbxmpp.protocol.NS_ROSTER nbxmpp.protocol-module.html#NS_ROSTER
+nbxmpp.protocol.NS_STANZAS nbxmpp.protocol-module.html#NS_STANZAS
+nbxmpp.protocol.ERR_JID_MALFORMED nbxmpp.protocol-module.html#ERR_JID_MALFORMED
+nbxmpp.protocol.NS_ROSTER_VER nbxmpp.protocol-module.html#NS_ROSTER_VER
+nbxmpp.protocol.NS_TIME_REVISED nbxmpp.protocol-module.html#NS_TIME_REVISED
+nbxmpp.protocol.NS_MUC_UNIQUE nbxmpp.protocol-module.html#NS_MUC_UNIQUE
+nbxmpp.protocol.ERR_SERVICE_UNAVAILABLE nbxmpp.protocol-module.html#ERR_SERVICE_UNAVAILABLE
+nbxmpp.protocol.NS_PUBKEY_PUBKEY nbxmpp.protocol-module.html#NS_PUBKEY_PUBKEY
+nbxmpp.protocol.NS_AMP nbxmpp.protocol-module.html#NS_AMP
+nbxmpp.protocol.STREAM_UNDEFINED_CONDITION nbxmpp.protocol-module.html#STREAM_UNDEFINED_CONDITION
+nbxmpp.protocol.NS_CONFERENCE nbxmpp.protocol-module.html#NS_CONFERENCE
+nbxmpp.protocol.NS_DISCO nbxmpp.protocol-module.html#NS_DISCO
+nbxmpp.protocol.NS_RSM nbxmpp.protocol-module.html#NS_RSM
+nbxmpp.protocol.STREAM_BAD_NAMESPACE_PREFIX nbxmpp.protocol-module.html#STREAM_BAD_NAMESPACE_PREFIX
+nbxmpp.protocol.ERRORS nbxmpp.protocol-module.html#ERRORS
+nbxmpp.protocol.NS_STREAM nbxmpp.protocol-module.html#NS_STREAM
+nbxmpp.protocol.NS_ESESSION nbxmpp.protocol-module.html#NS_ESESSION
+nbxmpp.protocol.STREAM_BAD_FORMAT nbxmpp.protocol-module.html#STREAM_BAD_FORMAT
+nbxmpp.protocol.NS_JINGLE_FILE_TRANSFER nbxmpp.protocol-module.html#NS_JINGLE_FILE_TRANSFER
+nbxmpp.protocol.NS_LOCATION nbxmpp.protocol-module.html#NS_LOCATION
+nbxmpp.protocol.NS_ARCHIVE_AUTO nbxmpp.protocol-module.html#NS_ARCHIVE_AUTO
+nbxmpp.protocol.NS_DIALBACK nbxmpp.protocol-module.html#NS_DIALBACK
+nbxmpp.protocol.SASL_ABORTED nbxmpp.protocol-module.html#SASL_ABORTED
+nbxmpp.protocol.NS_AUTH nbxmpp.protocol-module.html#NS_AUTH
+nbxmpp.protocol.NS_BOOKMARKS nbxmpp.protocol-module.html#NS_BOOKMARKS
+nbxmpp.protocol.NS_VCARD nbxmpp.protocol-module.html#NS_VCARD
+nbxmpp.protocol.STREAM_HOST_GONE nbxmpp.protocol-module.html#STREAM_HOST_GONE
+nbxmpp.protocol.NS_XHTML nbxmpp.protocol-module.html#NS_XHTML
+nbxmpp.protocol.NS_JINGLE_RTP nbxmpp.protocol-module.html#NS_JINGLE_RTP
+nbxmpp.protocol.NS_SI nbxmpp.protocol-module.html#NS_SI
+nbxmpp.protocol.NS_SASL nbxmpp.protocol-module.html#NS_SASL
+nbxmpp.protocol.ERR_UNDEFINED_CONDITION nbxmpp.protocol-module.html#ERR_UNDEFINED_CONDITION
+nbxmpp.protocol.STREAM_INVALID_FROM nbxmpp.protocol-module.html#STREAM_INVALID_FROM
+nbxmpp.protocol.NS_CAPS nbxmpp.protocol-module.html#NS_CAPS
+nbxmpp.protocol.NS_PUBSUB_OWNER nbxmpp.protocol-module.html#NS_PUBSUB_OWNER
+nbxmpp.protocol.NS_AMP_ERRORS nbxmpp.protocol-module.html#NS_AMP_ERRORS
+nbxmpp.protocol.NS_BROWSE nbxmpp.protocol-module.html#NS_BROWSE
+nbxmpp.protocol.NS_ROSTERX nbxmpp.protocol-module.html#NS_ROSTERX
+nbxmpp.protocol.NS_JINGLE_RAW_UDP nbxmpp.protocol-module.html#NS_JINGLE_RAW_UDP
+nbxmpp.protocol.NS_TLS nbxmpp.protocol-module.html#NS_TLS
+nbxmpp.protocol.NS_ATTENTION nbxmpp.protocol-module.html#NS_ATTENTION
+nbxmpp.protocol.NS_DATA nbxmpp.protocol-module.html#NS_DATA
+nbxmpp.protocol.NS_SERVER nbxmpp.protocol-module.html#NS_SERVER
+nbxmpp.protocol.NS_SESSION nbxmpp.protocol-module.html#NS_SESSION
+nbxmpp.protocol.ERR_REMOTE_SERVER_TIMEOUT nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_TIMEOUT
+nbxmpp.protocol.NS_JINGLE_ICE_UDP nbxmpp.protocol-module.html#NS_JINGLE_ICE_UDP
+nbxmpp.protocol.NS_IBB nbxmpp.protocol-module.html#NS_IBB
+nbxmpp.protocol.NS_TIME nbxmpp.protocol-module.html#NS_TIME
+nbxmpp.protocol.NS_PROFILE nbxmpp.protocol-module.html#NS_PROFILE
+nbxmpp.protocol.NS_SECLABEL nbxmpp.protocol-module.html#NS_SECLABEL
+nbxmpp.protocol.NS_PRIVACY nbxmpp.protocol-module.html#NS_PRIVACY
+nbxmpp.protocol.NS_GMAILNOTIFY nbxmpp.protocol-module.html#NS_GMAILNOTIFY
+nbxmpp.protocol.NS_CONDITIONS nbxmpp.protocol-module.html#NS_CONDITIONS
+nbxmpp.protocol.NS_MESSAGE nbxmpp.protocol-module.html#NS_MESSAGE
+nbxmpp.protocol.NS_FEATURE nbxmpp.protocol-module.html#NS_FEATURE
+nbxmpp.protocol.STREAM_UNSUPPORTED_VERSION nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_VERSION
+nbxmpp.protocol.SASL_NOT_AUTHORIZED nbxmpp.protocol-module.html#SASL_NOT_AUTHORIZED
+nbxmpp.protocol.ERR_REMOTE_SERVER_NOT_FOUND nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_NOT_FOUND
+nbxmpp.protocol.NS_DELAY2 nbxmpp.protocol-module.html#NS_DELAY2
+nbxmpp.protocol.NS_WAITINGLIST nbxmpp.protocol-module.html#NS_WAITINGLIST
+nbxmpp.protocol.NS_ARCHIVE_MANAGE nbxmpp.protocol-module.html#NS_ARCHIVE_MANAGE
+nbxmpp.protocol.NS_VERSION nbxmpp.protocol-module.html#NS_VERSION
+nbxmpp.protocol.NS_SSN nbxmpp.protocol-module.html#NS_SSN
+nbxmpp.protocol.ERR_SUBSCRIPTION_REQUIRED nbxmpp.protocol-module.html#ERR_SUBSCRIPTION_REQUIRED
+nbxmpp.protocol.SASL_MECHANISM_TOO_WEAK nbxmpp.protocol-module.html#SASL_MECHANISM_TOO_WEAK
+nbxmpp.protocol.NS_COMPONENT_1 nbxmpp.protocol-module.html#NS_COMPONENT_1
+nbxmpp.protocol.NS_ARCHIVE_PREF nbxmpp.protocol-module.html#NS_ARCHIVE_PREF
+nbxmpp.protocol.STREAM_SYSTEM_SHUTDOWN nbxmpp.protocol-module.html#STREAM_SYSTEM_SHUTDOWN
+nbxmpp.protocol.NS_HTTP_BIND nbxmpp.protocol-module.html#NS_HTTP_BIND
+nbxmpp.protocol.STREAM_INVALID_XML nbxmpp.protocol-module.html#STREAM_INVALID_XML
+nbxmpp.protocol.NS_INVISIBLE nbxmpp.protocol-module.html#NS_INVISIBLE
+nbxmpp.protocol.NS_JINGLE_RTP_VIDEO nbxmpp.protocol-module.html#NS_JINGLE_RTP_VIDEO
+nbxmpp.protocol.NS_HASHES nbxmpp.protocol-module.html#NS_HASHES
+nbxmpp.protocol.STREAM_UNSUPPORTED_ENCODING nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_ENCODING
+nbxmpp.protocol.ERR_NOT_ALLOWED nbxmpp.protocol-module.html#ERR_NOT_ALLOWED
+nbxmpp.protocol.STREAM_SEE_OTHER_HOST nbxmpp.protocol-module.html#STREAM_SEE_OTHER_HOST
+nbxmpp.protocol.NS_BROWSING nbxmpp.protocol-module.html#NS_BROWSING
+nbxmpp.protocol.NS_GAMING nbxmpp.protocol-module.html#NS_GAMING
+nbxmpp.protocol.NS_OFFLINE nbxmpp.protocol-module.html#NS_OFFLINE
+nbxmpp.protocol.NS_PUBSUB nbxmpp.protocol-module.html#NS_PUBSUB
+nbxmpp.protocol.NS_MUC_USER nbxmpp.protocol-module.html#NS_MUC_USER
+nbxmpp.protocol.NS_ATOM nbxmpp.protocol-module.html#NS_ATOM
+nbxmpp.protocol.ascii_upper nbxmpp.protocol-module.html#ascii_upper
+nbxmpp.protocol.NS_STREAMS nbxmpp.protocol-module.html#NS_STREAMS
+nbxmpp.protocol.STREAM_HOST_UNKNOWN nbxmpp.protocol-module.html#STREAM_HOST_UNKNOWN
+nbxmpp.protocol.ERR_BAD_REQUEST nbxmpp.protocol-module.html#ERR_BAD_REQUEST
+nbxmpp.protocol.NS_GTALKSETTING nbxmpp.protocol-module.html#NS_GTALKSETTING
+nbxmpp.protocol.NS_DELAY nbxmpp.protocol-module.html#NS_DELAY
+nbxmpp.protocol.NS_ENCRYPTED nbxmpp.protocol-module.html#NS_ENCRYPTED
+nbxmpp.protocol.NS_RPC nbxmpp.protocol-module.html#NS_RPC
+nbxmpp.protocol.NS_SECLABEL_CATALOG nbxmpp.protocol-module.html#NS_SECLABEL_CATALOG
+nbxmpp.protocol.NS_SIGNED nbxmpp.protocol-module.html#NS_SIGNED
+nbxmpp.protocol.NS_NICK nbxmpp.protocol-module.html#NS_NICK
+nbxmpp.protocol._errorcodes nbxmpp.protocol-module.html#_errorcodes
+nbxmpp.protocol.NS_PUBKEY_REVOKE nbxmpp.protocol-module.html#NS_PUBKEY_REVOKE
+nbxmpp.protocol.NS_JINGLE_XTLS nbxmpp.protocol-module.html#NS_JINGLE_XTLS
+nbxmpp.protocol.NS_DATA_MEDIA nbxmpp.protocol-module.html#NS_DATA_MEDIA
+nbxmpp.protocol.STREAM_XML_NOT_WELL_FORMED nbxmpp.protocol-module.html#STREAM_XML_NOT_WELL_FORMED
+nbxmpp.protocol.STREAM_POLICY_VIOLATION nbxmpp.protocol-module.html#STREAM_POLICY_VIOLATION
+nbxmpp.protocol.NS_REGISTER nbxmpp.protocol-module.html#NS_REGISTER
+nbxmpp.protocol.NS_BYTESTREAM nbxmpp.protocol-module.html#NS_BYTESTREAM
+nbxmpp.protocol.NS_VACATION nbxmpp.protocol-module.html#NS_VACATION
+nbxmpp.protocol.NS_PUBSUB_PUBLISH_OPTIONS nbxmpp.protocol-module.html#NS_PUBSUB_PUBLISH_OPTIONS
+nbxmpp.protocol.NS_XHTML_IM nbxmpp.protocol-module.html#NS_XHTML_IM
+nbxmpp.protocol.__package__ nbxmpp.protocol-module.html#__package__
+nbxmpp.protocol.NS_GEOLOC nbxmpp.protocol-module.html#NS_GEOLOC
+nbxmpp.protocol.NS_ARCHIVE nbxmpp.protocol-module.html#NS_ARCHIVE
+nbxmpp.protocol.NS_ROSTERNOTES nbxmpp.protocol-module.html#NS_ROSTERNOTES
+nbxmpp.protocol.ERR_UNEXPECTED_REQUEST nbxmpp.protocol-module.html#ERR_UNEXPECTED_REQUEST
+nbxmpp.protocol.NS_DATA_VALIDATE nbxmpp.protocol-module.html#NS_DATA_VALIDATE
+nbxmpp.protocol.ERR_RECIPIENT_UNAVAILABLE nbxmpp.protocol-module.html#ERR_RECIPIENT_UNAVAILABLE
+nbxmpp.protocol.NS_ESESSION_INIT nbxmpp.protocol-module.html#NS_ESESSION_INIT
+nbxmpp.protocol.SASL_TEMPORARY_AUTH_FAILURE nbxmpp.protocol-module.html#SASL_TEMPORARY_AUTH_FAILURE
+nbxmpp.protocol.NS_PRIVATE nbxmpp.protocol-module.html#NS_PRIVATE
+nbxmpp.protocol.NS_JINGLE_BYTESTREAM nbxmpp.protocol-module.html#NS_JINGLE_BYTESTREAM
+nbxmpp.protocol.SASL_INVALID_MECHANISM nbxmpp.protocol-module.html#SASL_INVALID_MECHANISM
+nbxmpp.protocol.xmpp_stream_error_conditions nbxmpp.protocol-module.html#xmpp_stream_error_conditions
+nbxmpp.protocol.NS_VIEWING nbxmpp.protocol-module.html#NS_VIEWING
+nbxmpp.protocol.NS_COMMANDS nbxmpp.protocol-module.html#NS_COMMANDS
+nbxmpp.protocol.ERR_PAYMENT_REQUIRED nbxmpp.protocol-module.html#ERR_PAYMENT_REQUIRED
+nbxmpp.protocol.STREAM_CONFLICT nbxmpp.protocol-module.html#STREAM_CONFLICT
+nbxmpp.protocol.STREAM_RESOURCE_CONSTRAINT nbxmpp.protocol-module.html#STREAM_RESOURCE_CONSTRAINT
+nbxmpp.protocol.NS_STREAM_MGMT nbxmpp.protocol-module.html#NS_STREAM_MGMT
+nbxmpp.protocol.NS_SI_PUB nbxmpp.protocol-module.html#NS_SI_PUB
+nbxmpp.protocol.NS_MUC nbxmpp.protocol-module.html#NS_MUC
+nbxmpp.protocol.ERR_ITEM_NOT_FOUND nbxmpp.protocol-module.html#ERR_ITEM_NOT_FOUND
+nbxmpp.protocol.STREAM_INVALID_NAMESPACE nbxmpp.protocol-module.html#STREAM_INVALID_NAMESPACE
+nbxmpp.protocol.NS_SEARCH nbxmpp.protocol-module.html#NS_SEARCH
+nbxmpp.protocol.STREAM_REMOTE_CONNECTION_FAILED nbxmpp.protocol-module.html#STREAM_REMOTE_CONNECTION_FAILED
+nbxmpp.protocol.NS_ADDRESS nbxmpp.protocol-module.html#NS_ADDRESS
+nbxmpp.protocol.NS_COMPONENT_ACCEPT nbxmpp.protocol-module.html#NS_COMPONENT_ACCEPT
+nbxmpp.protocol.STREAM_INVALID_ID nbxmpp.protocol-module.html#STREAM_INVALID_ID
+nbxmpp.protocol.STREAM_RESTRICTED_XML nbxmpp.protocol-module.html#STREAM_RESTRICTED_XML
+nbxmpp.protocol.NS_DISCO_INFO nbxmpp.protocol-module.html#NS_DISCO_INFO
+nbxmpp.protocol.sasl_error_conditions nbxmpp.protocol-module.html#sasl_error_conditions
+nbxmpp.protocol.NS_STANZA_CRYPTO nbxmpp.protocol-module.html#NS_STANZA_CRYPTO
+nbxmpp.protocol.NS_LAST nbxmpp.protocol-module.html#NS_LAST
+nbxmpp.protocol.NS_PUBKEY_ATTEST nbxmpp.protocol-module.html#NS_PUBKEY_ATTEST
+nbxmpp.protocol.NS_HASHES_SHA512 nbxmpp.protocol-module.html#NS_HASHES_SHA512
+nbxmpp.protocol.ERR_NOT_ACCEPTABLE nbxmpp.protocol-module.html#ERR_NOT_ACCEPTABLE
+nbxmpp.protocol.NS_JINGLE nbxmpp.protocol-module.html#NS_JINGLE
+nbxmpp.protocol.NS_BOB nbxmpp.protocol-module.html#NS_BOB
+nbxmpp.protocol.NS_HASHES_MD5 nbxmpp.protocol-module.html#NS_HASHES_MD5
+nbxmpp.protocol.NS_HTTP_AUTH nbxmpp.protocol-module.html#NS_HTTP_AUTH
+nbxmpp.protocol.ERR_FORBIDDEN nbxmpp.protocol-module.html#ERR_FORBIDDEN
+nbxmpp.proxy_connectors nbxmpp.proxy_connectors-module.html
+nbxmpp.proxy_connectors.log nbxmpp.proxy_connectors-module.html#log
+nbxmpp.proxy_connectors.__package__ nbxmpp.proxy_connectors-module.html#__package__
+nbxmpp.roster_nb nbxmpp.roster_nb-module.html
+nbxmpp.roster_nb.log nbxmpp.roster_nb-module.html#log
+nbxmpp.roster_nb.__package__ nbxmpp.roster_nb-module.html#__package__
+nbxmpp.simplexml nbxmpp.simplexml-module.html
+nbxmpp.simplexml.BadXML2Node nbxmpp.simplexml-module.html#BadXML2Node
+nbxmpp.simplexml.ustr nbxmpp.simplexml-module.html#ustr
+nbxmpp.simplexml.ENCODING nbxmpp.simplexml-module.html#ENCODING
+nbxmpp.simplexml.__package__ nbxmpp.simplexml-module.html#__package__
+nbxmpp.simplexml.XMLescape nbxmpp.simplexml-module.html#XMLescape
+nbxmpp.simplexml.XML2Node nbxmpp.simplexml-module.html#XML2Node
+nbxmpp.simplexml.log nbxmpp.simplexml-module.html#log
+nbxmpp.smacks nbxmpp.smacks-module.html
+nbxmpp.smacks.log nbxmpp.smacks-module.html#log
+nbxmpp.smacks.__package__ nbxmpp.smacks-module.html#__package__
+nbxmpp.stringprepare nbxmpp.stringprepare-module.html
+nbxmpp.stringprepare.nodeprep nbxmpp.stringprepare-module.html#nodeprep
+nbxmpp.stringprepare.C_21 nbxmpp.stringprepare-module.html#C_21
+nbxmpp.stringprepare.C_22 nbxmpp.stringprepare-module.html#C_22
+nbxmpp.stringprepare.C_5 nbxmpp.stringprepare-module.html#C_5
+nbxmpp.stringprepare.__package__ nbxmpp.stringprepare-module.html#__package__
+nbxmpp.stringprepare.resourceprep nbxmpp.stringprepare-module.html#resourceprep
+nbxmpp.stringprepare.C_3 nbxmpp.stringprepare-module.html#C_3
+nbxmpp.stringprepare.C_4 nbxmpp.stringprepare-module.html#C_4
+nbxmpp.stringprepare.C_7 nbxmpp.stringprepare-module.html#C_7
+nbxmpp.stringprepare.C_6 nbxmpp.stringprepare-module.html#C_6
+nbxmpp.stringprepare.C_9 nbxmpp.stringprepare-module.html#C_9
+nbxmpp.stringprepare.C_8 nbxmpp.stringprepare-module.html#C_8
+nbxmpp.stringprepare.B_2 nbxmpp.stringprepare-module.html#B_2
+nbxmpp.stringprepare.B_1 nbxmpp.stringprepare-module.html#B_1
+nbxmpp.stringprepare.C_11 nbxmpp.stringprepare-module.html#C_11
+nbxmpp.stringprepare.C_12 nbxmpp.stringprepare-module.html#C_12
+nbxmpp.stringprepare.nameprep nbxmpp.stringprepare-module.html#nameprep
+nbxmpp.tls_nb nbxmpp.tls_nb-module.html
+nbxmpp.tls_nb.log nbxmpp.tls_nb-module.html#log
+nbxmpp.tls_nb.PYOPENSSL nbxmpp.tls_nb-module.html#PYOPENSSL
+nbxmpp.tls_nb.USE_PYOPENSSL nbxmpp.tls_nb-module.html#USE_PYOPENSSL
+nbxmpp.tls_nb.PYSTDLIB nbxmpp.tls_nb-module.html#PYSTDLIB
+nbxmpp.tls_nb.gattr nbxmpp.tls_nb-module.html#gattr
+nbxmpp.tls_nb.__package__ nbxmpp.tls_nb-module.html#__package__
+nbxmpp.transports_nb nbxmpp.transports_nb-module.html
+nbxmpp.transports_nb.DATA_SENT nbxmpp.transports_nb-module.html#DATA_SENT
+nbxmpp.transports_nb.STATES nbxmpp.transports_nb-module.html#STATES
+nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS nbxmpp.transports_nb-module.html#DISCONNECT_TIMEOUT_SECONDS
+nbxmpp.transports_nb.get_proxy_data_from_dict nbxmpp.transports_nb-module.html#get_proxy_data_from_dict
+nbxmpp.transports_nb.DISCONNECTING nbxmpp.transports_nb-module.html#DISCONNECTING
+nbxmpp.transports_nb.DISCONNECTED nbxmpp.transports_nb-module.html#DISCONNECTED
+nbxmpp.transports_nb.__package__ nbxmpp.transports_nb-module.html#__package__
+nbxmpp.transports_nb.DATA_ERROR nbxmpp.transports_nb-module.html#DATA_ERROR
+nbxmpp.transports_nb.CONNECT_TIMEOUT_SECONDS nbxmpp.transports_nb-module.html#CONNECT_TIMEOUT_SECONDS
+nbxmpp.transports_nb.CONNECTING nbxmpp.transports_nb-module.html#CONNECTING
+nbxmpp.transports_nb.ustr nbxmpp.simplexml-module.html#ustr
+nbxmpp.transports_nb.RECV_BUFSIZE nbxmpp.transports_nb-module.html#RECV_BUFSIZE
+nbxmpp.transports_nb.log nbxmpp.transports_nb-module.html#log
+nbxmpp.transports_nb.PROXY_CONNECTING nbxmpp.transports_nb-module.html#PROXY_CONNECTING
+nbxmpp.transports_nb.urisplit nbxmpp.transports_nb-module.html#urisplit
+nbxmpp.transports_nb.DATA_RECEIVED nbxmpp.transports_nb-module.html#DATA_RECEIVED
+nbxmpp.transports_nb.CONNECTED nbxmpp.transports_nb-module.html#CONNECTED
+nbxmpp.auth_nb.NonBlockingBind nbxmpp.auth_nb.NonBlockingBind-class.html
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.auth_nb.NonBlockingBind.plugin nbxmpp.auth_nb.NonBlockingBind-class.html#plugin
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.auth_nb.NonBlockingBind.plugout nbxmpp.auth_nb.NonBlockingBind-class.html#plugout
+nbxmpp.auth_nb.NonBlockingBind._on_bound nbxmpp.auth_nb.NonBlockingBind-class.html#_on_bound
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler nbxmpp.auth_nb.NonBlockingBind-class.html#FeaturesHandler
+nbxmpp.auth_nb.NonBlockingBind.__init__ nbxmpp.auth_nb.NonBlockingBind-class.html#__init__
+nbxmpp.auth_nb.NonBlockingBind._on_session nbxmpp.auth_nb.NonBlockingBind-class.html#_on_session
+nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind nbxmpp.auth_nb.NonBlockingBind-class.html#NonBlockingBind
+nbxmpp.auth_nb.NonBlockingNonSASL nbxmpp.auth_nb.NonBlockingNonSASL-class.html
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin
+nbxmpp.auth_nb.NonBlockingNonSASL._on_username nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_username
+nbxmpp.auth_nb.NonBlockingNonSASL._on_password nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_password
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.auth_nb.NonBlockingNonSASL._on_auth nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_auth
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__ nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__
+nbxmpp.auth_nb.SASL nbxmpp.auth_nb.SASL-class.html
+nbxmpp.auth_nb.SASL.SASLHandler nbxmpp.auth_nb.SASL-class.html#SASLHandler
+nbxmpp.auth_nb.SASL.MechanismHandler nbxmpp.auth_nb.SASL-class.html#MechanismHandler
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.auth_nb.SASL._convert_to_iso88591 nbxmpp.auth_nb.SASL-class.html#_convert_to_iso88591
+nbxmpp.auth_nb.SASL.plugin nbxmpp.auth_nb.SASL-class.html#plugin
+nbxmpp.auth_nb.SASL.auth nbxmpp.auth_nb.SASL-class.html#auth
+nbxmpp.auth_nb.SASL.FeaturesHandler nbxmpp.auth_nb.SASL-class.html#FeaturesHandler
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.auth_nb.SASL.plugout nbxmpp.auth_nb.SASL-class.html#plugout
+nbxmpp.auth_nb.SASL.set_password nbxmpp.auth_nb.SASL-class.html#set_password
+nbxmpp.auth_nb.SASL.__init__ nbxmpp.auth_nb.SASL-class.html#__init__
+nbxmpp.bosh.AckChecker nbxmpp.bosh.AckChecker-class.html
+nbxmpp.bosh.AckChecker.get_not_acked_rids nbxmpp.bosh.AckChecker-class.html#get_not_acked_rids
+nbxmpp.bosh.AckChecker.process_incoming_ack nbxmpp.bosh.AckChecker-class.html#process_incoming_ack
+nbxmpp.bosh.AckChecker.get_rid nbxmpp.bosh.AckChecker-class.html#get_rid
+nbxmpp.bosh.AckChecker.__init__ nbxmpp.bosh.AckChecker-class.html#__init__
+nbxmpp.bosh.AckChecker.backup_stanza nbxmpp.bosh.AckChecker-class.html#backup_stanza
+nbxmpp.bosh.KeyStack nbxmpp.bosh.KeyStack-class.html
+nbxmpp.bosh.KeyStack.reset nbxmpp.bosh.KeyStack-class.html#reset
+nbxmpp.bosh.KeyStack.__init__ nbxmpp.bosh.KeyStack-class.html#__init__
+nbxmpp.bosh.KeyStack.get nbxmpp.bosh.KeyStack-class.html#get
+nbxmpp.bosh.NonBlockingBOSH nbxmpp.bosh.NonBlockingBOSH-class.html
+nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started
+nbxmpp.transports_nb.NonBlockingTransport.set_state nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state
+nbxmpp.bosh.NonBlockingBOSH.get_free_socket nbxmpp.bosh.NonBlockingBOSH-class.html#get_free_socket
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout
+nbxmpp.transports_nb.NonBlockingTransport.plugout nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout
+nbxmpp.bosh.NonBlockingBOSH._on_connect nbxmpp.bosh.NonBlockingBOSH-class.html#_on_connect
+nbxmpp.transports_nb.NonBlockingTransport.get_state nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state
+nbxmpp.bosh.NonBlockingBOSH.on_persistent_fallback nbxmpp.bosh.NonBlockingBOSH-class.html#on_persistent_fallback
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2
+nbxmpp.bosh.NonBlockingBOSH.renew_bosh_wait_timeout nbxmpp.bosh.NonBlockingBOSH-class.html#renew_bosh_wait_timeout
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout
+nbxmpp.bosh.NonBlockingBOSH.send_BOSH nbxmpp.bosh.NonBlockingBOSH-class.html#send_BOSH
+nbxmpp.bosh.NonBlockingBOSH.start_disconnect nbxmpp.bosh.NonBlockingBOSH-class.html#start_disconnect
+nbxmpp.bosh.NonBlockingBOSH.get_new_http_socket nbxmpp.bosh.NonBlockingBOSH-class.html#get_new_http_socket
+nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible nbxmpp.bosh.NonBlockingBOSH-class.html#on_http_request_possible
+nbxmpp.bosh.NonBlockingBOSH.plug_socket nbxmpp.bosh.NonBlockingBOSH-class.html#plug_socket
+nbxmpp.bosh.NonBlockingBOSH.disconnect nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect
+nbxmpp.bosh.NonBlockingBOSH.remove_bosh_wait_timeout nbxmpp.bosh.NonBlockingBOSH-class.html#remove_bosh_wait_timeout
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.bosh.NonBlockingBOSH.send nbxmpp.bosh.NonBlockingBOSH-class.html#send
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2
+nbxmpp.bosh.NonBlockingBOSH.build_stanza nbxmpp.bosh.NonBlockingBOSH-class.html#build_stanza
+nbxmpp.bosh.NonBlockingBOSH.__init__ nbxmpp.bosh.NonBlockingBOSH-class.html#__init__
+nbxmpp.bosh.NonBlockingBOSH.connect_and_flush nbxmpp.bosh.NonBlockingBOSH-class.html#connect_and_flush
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.bosh.NonBlockingBOSH.onreceive nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive
+nbxmpp.bosh.NonBlockingBOSH.send_init nbxmpp.bosh.NonBlockingBOSH-class.html#send_init
+nbxmpp.bosh.NonBlockingBOSH.get_socket_in nbxmpp.bosh.NonBlockingBOSH-class.html#get_socket_in
+nbxmpp.bosh.NonBlockingBOSH.boshify_stanzas nbxmpp.bosh.NonBlockingBOSH-class.html#boshify_stanzas
+nbxmpp.bosh.NonBlockingBOSH.on_bosh_wait_timeout nbxmpp.bosh.NonBlockingBOSH-class.html#on_bosh_wait_timeout
+nbxmpp.bosh.NonBlockingBOSH.append_stanza nbxmpp.bosh.NonBlockingBOSH-class.html#append_stanza
+nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure
+nbxmpp.transports_nb.NonBlockingTransport.plugin nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2
+nbxmpp.transports_nb.NonBlockingTransport.get_fd nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd
+nbxmpp.bosh.NonBlockingBOSH.get_current_state nbxmpp.bosh.NonBlockingBOSH-class.html#get_current_state
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2
+nbxmpp.bosh.NonBlockingBOSH.set_timeout nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout
+nbxmpp.bosh.NonBlockingBOSH.handle_body_attrs nbxmpp.bosh.NonBlockingBOSH-class.html#handle_body_attrs
+nbxmpp.bosh.NonBlockingBOSH.on_received_http nbxmpp.bosh.NonBlockingBOSH-class.html#on_received_http
+nbxmpp.bosh.NonBlockingBOSH.connect nbxmpp.bosh.NonBlockingBOSH-class.html#connect
+nbxmpp.client_nb.NonBlockingClient nbxmpp.client_nb.NonBlockingClient-class.html
+nbxmpp.client_nb.NonBlockingClient._on_start_sasl nbxmpp.client_nb.NonBlockingClient-class.html#_on_start_sasl
+nbxmpp.client_nb.NonBlockingClient._on_connect nbxmpp.client_nb.NonBlockingClient-class.html#_on_connect
+nbxmpp.client_nb.NonBlockingClient._on_old_auth nbxmpp.client_nb.NonBlockingClient-class.html#_on_old_auth
+nbxmpp.client_nb.NonBlockingClient.sendPresence nbxmpp.client_nb.NonBlockingClient-class.html#sendPresence
+nbxmpp.client_nb.NonBlockingClient.connect nbxmpp.client_nb.NonBlockingClient-class.html#connect
+nbxmpp.client_nb.NonBlockingClient._on_stream_start nbxmpp.client_nb.NonBlockingClient-class.html#_on_stream_start
+nbxmpp.client_nb.NonBlockingClient.incoming_stream_version nbxmpp.client_nb.NonBlockingClient-class.html#incoming_stream_version
+nbxmpp.client_nb.NonBlockingClient.__init__ nbxmpp.client_nb.NonBlockingClient-class.html#__init__
+nbxmpp.client_nb.NonBlockingClient.get_peerhost nbxmpp.client_nb.NonBlockingClient-class.html#get_peerhost
+nbxmpp.client_nb.NonBlockingClient.disconnect nbxmpp.client_nb.NonBlockingClient-class.html#disconnect
+nbxmpp.client_nb.NonBlockingClient.raise_event nbxmpp.client_nb.NonBlockingClient-class.html#raise_event
+nbxmpp.client_nb.NonBlockingClient.RegisterDisconnectHandler nbxmpp.client_nb.NonBlockingClient-class.html#RegisterDisconnectHandler
+nbxmpp.client_nb.NonBlockingClient._on_sasl_auth nbxmpp.client_nb.NonBlockingClient-class.html#_on_sasl_auth
+nbxmpp.client_nb.NonBlockingClient.initRoster nbxmpp.client_nb.NonBlockingClient-class.html#initRoster
+nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect_machine
+nbxmpp.client_nb.NonBlockingClient.auth nbxmpp.client_nb.NonBlockingClient-class.html#auth
+nbxmpp.client_nb.NonBlockingClient.getRoster nbxmpp.client_nb.NonBlockingClient-class.html#getRoster
+nbxmpp.client_nb.NonBlockingClient._on_auth_bind nbxmpp.client_nb.NonBlockingClient-class.html#_on_auth_bind
+nbxmpp.client_nb.NonBlockingClient.get_connect_type nbxmpp.client_nb.NonBlockingClient-class.html#get_connect_type
+nbxmpp.client_nb.NonBlockingClient._on_doc_attrs nbxmpp.client_nb.NonBlockingClient-class.html#_on_doc_attrs
+nbxmpp.client_nb.NonBlockingClient.UnregisterDisconnectHandler nbxmpp.client_nb.NonBlockingClient-class.html#UnregisterDisconnectHandler
+nbxmpp.client_nb.NonBlockingClient._tls_negotiation_handler nbxmpp.client_nb.NonBlockingClient-class.html#_tls_negotiation_handler
+nbxmpp.client_nb.NonBlockingClient._try_next_ip nbxmpp.client_nb.NonBlockingClient-class.html#_try_next_ip
+nbxmpp.client_nb.NonBlockingClient.DisconnectHandler nbxmpp.client_nb.NonBlockingClient-class.html#DisconnectHandler
+nbxmpp.client_nb.NonBlockingClient._xmpp_connect nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect
+nbxmpp.client_nb.NonBlockingClient._resolve_hostname nbxmpp.client_nb.NonBlockingClient-class.html#_resolve_hostname
+nbxmpp.dispatcher_nb.BOSHDispatcher nbxmpp.dispatcher_nb.BOSHDispatcher-class.html
+nbxmpp.dispatcher_nb.XMPPDispatcher.restoreHandlers nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugout nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout
+nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData
+nbxmpp.dispatcher_nb.BOSHDispatcher.StreamTerminate nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamTerminate
+nbxmpp.dispatcher_nb.XMPPDispatcher._init nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_init
+nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandlerOnce nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__ nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterDefaultHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterDefaultHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse
+nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace
+nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn
+nbxmpp.dispatcher_nb.XMPPDispatcher.dumpHandlers nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers
+nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterCycleHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterCycleHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse
+nbxmpp.dispatcher_nb.XMPPDispatcher.send nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterEventHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterEventHandler
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.dispatcher_nb.BOSHDispatcher.StreamInit nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit
+nbxmpp.dispatcher_nb.XMPPDispatcher.replace_non_character nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterCycleHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler
+nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespaceHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol
+nbxmpp.dispatcher_nb.XMPPDispatcher._check_stream_start nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_check_stream_start
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.returnStanzaHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#returnStanzaHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.Event nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event
+nbxmpp.dispatcher_nb.Dispatcher nbxmpp.dispatcher_nb.Dispatcher-class.html
+nbxmpp.dispatcher_nb.Dispatcher.get_instance nbxmpp.dispatcher_nb.Dispatcher-class.html#get_instance
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn
+nbxmpp.dispatcher_nb.XMPPDispatcher nbxmpp.dispatcher_nb.XMPPDispatcher-class.html
+nbxmpp.dispatcher_nb.XMPPDispatcher.restoreHandlers nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugout nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout
+nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData
+nbxmpp.dispatcher_nb.XMPPDispatcher._init nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_init
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandlerOnce nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__ nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterDefaultHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterDefaultHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse
+nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.dispatcher_nb.XMPPDispatcher.dumpHandlers nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers
+nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterCycleHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterCycleHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse
+nbxmpp.dispatcher_nb.XMPPDispatcher.send nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterEventHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterEventHandler
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.dispatcher_nb.XMPPDispatcher.StreamInit nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#StreamInit
+nbxmpp.dispatcher_nb.XMPPDispatcher.replace_non_character nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterCycleHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespaceHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol
+nbxmpp.dispatcher_nb.XMPPDispatcher._check_stream_start nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_check_stream_start
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.returnStanzaHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#returnStanzaHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID
+nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler
+nbxmpp.dispatcher_nb.XMPPDispatcher.Event nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event
+nbxmpp.idlequeue.GlibIdleQueue nbxmpp.idlequeue.GlibIdleQueue-class.html
+nbxmpp.idlequeue.IdleQueue.current_time nbxmpp.idlequeue.IdleQueue-class.html#current_time
+nbxmpp.idlequeue.IdleQueue.remove_alarm nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm
+nbxmpp.idlequeue.GlibIdleQueue.PROCESS_TIMEOUT nbxmpp.idlequeue.GlibIdleQueue-class.html#PROCESS_TIMEOUT
+nbxmpp.idlequeue.IdleQueue._check_time_events nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events
+nbxmpp.idlequeue.GlibIdleQueue._init_idle nbxmpp.idlequeue.GlibIdleQueue-class.html#_init_idle
+nbxmpp.idlequeue.GlibIdleQueue._process_events nbxmpp.idlequeue.GlibIdleQueue-class.html#_process_events
+nbxmpp.idlequeue.GlibIdleQueue._add_idle nbxmpp.idlequeue.GlibIdleQueue-class.html#_add_idle
+nbxmpp.idlequeue.GlibIdleQueue.process nbxmpp.idlequeue.GlibIdleQueue-class.html#process
+nbxmpp.idlequeue.GlibIdleQueue._remove_idle nbxmpp.idlequeue.GlibIdleQueue-class.html#_remove_idle
+nbxmpp.idlequeue.IdleQueue.remove_timeout nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout
+nbxmpp.idlequeue.IdleQueue.unplug_idle nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle
+nbxmpp.idlequeue.IdleQueue.set_read_timeout nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout
+nbxmpp.idlequeue.IdleQueue.plug_idle nbxmpp.idlequeue.IdleQueue-class.html#plug_idle
+nbxmpp.idlequeue.IdleQueue.__init__ nbxmpp.idlequeue.IdleQueue-class.html#__init__
+nbxmpp.idlequeue.IdleQueue.set_alarm nbxmpp.idlequeue.IdleQueue-class.html#set_alarm
+nbxmpp.idlequeue.IdleCommand nbxmpp.idlequeue.IdleCommand-class.html
+nbxmpp.idlequeue.IdleCommand._compose_command_args nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_args
+nbxmpp.idlequeue.IdleCommand.set_idlequeue nbxmpp.idlequeue.IdleCommand-class.html#set_idlequeue
+nbxmpp.idlequeue.IdleCommand.end nbxmpp.idlequeue.IdleCommand-class.html#end
+nbxmpp.idlequeue.IdleCommand.start nbxmpp.idlequeue.IdleCommand-class.html#start
+nbxmpp.idlequeue.IdleCommand._compose_command_line nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_line
+nbxmpp.idlequeue.IdleCommand.pollend nbxmpp.idlequeue.IdleCommand-class.html#pollend
+nbxmpp.idlequeue.IdleCommand.pollin nbxmpp.idlequeue.IdleCommand-class.html#pollin
+nbxmpp.idlequeue.IdleCommand._start_posix nbxmpp.idlequeue.IdleCommand-class.html#_start_posix
+nbxmpp.idlequeue.IdleCommand.read_timeout nbxmpp.idlequeue.IdleCommand-class.html#read_timeout
+nbxmpp.idlequeue.IdleObject.fd nbxmpp.idlequeue.IdleObject-class.html#fd
+nbxmpp.idlequeue.IdleCommand.wait_child nbxmpp.idlequeue.IdleCommand-class.html#wait_child
+nbxmpp.idlequeue.IdleCommand._start_nt nbxmpp.idlequeue.IdleCommand-class.html#_start_nt
+nbxmpp.idlequeue.IdleObject.pollout nbxmpp.idlequeue.IdleObject-class.html#pollout
+nbxmpp.idlequeue.IdleCommand.__init__ nbxmpp.idlequeue.IdleCommand-class.html#__init__
+nbxmpp.idlequeue.IdleCommand._return_result nbxmpp.idlequeue.IdleCommand-class.html#_return_result
+nbxmpp.idlequeue.IdleObject nbxmpp.idlequeue.IdleObject-class.html
+nbxmpp.idlequeue.IdleObject.pollend nbxmpp.idlequeue.IdleObject-class.html#pollend
+nbxmpp.idlequeue.IdleObject.fd nbxmpp.idlequeue.IdleObject-class.html#fd
+nbxmpp.idlequeue.IdleObject.read_timeout nbxmpp.idlequeue.IdleObject-class.html#read_timeout
+nbxmpp.idlequeue.IdleObject.pollin nbxmpp.idlequeue.IdleObject-class.html#pollin
+nbxmpp.idlequeue.IdleObject.pollout nbxmpp.idlequeue.IdleObject-class.html#pollout
+nbxmpp.idlequeue.IdleObject.__init__ nbxmpp.idlequeue.IdleObject-class.html#__init__
+nbxmpp.idlequeue.IdleQueue nbxmpp.idlequeue.IdleQueue-class.html
+nbxmpp.idlequeue.IdleQueue.current_time nbxmpp.idlequeue.IdleQueue-class.html#current_time
+nbxmpp.idlequeue.IdleQueue.remove_alarm nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm
+nbxmpp.idlequeue.IdleQueue.PROCESS_TIMEOUT nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT
+nbxmpp.idlequeue.IdleQueue.set_alarm nbxmpp.idlequeue.IdleQueue-class.html#set_alarm
+nbxmpp.idlequeue.IdleQueue._init_idle nbxmpp.idlequeue.IdleQueue-class.html#_init_idle
+nbxmpp.idlequeue.IdleQueue.unplug_idle nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle
+nbxmpp.idlequeue.IdleQueue._add_idle nbxmpp.idlequeue.IdleQueue-class.html#_add_idle
+nbxmpp.idlequeue.IdleQueue.process nbxmpp.idlequeue.IdleQueue-class.html#process
+nbxmpp.idlequeue.IdleQueue._remove_idle nbxmpp.idlequeue.IdleQueue-class.html#_remove_idle
+nbxmpp.idlequeue.IdleQueue.remove_timeout nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout
+nbxmpp.idlequeue.IdleQueue._process_events nbxmpp.idlequeue.IdleQueue-class.html#_process_events
+nbxmpp.idlequeue.IdleQueue.set_read_timeout nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout
+nbxmpp.idlequeue.IdleQueue.plug_idle nbxmpp.idlequeue.IdleQueue-class.html#plug_idle
+nbxmpp.idlequeue.IdleQueue.__init__ nbxmpp.idlequeue.IdleQueue-class.html#__init__
+nbxmpp.idlequeue.IdleQueue._check_time_events nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events
+nbxmpp.idlequeue.SelectIdleQueue nbxmpp.idlequeue.SelectIdleQueue-class.html
+nbxmpp.idlequeue.IdleQueue.current_time nbxmpp.idlequeue.IdleQueue-class.html#current_time
+nbxmpp.idlequeue.IdleQueue.remove_alarm nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm
+nbxmpp.idlequeue.IdleQueue.PROCESS_TIMEOUT nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT
+nbxmpp.idlequeue.IdleQueue._check_time_events nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events
+nbxmpp.idlequeue.SelectIdleQueue._init_idle nbxmpp.idlequeue.SelectIdleQueue-class.html#_init_idle
+nbxmpp.idlequeue.IdleQueue.unplug_idle nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle
+nbxmpp.idlequeue.SelectIdleQueue._add_idle nbxmpp.idlequeue.SelectIdleQueue-class.html#_add_idle
+nbxmpp.idlequeue.SelectIdleQueue.process nbxmpp.idlequeue.SelectIdleQueue-class.html#process
+nbxmpp.idlequeue.SelectIdleQueue._remove_idle nbxmpp.idlequeue.SelectIdleQueue-class.html#_remove_idle
+nbxmpp.idlequeue.IdleQueue.remove_timeout nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout
+nbxmpp.idlequeue.IdleQueue._process_events nbxmpp.idlequeue.IdleQueue-class.html#_process_events
+nbxmpp.idlequeue.IdleQueue.set_read_timeout nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout
+nbxmpp.idlequeue.IdleQueue.plug_idle nbxmpp.idlequeue.IdleQueue-class.html#plug_idle
+nbxmpp.idlequeue.IdleQueue.__init__ nbxmpp.idlequeue.IdleQueue-class.html#__init__
+nbxmpp.idlequeue.IdleQueue.set_alarm nbxmpp.idlequeue.IdleQueue-class.html#set_alarm
+nbxmpp.plugin.PlugIn nbxmpp.plugin.PlugIn-class.html
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.plugin.PlugIn.__init__ nbxmpp.plugin.PlugIn-class.html#__init__
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.protocol.Acks nbxmpp.protocol.Acks-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.Acks.buildEnable nbxmpp.protocol.Acks-class.html#buildEnable
+nbxmpp.protocol.Acks.buildAnswer nbxmpp.protocol.Acks-class.html#buildAnswer
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.protocol.Acks.__init__ nbxmpp.protocol.Acks-class.html#__init__
+nbxmpp.protocol.Acks.buildRequest nbxmpp.protocol.Acks-class.html#buildRequest
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.simplexml.Node.__setitem__ nbxmpp.simplexml.Node-class.html#__setitem__
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.Acks.buildResume nbxmpp.protocol.Acks-class.html#buildResume
+nbxmpp.protocol.BOSHBody nbxmpp.protocol.BOSHBody-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.BOSHBody.__init__ nbxmpp.protocol.BOSHBody-class.html#__init__
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.simplexml.Node.__setitem__ nbxmpp.simplexml.Node-class.html#__setitem__
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.BadFormat nbxmpp.protocol.BadFormat-class.html
+nbxmpp.protocol.BadNamespacePrefix nbxmpp.protocol.BadNamespacePrefix-class.html
+nbxmpp.protocol.Conflict nbxmpp.protocol.Conflict-class.html
+nbxmpp.protocol.ConnectionTimeout nbxmpp.protocol.ConnectionTimeout-class.html
+nbxmpp.protocol.DataField nbxmpp.protocol.DataField-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.protocol.DataField.addOption nbxmpp.protocol.DataField-class.html#addOption
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.protocol.DataField.getValues nbxmpp.protocol.DataField-class.html#getValues
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.DataField.getOptions nbxmpp.protocol.DataField-class.html#getOptions
+nbxmpp.protocol.DataField.setVar nbxmpp.protocol.DataField-class.html#setVar
+nbxmpp.protocol.DataField.__init__ nbxmpp.protocol.DataField-class.html#__init__
+nbxmpp.protocol.DataField.setType nbxmpp.protocol.DataField-class.html#setType
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.protocol.DataField.getDesc nbxmpp.protocol.DataField-class.html#getDesc
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.protocol.DataField.getVar nbxmpp.protocol.DataField-class.html#getVar
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.protocol.DataField.setDesc nbxmpp.protocol.DataField-class.html#setDesc
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.protocol.DataField.setValue nbxmpp.protocol.DataField-class.html#setValue
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.DataField.setRequired nbxmpp.protocol.DataField-class.html#setRequired
+nbxmpp.protocol.DataField.getType nbxmpp.protocol.DataField-class.html#getType
+nbxmpp.protocol.DataField.setOptions nbxmpp.protocol.DataField-class.html#setOptions
+nbxmpp.protocol.DataField.isRequired nbxmpp.protocol.DataField-class.html#isRequired
+nbxmpp.simplexml.Node.__setitem__ nbxmpp.simplexml.Node-class.html#__setitem__
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.protocol.DataField.setValues nbxmpp.protocol.DataField-class.html#setValues
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.protocol.DataField.getValue nbxmpp.protocol.DataField-class.html#getValue
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.DataField.addValue nbxmpp.protocol.DataField-class.html#addValue
+nbxmpp.protocol.DataForm nbxmpp.protocol.DataForm-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.protocol.DataForm.setTitle nbxmpp.protocol.DataForm-class.html#setTitle
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.DataForm.setField nbxmpp.protocol.DataForm-class.html#setField
+nbxmpp.protocol.DataForm.__init__ nbxmpp.protocol.DataForm-class.html#__init__
+nbxmpp.protocol.DataForm.setType nbxmpp.protocol.DataForm-class.html#setType
+nbxmpp.protocol.DataForm.__getitem__ nbxmpp.protocol.DataForm-class.html#__getitem__
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.protocol.DataForm.setInstructions nbxmpp.protocol.DataForm-class.html#setInstructions
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.protocol.DataForm.asDict nbxmpp.protocol.DataForm-class.html#asDict
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.DataForm.getType nbxmpp.protocol.DataForm-class.html#getType
+nbxmpp.protocol.DataForm.__setitem__ nbxmpp.protocol.DataForm-class.html#__setitem__
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.protocol.DataForm.getTitle nbxmpp.protocol.DataForm-class.html#getTitle
+nbxmpp.protocol.DataForm.getInstructions nbxmpp.protocol.DataForm-class.html#getInstructions
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.protocol.DataForm.getField nbxmpp.protocol.DataForm-class.html#getField
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.protocol.DataForm.addInstructions nbxmpp.protocol.DataForm-class.html#addInstructions
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.Error nbxmpp.protocol.Error-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.protocol.Protocol.setFrom nbxmpp.protocol.Protocol-class.html#setFrom
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.protocol.Protocol.getID nbxmpp.protocol.Protocol-class.html#getID
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.Protocol.setTo nbxmpp.protocol.Protocol-class.html#setTo
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.protocol.Protocol.setError nbxmpp.protocol.Protocol-class.html#setError
+nbxmpp.protocol.Error.__init__ nbxmpp.protocol.Error-class.html#__init__
+nbxmpp.protocol.Protocol.setType nbxmpp.protocol.Protocol-class.html#setType
+nbxmpp.protocol.Protocol.getTo nbxmpp.protocol.Protocol-class.html#getTo
+nbxmpp.protocol.Protocol.getTimestamp2 nbxmpp.protocol.Protocol-class.html#getTimestamp2
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.protocol.Protocol.getError nbxmpp.protocol.Protocol-class.html#getError
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.protocol.Protocol.getFrom nbxmpp.protocol.Protocol-class.html#getFrom
+nbxmpp.protocol.Protocol.setTimestamp nbxmpp.protocol.Protocol-class.html#setTimestamp
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.protocol.Protocol.getTimestamp nbxmpp.protocol.Protocol-class.html#getTimestamp
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.protocol.Protocol.getErrorCode nbxmpp.protocol.Protocol-class.html#getErrorCode
+nbxmpp.protocol.Error.__dupstr__ nbxmpp.protocol.Error-class.html#__dupstr__
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.Protocol.getType nbxmpp.protocol.Protocol-class.html#getType
+nbxmpp.protocol.Protocol.__setitem__ nbxmpp.protocol.Protocol-class.html#__setitem__
+nbxmpp.protocol.Protocol.getStatusConditions nbxmpp.protocol.Protocol-class.html#getStatusConditions
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.protocol.Protocol.setID nbxmpp.protocol.Protocol-class.html#setID
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.protocol.Protocol.getErrorMsg nbxmpp.protocol.Protocol-class.html#getErrorMsg
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.protocol.Protocol.getProperties nbxmpp.protocol.Protocol-class.html#getProperties
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.protocol.ErrorNode nbxmpp.protocol.ErrorNode-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.ErrorNode.__init__ nbxmpp.protocol.ErrorNode-class.html#__init__
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.simplexml.Node.__setitem__ nbxmpp.simplexml.Node-class.html#__setitem__
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.Hashes nbxmpp.protocol.Hashes-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.protocol.Hashes.supported nbxmpp.protocol.Hashes-class.html#supported
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.Hashes.__init__ nbxmpp.protocol.Hashes-class.html#__init__
+nbxmpp.protocol.Hashes.addHash nbxmpp.protocol.Hashes-class.html#addHash
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.Hashes.calculateHash nbxmpp.protocol.Hashes-class.html#calculateHash
+nbxmpp.simplexml.Node.__setitem__ nbxmpp.simplexml.Node-class.html#__setitem__
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.HostGone nbxmpp.protocol.HostGone-class.html
+nbxmpp.protocol.HostUnknown nbxmpp.protocol.HostUnknown-class.html
+nbxmpp.protocol.ImproperAddressing nbxmpp.protocol.ImproperAddressing-class.html
+nbxmpp.protocol.InternalServerError nbxmpp.protocol.InternalServerError-class.html
+nbxmpp.protocol.InvalidFrom nbxmpp.protocol.InvalidFrom-class.html
+nbxmpp.protocol.InvalidID nbxmpp.protocol.InvalidID-class.html
+nbxmpp.protocol.InvalidNamespace nbxmpp.protocol.InvalidNamespace-class.html
+nbxmpp.protocol.InvalidXML nbxmpp.protocol.InvalidXML-class.html
+nbxmpp.protocol.Iq nbxmpp.protocol.Iq-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.protocol.Protocol.setFrom nbxmpp.protocol.Protocol-class.html#setFrom
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.protocol.Protocol.getID nbxmpp.protocol.Protocol-class.html#getID
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.Protocol.setTo nbxmpp.protocol.Protocol-class.html#setTo
+nbxmpp.protocol.Iq.getQueryNS nbxmpp.protocol.Iq-class.html#getQueryNS
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.protocol.Protocol.setError nbxmpp.protocol.Protocol-class.html#setError
+nbxmpp.protocol.Iq.__init__ nbxmpp.protocol.Iq-class.html#__init__
+nbxmpp.protocol.Protocol.setType nbxmpp.protocol.Protocol-class.html#setType
+nbxmpp.protocol.Protocol.getTo nbxmpp.protocol.Protocol-class.html#getTo
+nbxmpp.protocol.Protocol.getTimestamp2 nbxmpp.protocol.Protocol-class.html#getTimestamp2
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.protocol.Protocol.getError nbxmpp.protocol.Protocol-class.html#getError
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.protocol.Protocol.getFrom nbxmpp.protocol.Protocol-class.html#getFrom
+nbxmpp.protocol.Protocol.setTimestamp nbxmpp.protocol.Protocol-class.html#setTimestamp
+nbxmpp.protocol.Iq.getQueryPayload nbxmpp.protocol.Iq-class.html#getQueryPayload
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.protocol.Protocol.getTimestamp nbxmpp.protocol.Protocol-class.html#getTimestamp
+nbxmpp.protocol.Iq.setQueryPayload nbxmpp.protocol.Iq-class.html#setQueryPayload
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.protocol.Iq.getQuery nbxmpp.protocol.Iq-class.html#getQuery
+nbxmpp.protocol.Protocol.getErrorCode nbxmpp.protocol.Protocol-class.html#getErrorCode
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.Iq.buildReply nbxmpp.protocol.Iq-class.html#buildReply
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.Protocol.getType nbxmpp.protocol.Protocol-class.html#getType
+nbxmpp.protocol.Iq.getQueryChildren nbxmpp.protocol.Iq-class.html#getQueryChildren
+nbxmpp.protocol.Protocol.__setitem__ nbxmpp.protocol.Protocol-class.html#__setitem__
+nbxmpp.protocol.Protocol.getStatusConditions nbxmpp.protocol.Protocol-class.html#getStatusConditions
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.protocol.Protocol.setID nbxmpp.protocol.Protocol-class.html#setID
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.protocol.Protocol.getErrorMsg nbxmpp.protocol.Protocol-class.html#getErrorMsg
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.protocol.Iq.getQuerynode nbxmpp.protocol.Iq-class.html#getQuerynode
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.protocol.Iq.setQuery nbxmpp.protocol.Iq-class.html#setQuery
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.protocol.Protocol.getProperties nbxmpp.protocol.Protocol-class.html#getProperties
+nbxmpp.protocol.Iq.setQueryNS nbxmpp.protocol.Iq-class.html#setQueryNS
+nbxmpp.protocol.Iq.setQuerynode nbxmpp.protocol.Iq-class.html#setQuerynode
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.protocol.JID nbxmpp.protocol.JID-class.html
+nbxmpp.protocol.JID.getDomain nbxmpp.protocol.JID-class.html#getDomain
+nbxmpp.protocol.JID.bareMatch nbxmpp.protocol.JID-class.html#bareMatch
+nbxmpp.protocol.JID.setNode nbxmpp.protocol.JID-class.html#setNode
+nbxmpp.protocol.JID.getStripped nbxmpp.protocol.JID-class.html#getStripped
+nbxmpp.protocol.JID.setResource nbxmpp.protocol.JID-class.html#setResource
+nbxmpp.protocol.JID.__str__ nbxmpp.protocol.JID-class.html#__str__
+nbxmpp.protocol.JID.getResource nbxmpp.protocol.JID-class.html#getResource
+nbxmpp.protocol.JID.setDomain nbxmpp.protocol.JID-class.html#setDomain
+nbxmpp.protocol.JID.__hash__ nbxmpp.protocol.JID-class.html#__hash__
+nbxmpp.protocol.JID.__ne__ nbxmpp.protocol.JID-class.html#__ne__
+nbxmpp.protocol.JID.__eq__ nbxmpp.protocol.JID-class.html#__eq__
+nbxmpp.protocol.JID.__init__ nbxmpp.protocol.JID-class.html#__init__
+nbxmpp.protocol.JID.getNode nbxmpp.protocol.JID-class.html#getNode
+nbxmpp.protocol.Message nbxmpp.protocol.Message-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.protocol.Message.getStatusCode nbxmpp.protocol.Message-class.html#getStatusCode
+nbxmpp.protocol.Protocol.setTo nbxmpp.protocol.Protocol-class.html#setTo
+nbxmpp.protocol.Protocol.setFrom nbxmpp.protocol.Protocol-class.html#setFrom
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.protocol.Protocol.getID nbxmpp.protocol.Protocol-class.html#getID
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.Message.getSubject nbxmpp.protocol.Message-class.html#getSubject
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.protocol.Protocol.setError nbxmpp.protocol.Protocol-class.html#setError
+nbxmpp.protocol.Message.__init__ nbxmpp.protocol.Message-class.html#__init__
+nbxmpp.protocol.Protocol.setType nbxmpp.protocol.Protocol-class.html#setType
+nbxmpp.protocol.Protocol.getTo nbxmpp.protocol.Protocol-class.html#getTo
+nbxmpp.protocol.Message.setBody nbxmpp.protocol.Message-class.html#setBody
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.protocol.Protocol.getError nbxmpp.protocol.Protocol-class.html#getError
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.protocol.Protocol.getFrom nbxmpp.protocol.Protocol-class.html#getFrom
+nbxmpp.protocol.Protocol.setTimestamp nbxmpp.protocol.Protocol-class.html#setTimestamp
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.protocol.Protocol.getTimestamp nbxmpp.protocol.Protocol-class.html#getTimestamp
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.protocol.Protocol.getErrorCode nbxmpp.protocol.Protocol-class.html#getErrorCode
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.protocol.Message.buildReply nbxmpp.protocol.Message-class.html#buildReply
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.Message.setThread nbxmpp.protocol.Message-class.html#setThread
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.protocol.Protocol.getType nbxmpp.protocol.Protocol-class.html#getType
+nbxmpp.protocol.Protocol.__setitem__ nbxmpp.protocol.Protocol-class.html#__setitem__
+nbxmpp.protocol.Protocol.getTimestamp2 nbxmpp.protocol.Protocol-class.html#getTimestamp2
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.protocol.Message.setXHTML nbxmpp.protocol.Message-class.html#setXHTML
+nbxmpp.protocol.Protocol.setID nbxmpp.protocol.Protocol-class.html#setID
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.protocol.Protocol.getErrorMsg nbxmpp.protocol.Protocol-class.html#getErrorMsg
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.protocol.Message.getThread nbxmpp.protocol.Message-class.html#getThread
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.protocol.Message.setSubject nbxmpp.protocol.Message-class.html#setSubject
+nbxmpp.protocol.Protocol.getStatusConditions nbxmpp.protocol.Protocol-class.html#getStatusConditions
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.protocol.Protocol.getProperties nbxmpp.protocol.Protocol-class.html#getProperties
+nbxmpp.protocol.Message.getXHTML nbxmpp.protocol.Message-class.html#getXHTML
+nbxmpp.protocol.Message.getBody nbxmpp.protocol.Message-class.html#getBody
+nbxmpp.protocol.NodeProcessed nbxmpp.protocol.NodeProcessed-class.html
+nbxmpp.protocol.NotAuthorized nbxmpp.protocol.NotAuthorized-class.html
+nbxmpp.protocol.PolicyViolation nbxmpp.protocol.PolicyViolation-class.html
+nbxmpp.protocol.Presence nbxmpp.protocol.Presence-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.protocol.Protocol.getFrom nbxmpp.protocol.Protocol-class.html#getFrom
+nbxmpp.protocol.Presence.getStatusCode nbxmpp.protocol.Presence-class.html#getStatusCode
+nbxmpp.protocol.Presence.getPriority nbxmpp.protocol.Presence-class.html#getPriority
+nbxmpp.protocol.Presence.getAffiliation nbxmpp.protocol.Presence-class.html#getAffiliation
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.protocol.Protocol.getID nbxmpp.protocol.Protocol-class.html#getID
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.protocol.Presence.setPriority nbxmpp.protocol.Presence-class.html#setPriority
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.Protocol.setTo nbxmpp.protocol.Protocol-class.html#setTo
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.protocol.Presence.setStatus nbxmpp.protocol.Presence-class.html#setStatus
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.protocol.Protocol.setError nbxmpp.protocol.Protocol-class.html#setError
+nbxmpp.protocol.Presence.__init__ nbxmpp.protocol.Presence-class.html#__init__
+nbxmpp.protocol.Protocol.setType nbxmpp.protocol.Protocol-class.html#setType
+nbxmpp.protocol.Presence.getShow nbxmpp.protocol.Presence-class.html#getShow
+nbxmpp.protocol.Protocol.getTo nbxmpp.protocol.Protocol-class.html#getTo
+nbxmpp.protocol.Protocol.getTimestamp2 nbxmpp.protocol.Protocol-class.html#getTimestamp2
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.protocol.Protocol.getError nbxmpp.protocol.Protocol-class.html#getError
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.protocol.Presence.getStatus nbxmpp.protocol.Presence-class.html#getStatus
+nbxmpp.protocol.Protocol.setTimestamp nbxmpp.protocol.Protocol-class.html#setTimestamp
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.protocol.Presence.getActor nbxmpp.protocol.Presence-class.html#getActor
+nbxmpp.protocol.Protocol.getTimestamp nbxmpp.protocol.Protocol-class.html#getTimestamp
+nbxmpp.protocol.Presence.getRole nbxmpp.protocol.Presence-class.html#getRole
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.protocol.Protocol.getErrorCode nbxmpp.protocol.Protocol-class.html#getErrorCode
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.Protocol.getType nbxmpp.protocol.Protocol-class.html#getType
+nbxmpp.protocol.Protocol.__setitem__ nbxmpp.protocol.Protocol-class.html#__setitem__
+nbxmpp.protocol.Presence.getJid nbxmpp.protocol.Presence-class.html#getJid
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.protocol.Protocol.setID nbxmpp.protocol.Protocol-class.html#setID
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.protocol.Protocol.getErrorMsg nbxmpp.protocol.Protocol-class.html#getErrorMsg
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.protocol.Presence.setShow nbxmpp.protocol.Presence-class.html#setShow
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.protocol.Presence._muc_getSubTagDataAttr nbxmpp.protocol.Presence-class.html#_muc_getSubTagDataAttr
+nbxmpp.protocol.Presence.getReason nbxmpp.protocol.Presence-class.html#getReason
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.protocol.Protocol.getStatusConditions nbxmpp.protocol.Protocol-class.html#getStatusConditions
+nbxmpp.protocol.Presence.getNewNick nbxmpp.protocol.Presence-class.html#getNewNick
+nbxmpp.protocol.Protocol.getProperties nbxmpp.protocol.Protocol-class.html#getProperties
+nbxmpp.protocol.Protocol.setFrom nbxmpp.protocol.Protocol-class.html#setFrom
+nbxmpp.protocol.Presence._muc_getItemAttr nbxmpp.protocol.Presence-class.html#_muc_getItemAttr
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.protocol.Protocol nbxmpp.protocol.Protocol-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.protocol.Protocol.setFrom nbxmpp.protocol.Protocol-class.html#setFrom
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.protocol.Protocol.getID nbxmpp.protocol.Protocol-class.html#getID
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.protocol.Protocol.setTo nbxmpp.protocol.Protocol-class.html#setTo
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.protocol.Protocol.setError nbxmpp.protocol.Protocol-class.html#setError
+nbxmpp.protocol.Protocol.__init__ nbxmpp.protocol.Protocol-class.html#__init__
+nbxmpp.protocol.Protocol.setType nbxmpp.protocol.Protocol-class.html#setType
+nbxmpp.protocol.Protocol.getTo nbxmpp.protocol.Protocol-class.html#getTo
+nbxmpp.protocol.Protocol.getTimestamp2 nbxmpp.protocol.Protocol-class.html#getTimestamp2
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.protocol.Protocol.getError nbxmpp.protocol.Protocol-class.html#getError
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.protocol.Protocol.getFrom nbxmpp.protocol.Protocol-class.html#getFrom
+nbxmpp.protocol.Protocol.setTimestamp nbxmpp.protocol.Protocol-class.html#setTimestamp
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.protocol.Protocol.getTimestamp nbxmpp.protocol.Protocol-class.html#getTimestamp
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.protocol.Protocol.getErrorCode nbxmpp.protocol.Protocol-class.html#getErrorCode
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.protocol.Protocol.getType nbxmpp.protocol.Protocol-class.html#getType
+nbxmpp.protocol.Protocol.__setitem__ nbxmpp.protocol.Protocol-class.html#__setitem__
+nbxmpp.protocol.Protocol.getStatusConditions nbxmpp.protocol.Protocol-class.html#getStatusConditions
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.protocol.Protocol.setID nbxmpp.protocol.Protocol-class.html#setID
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.protocol.Protocol.getErrorMsg nbxmpp.protocol.Protocol-class.html#getErrorMsg
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.protocol.Protocol.getProperties nbxmpp.protocol.Protocol-class.html#getProperties
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.protocol.RemoteConnectionFailed nbxmpp.protocol.RemoteConnectionFailed-class.html
+nbxmpp.protocol.ResourceConstraint nbxmpp.protocol.ResourceConstraint-class.html
+nbxmpp.protocol.RestrictedXML nbxmpp.protocol.RestrictedXML-class.html
+nbxmpp.protocol.SeeOtherHost nbxmpp.protocol.SeeOtherHost-class.html
+nbxmpp.protocol.StreamError nbxmpp.protocol.StreamError-class.html
+nbxmpp.protocol.SystemShutdown nbxmpp.protocol.SystemShutdown-class.html
+nbxmpp.protocol.UndefinedCondition nbxmpp.protocol.UndefinedCondition-class.html
+nbxmpp.protocol.UnsupportedEncoding nbxmpp.protocol.UnsupportedEncoding-class.html
+nbxmpp.protocol.UnsupportedStanzaType nbxmpp.protocol.UnsupportedStanzaType-class.html
+nbxmpp.protocol.UnsupportedVersion nbxmpp.protocol.UnsupportedVersion-class.html
+nbxmpp.protocol.XMLNotWellFormed nbxmpp.protocol.XMLNotWellFormed-class.html
+nbxmpp.proxy_connectors.HTTPCONNECTConnector nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html
+nbxmpp.proxy_connectors.HTTPCONNECTConnector._on_headers_sent nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#_on_headers_sent
+nbxmpp.proxy_connectors.HTTPCONNECTConnector.start_connecting nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#start_connecting
+nbxmpp.proxy_connectors.ProxyConnector.connecting_over nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over
+nbxmpp.proxy_connectors.ProxyConnector.__init__ nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__
+nbxmpp.proxy_connectors.ProxyConnector.get_instance nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance
+nbxmpp.proxy_connectors.ProxyConnector nbxmpp.proxy_connectors.ProxyConnector-class.html
+nbxmpp.proxy_connectors.ProxyConnector.connecting_over nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over
+nbxmpp.proxy_connectors.ProxyConnector.start_connecting nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting
+nbxmpp.proxy_connectors.ProxyConnector.get_instance nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance
+nbxmpp.proxy_connectors.ProxyConnector.__init__ nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__
+nbxmpp.proxy_connectors.SOCKS5Connector nbxmpp.proxy_connectors.SOCKS5Connector-class.html
+nbxmpp.proxy_connectors.ProxyConnector.connecting_over nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over
+nbxmpp.proxy_connectors.SOCKS5Connector._on_proxy_auth nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_proxy_auth
+nbxmpp.proxy_connectors.SOCKS5Connector.start_connecting nbxmpp.proxy_connectors.SOCKS5Connector-class.html#start_connecting
+nbxmpp.proxy_connectors.SOCKS5Connector._on_req_sent nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_req_sent
+nbxmpp.proxy_connectors.SOCKS5Connector._on_greeting_sent nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_greeting_sent
+nbxmpp.proxy_connectors.ProxyConnector.__init__ nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__
+nbxmpp.proxy_connectors.ProxyConnector.get_instance nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance
+nbxmpp.roster_nb.NonBlockingRoster nbxmpp.roster_nb.NonBlockingRoster-class.html
+nbxmpp.roster_nb.NonBlockingRoster.getRaw nbxmpp.roster_nb.NonBlockingRoster-class.html#getRaw
+nbxmpp.roster_nb.NonBlockingRoster._getResourceData nbxmpp.roster_nb.NonBlockingRoster-class.html#_getResourceData
+nbxmpp.roster_nb.NonBlockingRoster.getGroups nbxmpp.roster_nb.NonBlockingRoster-class.html#getGroups
+nbxmpp.roster_nb.NonBlockingRoster.getPriority nbxmpp.roster_nb.NonBlockingRoster-class.html#getPriority
+nbxmpp.roster_nb.NonBlockingRoster._on_roster_set nbxmpp.roster_nb.NonBlockingRoster-class.html#_on_roster_set
+nbxmpp.roster_nb.NonBlockingRoster.getRawRoster nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawRoster
+nbxmpp.roster_nb.NonBlockingRoster.PresenceHandler nbxmpp.roster_nb.NonBlockingRoster-class.html#PresenceHandler
+nbxmpp.roster_nb.NonBlockingRoster._getItemData nbxmpp.roster_nb.NonBlockingRoster-class.html#_getItemData
+nbxmpp.roster_nb.NonBlockingRoster.__init__ nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__
+nbxmpp.roster_nb.NonBlockingRoster.getShow nbxmpp.roster_nb.NonBlockingRoster-class.html#getShow
+nbxmpp.roster_nb.NonBlockingRoster.getRoster nbxmpp.roster_nb.NonBlockingRoster-class.html#getRoster
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.roster_nb.NonBlockingRoster.getName nbxmpp.roster_nb.NonBlockingRoster-class.html#getName
+nbxmpp.roster_nb.NonBlockingRoster.getStatus nbxmpp.roster_nb.NonBlockingRoster-class.html#getStatus
+nbxmpp.roster_nb.NonBlockingRoster.Unauthorize nbxmpp.roster_nb.NonBlockingRoster-class.html#Unauthorize
+nbxmpp.roster_nb.NonBlockingRoster.Unsubscribe nbxmpp.roster_nb.NonBlockingRoster-class.html#Unsubscribe
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.roster_nb.NonBlockingRoster.RosterIqHandler nbxmpp.roster_nb.NonBlockingRoster-class.html#RosterIqHandler
+nbxmpp.roster_nb.NonBlockingRoster.getRawItem nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawItem
+nbxmpp.roster_nb.NonBlockingRoster.getItems nbxmpp.roster_nb.NonBlockingRoster-class.html#getItems
+nbxmpp.roster_nb.NonBlockingRoster.__getitem__ nbxmpp.roster_nb.NonBlockingRoster-class.html#__getitem__
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.roster_nb.NonBlockingRoster.keys nbxmpp.roster_nb.NonBlockingRoster-class.html#keys
+nbxmpp.roster_nb.NonBlockingRoster.Request nbxmpp.roster_nb.NonBlockingRoster-class.html#Request
+nbxmpp.roster_nb.NonBlockingRoster.getAsk nbxmpp.roster_nb.NonBlockingRoster-class.html#getAsk
+nbxmpp.roster_nb.NonBlockingRoster.setItem nbxmpp.roster_nb.NonBlockingRoster-class.html#setItem
+nbxmpp.roster_nb.NonBlockingRoster.setItemMulti nbxmpp.roster_nb.NonBlockingRoster-class.html#setItemMulti
+nbxmpp.roster_nb.NonBlockingRoster.getItem nbxmpp.roster_nb.NonBlockingRoster-class.html#getItem
+nbxmpp.roster_nb.NonBlockingRoster.Authorize nbxmpp.roster_nb.NonBlockingRoster-class.html#Authorize
+nbxmpp.roster_nb.NonBlockingRoster.plugin nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin
+nbxmpp.roster_nb.NonBlockingRoster.Subscribe nbxmpp.roster_nb.NonBlockingRoster-class.html#Subscribe
+nbxmpp.roster_nb.NonBlockingRoster.setRaw nbxmpp.roster_nb.NonBlockingRoster-class.html#setRaw
+nbxmpp.roster_nb.NonBlockingRoster.delItem nbxmpp.roster_nb.NonBlockingRoster-class.html#delItem
+nbxmpp.roster_nb.NonBlockingRoster.getSubscription nbxmpp.roster_nb.NonBlockingRoster-class.html#getSubscription
+nbxmpp.roster_nb.NonBlockingRoster.getResources nbxmpp.roster_nb.NonBlockingRoster-class.html#getResources
+nbxmpp.simplexml.NT nbxmpp.simplexml.NT-class.html
+nbxmpp.simplexml.T.__delattr__ nbxmpp.simplexml.T-class.html#__delattr__
+nbxmpp.simplexml.NT.__setattr__ nbxmpp.simplexml.NT-class.html#__setattr__
+nbxmpp.simplexml.T.__init__ nbxmpp.simplexml.T-class.html#__init__
+nbxmpp.simplexml.NT.__getattr__ nbxmpp.simplexml.NT-class.html#__getattr__
+nbxmpp.simplexml.Node nbxmpp.simplexml.Node-class.html
+nbxmpp.simplexml.Node.addChild nbxmpp.simplexml.Node-class.html#addChild
+nbxmpp.simplexml.Node.getAttrs nbxmpp.simplexml.Node-class.html#getAttrs
+nbxmpp.simplexml.Node.delAttr nbxmpp.simplexml.Node-class.html#delAttr
+nbxmpp.simplexml.Node.setNamespace nbxmpp.simplexml.Node-class.html#setNamespace
+nbxmpp.simplexml.Node.__str__ nbxmpp.simplexml.Node-class.html#__str__
+nbxmpp.simplexml.Node.getNamespace nbxmpp.simplexml.Node-class.html#getNamespace
+nbxmpp.simplexml.Node.getChildren nbxmpp.simplexml.Node-class.html#getChildren
+nbxmpp.simplexml.Node.has_attr nbxmpp.simplexml.Node-class.html#has_attr
+nbxmpp.simplexml.Node.__init__ nbxmpp.simplexml.Node-class.html#__init__
+nbxmpp.simplexml.Node.__getitem__ nbxmpp.simplexml.Node-class.html#__getitem__
+nbxmpp.simplexml.Node.clearData nbxmpp.simplexml.Node-class.html#clearData
+nbxmpp.simplexml.Node.__contains__ nbxmpp.simplexml.Node-class.html#__contains__
+nbxmpp.simplexml.Node.setParent nbxmpp.simplexml.Node-class.html#setParent
+nbxmpp.simplexml.Node.getName nbxmpp.simplexml.Node-class.html#getName
+nbxmpp.simplexml.Node.__getattr__ nbxmpp.simplexml.Node-class.html#__getattr__
+nbxmpp.simplexml.Node.getData nbxmpp.simplexml.Node-class.html#getData
+nbxmpp.simplexml.Node.lookup_nsp nbxmpp.simplexml.Node-class.html#lookup_nsp
+nbxmpp.simplexml.Node.setData nbxmpp.simplexml.Node-class.html#setData
+nbxmpp.simplexml.Node.setTagData nbxmpp.simplexml.Node-class.html#setTagData
+nbxmpp.simplexml.Node.setName nbxmpp.simplexml.Node-class.html#setName
+nbxmpp.simplexml.Node.getTagAttr nbxmpp.simplexml.Node-class.html#getTagAttr
+nbxmpp.simplexml.Node.__setitem__ nbxmpp.simplexml.Node-class.html#__setitem__
+nbxmpp.simplexml.Node.getPayload nbxmpp.simplexml.Node-class.html#getPayload
+nbxmpp.simplexml.Node.iterTags nbxmpp.simplexml.Node-class.html#iterTags
+nbxmpp.simplexml.Node.getTag nbxmpp.simplexml.Node-class.html#getTag
+nbxmpp.simplexml.Node.setTagAttr nbxmpp.simplexml.Node-class.html#setTagAttr
+nbxmpp.simplexml.Node.getTags nbxmpp.simplexml.Node-class.html#getTags
+nbxmpp.simplexml.Node.__delitem__ nbxmpp.simplexml.Node-class.html#__delitem__
+nbxmpp.simplexml.Node.getTagData nbxmpp.simplexml.Node-class.html#getTagData
+nbxmpp.simplexml.Node.getParent nbxmpp.simplexml.Node-class.html#getParent
+nbxmpp.simplexml.Node.delChild nbxmpp.simplexml.Node-class.html#delChild
+nbxmpp.simplexml.Node.setAttr nbxmpp.simplexml.Node-class.html#setAttr
+nbxmpp.simplexml.Node.getAttr nbxmpp.simplexml.Node-class.html#getAttr
+nbxmpp.simplexml.Node.addData nbxmpp.simplexml.Node-class.html#addData
+nbxmpp.simplexml.Node.setPayload nbxmpp.simplexml.Node-class.html#setPayload
+nbxmpp.simplexml.Node.FORCE_NODE_RECREATION nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION
+nbxmpp.simplexml.Node.setTag nbxmpp.simplexml.Node-class.html#setTag
+nbxmpp.simplexml.NodeBuilder nbxmpp.simplexml.NodeBuilder-class.html
+nbxmpp.simplexml.NodeBuilder.stream_header_received nbxmpp.simplexml.NodeBuilder-class.html#stream_header_received
+nbxmpp.simplexml.NodeBuilder._dec_depth nbxmpp.simplexml.NodeBuilder-class.html#_dec_depth
+nbxmpp.simplexml.NodeBuilder.starttag nbxmpp.simplexml.NodeBuilder-class.html#starttag
+nbxmpp.simplexml.NodeBuilder.endtag nbxmpp.simplexml.NodeBuilder-class.html#endtag
+nbxmpp.simplexml.NodeBuilder.check_data_buffer nbxmpp.simplexml.NodeBuilder-class.html#check_data_buffer
+nbxmpp.simplexml.NodeBuilder.handle_cdata nbxmpp.simplexml.NodeBuilder-class.html#handle_cdata
+nbxmpp.simplexml.NodeBuilder.getDom nbxmpp.simplexml.NodeBuilder-class.html#getDom
+nbxmpp.simplexml.NodeBuilder.dispatch nbxmpp.simplexml.NodeBuilder-class.html#dispatch
+nbxmpp.simplexml.NodeBuilder.stream_footer_received nbxmpp.simplexml.NodeBuilder-class.html#stream_footer_received
+nbxmpp.simplexml.NodeBuilder.has_received_endtag nbxmpp.simplexml.NodeBuilder-class.html#has_received_endtag
+nbxmpp.simplexml.NodeBuilder.destroy nbxmpp.simplexml.NodeBuilder-class.html#destroy
+nbxmpp.simplexml.NodeBuilder._inc_depth nbxmpp.simplexml.NodeBuilder-class.html#_inc_depth
+nbxmpp.simplexml.NodeBuilder.__init__ nbxmpp.simplexml.NodeBuilder-class.html#__init__
+nbxmpp.simplexml.NodeBuilder.handle_namespace_start nbxmpp.simplexml.NodeBuilder-class.html#handle_namespace_start
+nbxmpp.simplexml.T nbxmpp.simplexml.T-class.html
+nbxmpp.simplexml.T.__delattr__ nbxmpp.simplexml.T-class.html#__delattr__
+nbxmpp.simplexml.T.__setattr__ nbxmpp.simplexml.T-class.html#__setattr__
+nbxmpp.simplexml.T.__init__ nbxmpp.simplexml.T-class.html#__init__
+nbxmpp.simplexml.T.__getattr__ nbxmpp.simplexml.T-class.html#__getattr__
+nbxmpp.smacks.Smacks nbxmpp.smacks.Smacks-class.html
+nbxmpp.smacks.Smacks.resume_request nbxmpp.smacks.Smacks-class.html#resume_request
+nbxmpp.smacks.Smacks.send_ack nbxmpp.smacks.Smacks-class.html#send_ack
+nbxmpp.smacks.Smacks.check_ack nbxmpp.smacks.Smacks-class.html#check_ack
+nbxmpp.smacks.Smacks.negociate nbxmpp.smacks.Smacks-class.html#negociate
+nbxmpp.smacks.Smacks.request_ack nbxmpp.smacks.Smacks-class.html#request_ack
+nbxmpp.smacks.Smacks._neg_response nbxmpp.smacks.Smacks-class.html#_neg_response
+nbxmpp.smacks.Smacks.error_handling nbxmpp.smacks.Smacks-class.html#error_handling
+nbxmpp.smacks.Smacks.set_owner nbxmpp.smacks.Smacks-class.html#set_owner
+nbxmpp.smacks.Smacks.__init__ nbxmpp.smacks.Smacks-class.html#__init__
+nbxmpp.stringprepare.EmptyMappingTable nbxmpp.stringprepare.EmptyMappingTable-class.html
+nbxmpp.stringprepare.EmptyMappingTable.__implements__ nbxmpp.stringprepare.IMappingTable-class.html
+nbxmpp.stringprepare.EmptyMappingTable.map nbxmpp.stringprepare.EmptyMappingTable-class.html#map
+nbxmpp.stringprepare.EmptyMappingTable.__init__ nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__
+nbxmpp.stringprepare.ILookupTable nbxmpp.stringprepare.ILookupTable-class.html
+nbxmpp.stringprepare.ILookupTable.lookup nbxmpp.stringprepare.ILookupTable-class.html#lookup
+nbxmpp.stringprepare.IMappingTable nbxmpp.stringprepare.IMappingTable-class.html
+nbxmpp.stringprepare.IMappingTable.map nbxmpp.stringprepare.IMappingTable-class.html#map
+nbxmpp.stringprepare.LookupTable nbxmpp.stringprepare.LookupTable-class.html
+nbxmpp.stringprepare.LookupTable.__implements__ nbxmpp.stringprepare.ILookupTable-class.html
+nbxmpp.stringprepare.LookupTable.lookup nbxmpp.stringprepare.LookupTable-class.html#lookup
+nbxmpp.stringprepare.LookupTable.__init__ nbxmpp.stringprepare.LookupTable-class.html#__init__
+nbxmpp.stringprepare.LookupTableFromFunction nbxmpp.stringprepare.LookupTableFromFunction-class.html
+nbxmpp.stringprepare.LookupTableFromFunction.__implements__ nbxmpp.stringprepare.ILookupTable-class.html
+nbxmpp.stringprepare.LookupTableFromFunction.__init__ nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__
+nbxmpp.stringprepare.MappingTableFromFunction nbxmpp.stringprepare.MappingTableFromFunction-class.html
+nbxmpp.stringprepare.MappingTableFromFunction.__implements__ nbxmpp.stringprepare.IMappingTable-class.html
+nbxmpp.stringprepare.MappingTableFromFunction.__init__ nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__
+nbxmpp.stringprepare.NamePrep nbxmpp.stringprepare.NamePrep-class.html
+nbxmpp.stringprepare.NamePrep.prohibiteds nbxmpp.stringprepare.NamePrep-class.html#prohibiteds
+nbxmpp.stringprepare.NamePrep.nameprep nbxmpp.stringprepare.NamePrep-class.html#nameprep
+nbxmpp.stringprepare.NamePrep.check_prohibiteds nbxmpp.stringprepare.NamePrep-class.html#check_prohibiteds
+nbxmpp.stringprepare.NamePrep.prepare nbxmpp.stringprepare.NamePrep-class.html#prepare
+nbxmpp.stringprepare.NamePrep.n nbxmpp.stringprepare.NamePrep-class.html#n
+nbxmpp.stringprepare.Profile nbxmpp.stringprepare.Profile-class.html
+nbxmpp.stringprepare.Profile.check_unassigneds nbxmpp.stringprepare.Profile-class.html#check_unassigneds
+nbxmpp.stringprepare.Profile.map nbxmpp.stringprepare.Profile-class.html#map
+nbxmpp.stringprepare.Profile.check_prohibiteds nbxmpp.stringprepare.Profile-class.html#check_prohibiteds
+nbxmpp.stringprepare.Profile.prepare nbxmpp.stringprepare.Profile-class.html#prepare
+nbxmpp.stringprepare.Profile.check_bidirectionals nbxmpp.stringprepare.Profile-class.html#check_bidirectionals
+nbxmpp.stringprepare.Profile.__init__ nbxmpp.stringprepare.Profile-class.html#__init__
+nbxmpp.tls_nb.NonBlockingTLS nbxmpp.tls_nb.NonBlockingTLS-class.html
+nbxmpp.tls_nb.NonBlockingTLS._dumpX509 nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509
+nbxmpp.tls_nb.NonBlockingTLS.ssl_h_bits nbxmpp.tls_nb.NonBlockingTLS-class.html#ssl_h_bits
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.tls_nb.NonBlockingTLS._startSSL_pyOpenSSL nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_pyOpenSSL
+nbxmpp.tls_nb.NonBlockingTLS.plugin nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.tls_nb.NonBlockingTLS._dumpX509Name nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509Name
+nbxmpp.tls_nb.NonBlockingTLS._load_cert_file nbxmpp.tls_nb.NonBlockingTLS-class.html#_load_cert_file
+nbxmpp.tls_nb.NonBlockingTLS._dumpPKey nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpPKey
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.tls_nb.NonBlockingTLS._startSSL nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL
+nbxmpp.tls_nb.NonBlockingTLS._startSSL_stdlib nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_stdlib
+nbxmpp.tls_nb.NonBlockingTLS._ssl_verify_callback nbxmpp.tls_nb.NonBlockingTLS-class.html#_ssl_verify_callback
+nbxmpp.tls_nb.NonBlockingTLS.__init__ nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper nbxmpp.tls_nb.PyOpenSSLWrapper-class.html
+nbxmpp.tls_nb.PyOpenSSLWrapper.recv nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#recv
+nbxmpp.tls_nb.PyOpenSSLWrapper.is_numtoolarge nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#is_numtoolarge
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__ nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.send nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send
+nbxmpp.tls_nb.SSLWrapper.Error nbxmpp.tls_nb.SSLWrapper.Error-class.html
+nbxmpp.tls_nb.SSLWrapper nbxmpp.tls_nb.SSLWrapper-class.html
+nbxmpp.tls_nb.SSLWrapper.recv nbxmpp.tls_nb.SSLWrapper-class.html#recv
+nbxmpp.tls_nb.SSLWrapper.__init__ nbxmpp.tls_nb.SSLWrapper-class.html#__init__
+nbxmpp.tls_nb.SSLWrapper.send nbxmpp.tls_nb.SSLWrapper-class.html#send
+nbxmpp.tls_nb.SSLWrapper.Error nbxmpp.tls_nb.SSLWrapper.Error-class.html
+nbxmpp.tls_nb.SSLWrapper.Error nbxmpp.tls_nb.SSLWrapper.Error-class.html
+nbxmpp.tls_nb.SSLWrapper.Error.__str__ nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__ nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__
+nbxmpp.tls_nb.StdlibSSLWrapper nbxmpp.tls_nb.StdlibSSLWrapper-class.html
+nbxmpp.tls_nb.StdlibSSLWrapper.recv nbxmpp.tls_nb.StdlibSSLWrapper-class.html#recv
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__ nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.send nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send
+nbxmpp.tls_nb.SSLWrapper.Error nbxmpp.tls_nb.SSLWrapper.Error-class.html
+nbxmpp.transports_nb.NonBlockingHTTP nbxmpp.transports_nb.NonBlockingHTTP-class.html
+nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started
+nbxmpp.transports_nb.NonBlockingTransport.set_state nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout
+nbxmpp.transports_nb.NonBlockingTransport.plugout nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout
+nbxmpp.transports_nb.NonBlockingTCP._on_connect nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.connect nbxmpp.transports_nb.NonBlockingTCP-class.html#connect
+nbxmpp.transports_nb.NonBlockingHTTP.parse_http_message nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message
+nbxmpp.transports_nb.NonBlockingTCP.read_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout
+nbxmpp.transports_nb.NonBlockingTCP.encode_stanza nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2
+nbxmpp.transports_nb.NonBlockingHTTP.__init__ nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__
+nbxmpp.transports_nb.NonBlockingTCP._do_receive nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive
+nbxmpp.transports_nb.NonBlockingTCP.disconnect nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect
+nbxmpp.transports_nb.NonBlockingHTTP.build_http_message nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message
+nbxmpp.transports_nb.NonBlockingTCP._do_send nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send
+nbxmpp.transports_nb.NonBlockingTCP.send nbxmpp.transports_nb.NonBlockingTCP-class.html#send
+nbxmpp.transports_nb.NonBlockingTCP.tls_init nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init
+nbxmpp.transports_nb.NonBlockingTCP._connect_to_proxy nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy
+nbxmpp.transports_nb.NonBlockingTCP.pollin nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.transports_nb.NonBlockingHTTP._on_receive nbxmpp.transports_nb.NonBlockingHTTP-class.html#_on_receive
+nbxmpp.transports_nb.NonBlockingHTTP.http_send nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.transports_nb.NonBlockingTCP._plug_idle nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle
+nbxmpp.transports_nb.NonBlockingTransport.onreceive nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive
+nbxmpp.idlequeue.IdleObject.fd nbxmpp.idlequeue.IdleObject-class.html#fd
+nbxmpp.transports_nb.NonBlockingTransport.get_state nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state
+nbxmpp.transports_nb.NonBlockingTCP.pollout nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout
+nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure
+nbxmpp.transports_nb.NonBlockingTransport.plugin nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.pollend nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend
+nbxmpp.transports_nb.NonBlockingTransport.get_fd nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.start_disconnect nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect
+nbxmpp.transports_nb.NonBlockingHTTPBOSH nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html
+nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started
+nbxmpp.transports_nb.NonBlockingTransport.set_state nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout
+nbxmpp.transports_nb.NonBlockingTransport.plugout nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout
+nbxmpp.transports_nb.NonBlockingTCP._on_connect nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.connect nbxmpp.transports_nb.NonBlockingTCP-class.html#connect
+nbxmpp.transports_nb.NonBlockingHTTP.parse_http_message nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message
+nbxmpp.transports_nb.NonBlockingTCP.read_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout
+nbxmpp.transports_nb.NonBlockingTCP.encode_stanza nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2
+nbxmpp.transports_nb.NonBlockingHTTP.__init__ nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__
+nbxmpp.transports_nb.NonBlockingHTTPBOSH.set_stanza_build_cb nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#set_stanza_build_cb
+nbxmpp.transports_nb.NonBlockingTCP._do_receive nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive
+nbxmpp.transports_nb.NonBlockingTCP.disconnect nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect
+nbxmpp.transports_nb.NonBlockingHTTP.build_http_message nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message
+nbxmpp.transports_nb.NonBlockingHTTPBOSH._do_send nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#_do_send
+nbxmpp.transports_nb.NonBlockingTCP.send nbxmpp.transports_nb.NonBlockingTCP-class.html#send
+nbxmpp.transports_nb.NonBlockingTCP.tls_init nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init
+nbxmpp.transports_nb.NonBlockingTCP._connect_to_proxy nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy
+nbxmpp.transports_nb.NonBlockingTCP.pollin nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.transports_nb.NonBlockingHTTP._on_receive nbxmpp.transports_nb.NonBlockingHTTP-class.html#_on_receive
+nbxmpp.transports_nb.NonBlockingHTTP.http_send nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.transports_nb.NonBlockingTCP._plug_idle nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle
+nbxmpp.transports_nb.NonBlockingTransport.onreceive nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive
+nbxmpp.idlequeue.IdleObject.fd nbxmpp.idlequeue.IdleObject-class.html#fd
+nbxmpp.transports_nb.NonBlockingTransport.get_state nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state
+nbxmpp.transports_nb.NonBlockingTCP.pollout nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout
+nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure
+nbxmpp.transports_nb.NonBlockingTransport.plugin nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.pollend nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend
+nbxmpp.transports_nb.NonBlockingTransport.get_fd nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.start_disconnect nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect
+nbxmpp.transports_nb.NonBlockingTCP nbxmpp.transports_nb.NonBlockingTCP-class.html
+nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started
+nbxmpp.transports_nb.NonBlockingTransport.set_state nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout
+nbxmpp.transports_nb.NonBlockingTransport.plugout nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout
+nbxmpp.transports_nb.NonBlockingTCP._on_connect nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.connect nbxmpp.transports_nb.NonBlockingTCP-class.html#connect
+nbxmpp.transports_nb.NonBlockingTCP.read_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout
+nbxmpp.transports_nb.NonBlockingTCP.encode_stanza nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.__init__ nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__
+nbxmpp.transports_nb.NonBlockingTCP._do_receive nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive
+nbxmpp.transports_nb.NonBlockingTCP.disconnect nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect
+nbxmpp.transports_nb.NonBlockingTCP.pollend nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend
+nbxmpp.transports_nb.NonBlockingTCP.send nbxmpp.transports_nb.NonBlockingTCP-class.html#send
+nbxmpp.transports_nb.NonBlockingTCP.tls_init nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init
+nbxmpp.transports_nb.NonBlockingTCP._connect_to_proxy nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy
+nbxmpp.transports_nb.NonBlockingTCP.pollin nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.transports_nb.NonBlockingTCP._on_receive nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_receive
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.transports_nb.NonBlockingTCP._plug_idle nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle
+nbxmpp.transports_nb.NonBlockingTransport.onreceive nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive
+nbxmpp.idlequeue.IdleObject.fd nbxmpp.idlequeue.IdleObject-class.html#fd
+nbxmpp.transports_nb.NonBlockingTransport.get_state nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state
+nbxmpp.transports_nb.NonBlockingTCP.pollout nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout
+nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure
+nbxmpp.transports_nb.NonBlockingTransport.plugin nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2
+nbxmpp.transports_nb.NonBlockingTCP._do_send nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send
+nbxmpp.transports_nb.NonBlockingTransport.get_fd nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.start_disconnect nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect
+nbxmpp.transports_nb.NonBlockingTransport nbxmpp.transports_nb.NonBlockingTransport-class.html
+nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started
+nbxmpp.transports_nb.NonBlockingTransport.set_state nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout
+nbxmpp.transports_nb.NonBlockingTransport.plugout nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout
+nbxmpp.transports_nb.NonBlockingTransport._on_connect nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2
+nbxmpp.transports_nb.NonBlockingTransport.connect nbxmpp.transports_nb.NonBlockingTransport-class.html#connect
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout
+nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2
+nbxmpp.transports_nb.NonBlockingTransport.__init__ nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__
+nbxmpp.transports_nb.NonBlockingTransport.disconnect nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect
+nbxmpp.plugin.PlugIn.PlugIn nbxmpp.plugin.PlugIn-class.html#PlugIn
+nbxmpp.transports_nb.NonBlockingTransport.send nbxmpp.transports_nb.NonBlockingTransport-class.html#send
+nbxmpp.plugin.PlugIn.get_instance nbxmpp.plugin.PlugIn-class.html#get_instance
+nbxmpp.plugin.PlugIn.PlugOut nbxmpp.plugin.PlugIn-class.html#PlugOut
+nbxmpp.transports_nb.NonBlockingTransport.onreceive nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive
+nbxmpp.transports_nb.NonBlockingTransport.get_state nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state
+nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure
+nbxmpp.transports_nb.NonBlockingTransport.plugin nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2
+nbxmpp.transports_nb.NonBlockingTransport.get_fd nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2 nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout
+nbxmpp.transports_nb.NonBlockingTransport.start_disconnect nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect
diff --git a/doc/apidocs/class-tree.html b/doc/apidocs/class-tree.html
new file mode 100644
index 0000000..335045c
--- /dev/null
+++ b/doc/apidocs/class-tree.html
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Class Hierarchy</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">&nbsp;</td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="class-tree.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+ <li> <strong class="uidlink"><a href="nbxmpp.bosh.AckChecker-class.html">nbxmpp.bosh.AckChecker</a></strong>:
+ <em class="summary">Class for generating rids and generating and checking acknowledgements in
+BOSH messages</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.dispatcher_nb.Dispatcher-class.html">nbxmpp.dispatcher_nb.Dispatcher</a></strong>:
+ <em class="summary">Why is this here - I needed to redefine Dispatcher for BOSH and easiest way
+was to inherit original Dispatcher (now renamed to XMPPDispatcher). Trouble
+is that reference used to access dispatcher instance is in Client attribute
+named by __class__.__name__ of the dispatcher instance .. long story short:</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.EmptyMappingTable-class.html">nbxmpp.stringprepare.EmptyMappingTable</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.ILookupTable-class.html">nbxmpp.stringprepare.ILookupTable</a></strong>:
+ <em class="summary">Interface for character lookup classes</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.IMappingTable-class.html">nbxmpp.stringprepare.IMappingTable</a></strong>:
+ <em class="summary">Interface for character mapping classes</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.idlequeue.IdleObject-class.html">nbxmpp.idlequeue.IdleObject</a></strong>:
+ <em class="summary">Idle listener interface. Listed methods are called by IdleQueue.</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.idlequeue.IdleCommand-class.html">nbxmpp.idlequeue.IdleCommand</a></strong>:
+ <em class="summary">Can be subclassed to execute commands asynchronously by the idlequeue.
+Result will be optained via file descriptor of created pipe</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">nbxmpp.transports_nb.NonBlockingTCP</a></strong>:
+ <em class="summary">Non-blocking TCP socket wrapper</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">nbxmpp.transports_nb.NonBlockingHTTP</a></strong>:
+ <em class="summary">Socket wrapper that creates HTTP message out of sent data and peels-off HTTP
+headers from incoming messages</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html">nbxmpp.transports_nb.NonBlockingHTTPBOSH</a></strong>:
+ <em class="summary">Class for BOSH HTTP connections. Slightly redefines HTTP transport by
+calling bosh bodytag generating callback before putting data on wire</em>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.idlequeue.IdleQueue-class.html">nbxmpp.idlequeue.IdleQueue</a></strong>:
+ <em class="summary">IdleQueue provide three distinct time based features. Uses select.poll()</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">nbxmpp.idlequeue.GlibIdleQueue</a></strong>:
+ <em class="summary">Extends IdleQueue to use glib io_add_wath, instead of select/poll In another
+'non gui' implementation of Gajim IdleQueue can be used safetly</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html">nbxmpp.idlequeue.SelectIdleQueue</a></strong>:
+ <em class="summary">Extends IdleQueue to use select.select() for polling</em>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.JID-class.html">nbxmpp.protocol.JID</a></strong>:
+ <em class="summary">JID can be built from string, modified, compared, serialised into string</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.bosh.KeyStack-class.html">nbxmpp.bosh.KeyStack</a></strong>:
+ <em class="summary">Class implementing key sequences for BOSH messages</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.LookupTable-class.html">nbxmpp.stringprepare.LookupTable</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.LookupTableFromFunction-class.html">nbxmpp.stringprepare.LookupTableFromFunction</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.MappingTableFromFunction-class.html">nbxmpp.stringprepare.MappingTableFromFunction</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.NamePrep-class.html">nbxmpp.stringprepare.NamePrep</a></strong>:
+ <em class="summary">Implements preparation of internationalized domain names</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.simplexml.NodeBuilder-class.html">nbxmpp.simplexml.NodeBuilder</a></strong>:
+ <em class="summary">Builds a Node class minidom from data parsed to it. This class used for two
+purposes:</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.client_nb.NonBlockingClient-class.html">nbxmpp.client_nb.NonBlockingClient</a></strong>:
+ <em class="summary">Client class is XMPP connection mountpoint. Objects for authentication,
+network communication, roster, xml parsing ... are plugged to client object.
+Client implements the abstract behavior - mostly negotioation and callbacks
+handling, whereas underlying modules take care of feature-specific logic</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.plugin.PlugIn-class.html">nbxmpp.plugin.PlugIn</a></strong>:
+ <em class="summary">Abstract xmpppy plugin infrastructure code, providing plugging in/out and
+debugging functionality</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html">nbxmpp.auth_nb.NonBlockingBind</a></strong>:
+ <em class="summary">Bind some JID to the current connection to allow router know of our
+location. Must be plugged after successful SASL auth</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">nbxmpp.auth_nb.NonBlockingNonSASL</a></strong>:
+ <em class="summary">Implements old Non-SASL (JEP-0078) authentication used in jabberd1.4 and
+transport authentication</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">nbxmpp.roster_nb.NonBlockingRoster</a></strong>:
+ <em class="summary">Defines a plenty of methods that will allow you to manage roster. Also
+automatically track presences from remote JIDs taking into account that
+every JID can have multiple resources connected. Does not currently support
+'error' presences. You can also use mapping interface for access to the
+internal representation of contacts in roster</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">nbxmpp.tls_nb.NonBlockingTLS</a></strong>:
+ <em class="summary">TLS connection used to encrypts already estabilished tcp connection</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">nbxmpp.transports_nb.NonBlockingTransport</a></strong>:
+ <em class="summary">Abstract class representing a transport</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html">nbxmpp.bosh.NonBlockingBOSH</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">nbxmpp.transports_nb.NonBlockingTCP</a></strong>:
+ <em class="summary">Non-blocking TCP socket wrapper</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">nbxmpp.transports_nb.NonBlockingHTTP</a></strong>:
+ <em class="summary">Socket wrapper that creates HTTP message out of sent data and peels-off HTTP
+headers from incoming messages</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html">nbxmpp.transports_nb.NonBlockingHTTPBOSH</a></strong>:
+ <em class="summary">Class for BOSH HTTP connections. Slightly redefines HTTP transport by
+calling bosh bodytag generating callback before putting data on wire</em>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.auth_nb.SASL-class.html">nbxmpp.auth_nb.SASL</a></strong>:
+ <em class="summary">Implements SASL authentication. Can be plugged into NonBlockingClient
+to start authentication</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">nbxmpp.dispatcher_nb.XMPPDispatcher</a></strong>:
+ <em class="summary">Handles XMPP stream and is the first who takes control over a fresh stanza</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">nbxmpp.dispatcher_nb.BOSHDispatcher</a></strong>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare.Profile-class.html">nbxmpp.stringprepare.Profile</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">nbxmpp.proxy_connectors.ProxyConnector</a></strong>:
+ <em class="summary">Interface for proxy-connecting object - when tunnneling XMPP over proxies,
+some connecting process usually has to be done before opening stream. Proxy
+connectors are used right after TCP connection is estabilished</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html">nbxmpp.proxy_connectors.HTTPCONNECTConnector</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html">nbxmpp.proxy_connectors.SOCKS5Connector</a></strong>:
+ <em class="summary">SOCKS5 proxy connection class. Allows to use SOCKS5 proxies with
+(optionally) simple authentication (only USERNAME/PASSWORD auth)</em>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.tls_nb.SSLWrapper-class.html">nbxmpp.tls_nb.SSLWrapper</a></strong>:
+ <em class="summary">Abstract SSLWrapper base class</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html">nbxmpp.tls_nb.PyOpenSSLWrapper</a></strong>:
+ <em class="summary">Wrapper class for PyOpenSSL's recv() and send() methods</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html">nbxmpp.tls_nb.StdlibSSLWrapper</a></strong>:
+ <em class="summary">Wrapper class for Python socket.ssl read() and write() methods</em>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.smacks.Smacks-class.html">nbxmpp.smacks.Smacks</a></strong>:
+ <em class="summary">This is Smacks is the Stream Management class. It takes care of requesting
+and sending acks. Also, it keeps track of the unhandled outgoing stanzas.</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.simplexml.T-class.html">nbxmpp.simplexml.T</a></strong>:
+ <em class="summary">Auxiliary class used to quick access to node's child nodes</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.simplexml.NT-class.html">nbxmpp.simplexml.NT</a></strong>:
+ <em class="summary">Auxiliary class used to quick create node's child nodes</em>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink">object</strong>:
+ <em class="summary">The most base type</em>
+ <ul>
+ <li> <strong class="uidlink">exceptions.BaseException</strong>:
+ <em class="summary">Common base class for all exceptions</em>
+ <ul>
+ <li> <strong class="uidlink">exceptions.Exception</strong>:
+ <em class="summary">Common base class for all non-exit exceptions.</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.NodeProcessed-class.html">nbxmpp.protocol.NodeProcessed</a></strong>:
+ <em class="summary">Exception that should be raised by handler when the handling should be
+stopped</em>
+ </li>
+ <li> <strong class="uidlink">exceptions.StandardError</strong>:
+ <em class="summary">Base class for all standard Python exceptions that do not represent
+interpreter exiting.</em>
+ <ul>
+ <li> <strong class="uidlink">exceptions.EnvironmentError</strong>:
+ <em class="summary">Base class for I/O related errors.</em>
+ <ul>
+ <li> <strong class="uidlink">exceptions.IOError</strong>:
+ <em class="summary">I/O operation failed.</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html">nbxmpp.tls_nb.SSLWrapper.Error</a></strong>:
+ <em class="summary">Generic SSL Error Wrapper</em>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.StreamError-class.html">nbxmpp.protocol.StreamError</a></strong>:
+ <em class="summary">Base exception class for stream errors</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.BadFormat-class.html">nbxmpp.protocol.BadFormat</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.BadNamespacePrefix-class.html">nbxmpp.protocol.BadNamespacePrefix</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Conflict-class.html">nbxmpp.protocol.Conflict</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.ConnectionTimeout-class.html">nbxmpp.protocol.ConnectionTimeout</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.HostGone-class.html">nbxmpp.protocol.HostGone</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.HostUnknown-class.html">nbxmpp.protocol.HostUnknown</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.ImproperAddressing-class.html">nbxmpp.protocol.ImproperAddressing</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.InternalServerError-class.html">nbxmpp.protocol.InternalServerError</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.InvalidFrom-class.html">nbxmpp.protocol.InvalidFrom</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.InvalidID-class.html">nbxmpp.protocol.InvalidID</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.InvalidNamespace-class.html">nbxmpp.protocol.InvalidNamespace</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.InvalidXML-class.html">nbxmpp.protocol.InvalidXML</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.NotAuthorized-class.html">nbxmpp.protocol.NotAuthorized</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.PolicyViolation-class.html">nbxmpp.protocol.PolicyViolation</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.RemoteConnectionFailed-class.html">nbxmpp.protocol.RemoteConnectionFailed</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.ResourceConstraint-class.html">nbxmpp.protocol.ResourceConstraint</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.RestrictedXML-class.html">nbxmpp.protocol.RestrictedXML</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.SeeOtherHost-class.html">nbxmpp.protocol.SeeOtherHost</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.SystemShutdown-class.html">nbxmpp.protocol.SystemShutdown</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.UndefinedCondition-class.html">nbxmpp.protocol.UndefinedCondition</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.UnsupportedEncoding-class.html">nbxmpp.protocol.UnsupportedEncoding</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.UnsupportedStanzaType-class.html">nbxmpp.protocol.UnsupportedStanzaType</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.UnsupportedVersion-class.html">nbxmpp.protocol.UnsupportedVersion</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.XMLNotWellFormed-class.html">nbxmpp.protocol.XMLNotWellFormed</a></strong>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.simplexml.Node-class.html">nbxmpp.simplexml.Node</a></strong>:
+ <em class="summary">Node class describes syntax of separate XML Node. It have a constructor that
+permits node creation from set of &quot;namespace name&quot;, attributes and payload
+of text strings and other nodes. It does not natively support building node
+from text string and uses NodeBuilder class for that purpose. After
+creation node can be mangled in many ways so it can be completely changed.
+Also node can be serialised into string in one of two modes: default (where
+the textual representation of node describes it exactly) and &quot;fancy&quot; - with
+whitespace added to make indentation and thus make result more readable by
+human.</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Acks-class.html">nbxmpp.protocol.Acks</a></strong>:
+ <em class="summary">Acknowledgement elements for Stream Management</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.BOSHBody-class.html">nbxmpp.protocol.BOSHBody</a></strong>:
+ <em class="summary">&lt;body&gt; tag that wraps usual XMPP stanzas in XMPP over BOSH</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.DataField-class.html">nbxmpp.protocol.DataField</a></strong>:
+ <em class="summary">This class is used in the DataForm class to describe the single data item</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.DataForm-class.html">nbxmpp.protocol.DataForm</a></strong>:
+ <em class="summary">Used for manipulating dataforms in XMPP</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.ErrorNode-class.html">nbxmpp.protocol.ErrorNode</a></strong>:
+ <em class="summary">XMPP-style error element</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Hashes-class.html">nbxmpp.protocol.Hashes</a></strong>:
+ <em class="summary">Hash elements for various XEPs as defined in XEP-300</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Protocol-class.html">nbxmpp.protocol.Protocol</a></strong>:
+ <em class="summary">A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs
+and messages</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Error-class.html">nbxmpp.protocol.Error</a></strong>:
+ <em class="summary">Used to quickly transform received stanza into error reply</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Iq-class.html">nbxmpp.protocol.Iq</a></strong>:
+ <em class="summary">XMPP Iq object - get/set dialog mechanism</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Message-class.html">nbxmpp.protocol.Message</a></strong>:
+ <em class="summary">XMPP Message stanza - &quot;push&quot; mechanism</em>
+ </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol.Presence-class.html">nbxmpp.protocol.Presence</a></strong>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/crarr.png b/doc/apidocs/crarr.png
new file mode 100644
index 0000000..26b43c5
--- /dev/null
+++ b/doc/apidocs/crarr.png
Binary files differ
diff --git a/doc/apidocs/epydoc.css b/doc/apidocs/epydoc.css
new file mode 100644
index 0000000..86d4170
--- /dev/null
+++ b/doc/apidocs/epydoc.css
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ * - Set the default foreground & background color with 'body'; and
+ * link colors with 'a:link' and 'a:visited'.
+ * - Use bold for decision list terms.
+ * - The heading styles defined here are used for headings *within*
+ * docstring descriptions. All headings used by epydoc itself use
+ * either class='epydoc' or class='toc' (CSS styles for both
+ * defined below).
+ */
+body { background: #ffffff; color: #000000; }
+p { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link { color: #0000ff; }
+a:visited { color: #204080; }
+dt { font-weight: bold; }
+h1 { font-size: +140%; font-style: italic;
+ font-weight: bold; }
+h2 { font-size: +125%; font-style: italic;
+ font-weight: bold; }
+h3 { font-size: +110%; font-style: italic;
+ font-weight: normal; }
+code { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link { font-family: monospace; }
+
+/* Page Header & Footer
+ * - The standard page header consists of a navigation bar (with
+ * pointers to standard pages such as 'home' and 'trees'); a
+ * breadcrumbs list, which can be used to navigate to containing
+ * classes or modules; options links, to show/hide private
+ * variables and to show/hide frames; and a page title (using
+ * <h1>). The page title may be followed by a link to the
+ * corresponding source code (using 'span.codelink').
+ * - The footer consists of a navigation bar, a timestamp, and a
+ * pointer to epydoc's homepage.
+ */
+h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc { font-size: +130%; font-weight: bold; }
+h3.epydoc { font-size: +115%; font-weight: bold;
+ margin-top: 0.2em; }
+td h3.epydoc { font-size: +115%; font-weight: bold;
+ margin-bottom: 0; }
+table.navbar { background: #a0c0ff; color: #000000;
+ border: 2px groove #c0d0d0; }
+table.navbar table { color: #000000; }
+th.navbar-select { background: #70b0ff;
+ color: #000000; }
+table.navbar a { text-decoration: none; }
+table.navbar a:link { color: #0000ff; }
+table.navbar a:visited { color: #204080; }
+span.breadcrumbs { font-size: 85%; font-weight: bold; }
+span.options { font-size: 70%; }
+span.codelink { font-size: 85%; }
+td.footer { font-size: 85%; }
+
+/* Table Headers
+ * - Each summary table and details section begins with a 'header'
+ * row. This row contains a section title (marked by
+ * 'span.table-header') as well as a show/hide private link
+ * (marked by 'span.options', defined above).
+ * - Summary tables that contain user-defined groups mark those
+ * groups using 'group header' rows.
+ */
+td.table-header { background: #70b0ff; color: #000000;
+ border: 1px solid #608090; }
+td.table-header table { color: #000000; }
+td.table-header table a:link { color: #0000ff; }
+td.table-header table a:visited { color: #204080; }
+span.table-header { font-size: 120%; font-weight: bold; }
+th.group-header { background: #c0e0f8; color: #000000;
+ text-align: left; font-style: italic;
+ font-size: 115%;
+ border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ * - Each object is described by a single row of the table with
+ * two cells. The left cell gives the object's type, and is
+ * marked with 'code.summary-type'. The right cell gives the
+ * object's name and a summary description.
+ * - CSS styles for the table's header and group headers are
+ * defined above, under 'Table Headers'
+ */
+table.summary { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090;
+ margin-bottom: 0.5em; }
+td.summary { border: 1px solid #608090; }
+code.summary-type { font-size: 85%; }
+table.summary a:link { color: #0000ff; }
+table.summary a:visited { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ * - Each object is described in its own div.
+ * - A single-row summary table w/ table-header is used as
+ * a header for each details section (CSS style for table-header
+ * is defined above, under 'Table Headers').
+ */
+table.details { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090;
+ margin: .2em 0 0 0; }
+table.details table { color: #000000; }
+table.details a:link { color: #0000ff; }
+table.details a:visited { color: #204080; }
+
+/* Fields */
+dl.fields { margin-left: 2em; margin-top: 1em;
+ margin-bottom: 1em; }
+dl.fields dd ul { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; }
+div.fields { margin-left: 2em; }
+div.fields p { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ * - link-index is used for indices containing lists of links
+ * (namely, the identifier index & term index).
+ * - index-where is used in link indices for the text indicating
+ * the container/source for each link.
+ * - metadata-index is used for indices containing metadata
+ * extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090; }
+td.link-index { border-width: 0px; }
+table.link-index a:link { color: #0000ff; }
+table.link-index a:visited { color: #204080; }
+span.index-where { font-size: 70%; }
+table.metadata-index { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090;
+ margin: .2em 0 0 0; }
+td.metadata-index { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited { color: #204080; }
+
+/* Function signatures
+ * - sig* is used for the signature in the details section.
+ * - .summary-sig* is used for the signature in the summary
+ * table, and when listing property accessor functions.
+ * */
+.sig-name { color: #006080; }
+.sig-arg { color: #008060; }
+.sig-default { color: #602000; }
+.summary-sig { font-family: monospace; }
+.summary-sig-name { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+ { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+ { color: #006080; font-weight: bold; }
+.summary-sig-arg { color: #006040; }
+.summary-sig-default { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+ font-family: monospace; }
+table.summary
+ a.summary-name:link { color: #006080; font-weight: bold;
+ font-family: monospace; }
+table.summary
+ a.summary-name:visited { color: #006080; font-weight: bold;
+ font-family: monospace; }
+
+/* Variable values
+ * - In the 'variable details' sections, each varaible's value is
+ * listed in a 'pre.variable' box. The width of this box is
+ * restricted to 80 chars; if the value's repr is longer than
+ * this it will be wrapped, using a backslash marked with
+ * class 'variable-linewrap'. If the value's repr is longer
+ * than 3 lines, the rest will be ellided; and an ellipsis
+ * marker ('...' marked with 'variable-ellipsis') will be used.
+ * - If the value is a string, its quote marks will be marked
+ * with 'variable-quote'.
+ * - If the variable is a regexp, it is syntax-highlighted using
+ * the re* CSS classes.
+ */
+pre.variable { padding: .5em; margin: 0;
+ background: #dce4ec; color: #000000;
+ border: 1px solid #708890; }
+.variable-linewrap { color: #604000; font-weight: bold; }
+.variable-ellipsis { color: #604000; font-weight: bold; }
+.variable-quote { color: #604000; font-weight: bold; }
+.variable-group { color: #008000; font-weight: bold; }
+.variable-op { color: #604000; font-weight: bold; }
+.variable-string { color: #006030; }
+.variable-unknown { color: #a00000; font-weight: bold; }
+.re { color: #000000; }
+.re-char { color: #006030; }
+.re-op { color: #600000; }
+.re-group { color: #003060; }
+.re-ref { color: #404040; }
+
+/* Base tree
+ * - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ * - Consists of two frames: one for selecting modules; and
+ * the other listing the contents of the selected module.
+ * - h1.toc is used for each frame's heading
+ * - h2.toc is used for subheadings within each frame.
+ */
+h1.toc { text-align: center; font-size: 105%;
+ margin: 0; font-weight: bold;
+ padding: 0; }
+h2.toc { font-size: 100%; font-weight: bold;
+ margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ * - doctest examples are displayed in a 'pre.py-doctest' block.
+ * If the example is in a details table entry, then it will use
+ * the colors specified by the 'table pre.py-doctest' line.
+ * - Source code listings are displayed in a 'pre.py-src' block.
+ * Each line is marked with 'span.py-line' (used to draw a line
+ * down the left margin, separating the code from the line
+ * numbers). Line numbers are displayed with 'span.py-lineno'.
+ * The expand/collapse block toggle button is displayed with
+ * 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ * modify the font size of the text.)
+ * - If a source code page is opened with an anchor, then the
+ * corresponding code block will be highlighted. The code
+ * block's header is highlighted with 'py-highlight-hdr'; and
+ * the code block's body is highlighted with 'py-highlight'.
+ * - The remaining py-* classes are used to perform syntax
+ * highlighting (py-string for string literals, py-name for names,
+ * etc.)
+ */
+pre.py-doctest { padding: .5em; margin: 1em;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #708890; }
+table pre.py-doctest { background: #dce4ec;
+ color: #000000; }
+pre.py-src { border: 2px solid #000000;
+ background: #f0f0f0; color: #000000; }
+.py-line { border-left: 2px solid #000000;
+ margin-left: .2em; padding-left: .4em; }
+.py-lineno { font-style: italic; font-size: 90%;
+ padding-left: .5em; }
+a.py-toggle { text-decoration: none; }
+div.py-highlight-hdr { border-top: 2px solid #000000;
+ border-bottom: 2px solid #000000;
+ background: #d8e8e8; }
+div.py-highlight { border-bottom: 2px solid #000000;
+ background: #d0e0e0; }
+.py-prompt { color: #005050; font-weight: bold;}
+.py-more { color: #005050; font-weight: bold;}
+.py-string { color: #006030; }
+.py-comment { color: #003060; }
+.py-keyword { color: #600000; }
+.py-output { color: #404040; }
+.py-name { color: #000050; }
+.py-name:link { color: #000050 !important; }
+.py-name:visited { color: #000050 !important; }
+.py-number { color: #005000; }
+.py-defname { color: #000060; font-weight: bold; }
+.py-def-name { color: #000060; font-weight: bold; }
+.py-base-class { color: #000060; }
+.py-param { color: #000060; }
+.py-docstring { color: #006030; }
+.py-decorator { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ * - These CSS styles are used for graphs & diagrams generated using
+ * Graphviz dot. 'img.graph-without-title' is used for bare
+ * diagrams (to remove the border created by making the image
+ * clickable).
+ */
+img.graph-without-title { border: none; }
+img.graph-with-title { border: 1px solid #000000; }
+span.graph-title { font-weight: bold; }
+span.graph-caption { }
+
+/* General-purpose classes
+ * - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ * is not indented, but whose subsequent lines are.
+ * - The 'nomargin-top' class is used to remove the top margin (e.g.
+ * from lists). The 'nomargin' class is used to remove both the
+ * top and bottom margin (but not the left or right margin --
+ * for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em;
+ margin: 0; }
+.nomargin-top { margin-top: 0; }
+.nomargin { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block { padding: 0; margin: .5em 0 .5em 0;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #000000; }
+div.log-error { padding: .1em .3em .1em .3em; margin: 4px;
+ background: #ffb0b0; color: #000000;
+ border: 1px solid #000000; }
+div.log-warning { padding: .1em .3em .1em .3em; margin: 4px;
+ background: #ffffb0; color: #000000;
+ border: 1px solid #000000; }
+div.log-info { padding: .1em .3em .1em .3em; margin: 4px;
+ background: #b0ffb0; color: #000000;
+ border: 1px solid #000000; }
+h2.log-hdr { background: #70b0ff; color: #000000;
+ margin: 0; padding: 0em 0.5em 0em 0.5em;
+ border-bottom: 1px solid #000000; font-size: 110%; }
+p.log { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed { color: #000000; font-weight: bold; }
+tr.opt-default { color: #606060; }
+pre.log { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/doc/apidocs/epydoc.js b/doc/apidocs/epydoc.js
new file mode 100644
index 0000000..e787dbc
--- /dev/null
+++ b/doc/apidocs/epydoc.js
@@ -0,0 +1,293 @@
+function toggle_private() {
+ // Search for any private/public links on this page. Store
+ // their old text in "cmd," so we will know what action to
+ // take; and change their text to the opposite action.
+ var cmd = "?";
+ var elts = document.getElementsByTagName("a");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "privatelink") {
+ cmd = elts[i].innerHTML;
+ elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+ "hide&nbsp;private":"show&nbsp;private");
+ }
+ }
+ // Update all DIVs containing private objects.
+ var elts = document.getElementsByTagName("div");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+ }
+ else if (elts[i].className == "public") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
+ }
+ }
+ // Update all table rows containing private objects. Note, we
+ // use "" instead of "block" becaue IE & firefox disagree on what
+ // this should be (block vs table-row), and "" just gives the
+ // default for both browsers.
+ var elts = document.getElementsByTagName("tr");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+ }
+ }
+ // Update all list items containing private objects.
+ var elts = document.getElementsByTagName("li");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+ "none":"");
+ }
+ }
+ // Update all list items containing private objects.
+ var elts = document.getElementsByTagName("ul");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+ }
+ }
+ // Set a cookie to remember the current option.
+ document.cookie = "EpydocPrivate="+cmd;
+ }
+function show_private() {
+ var elts = document.getElementsByTagName("a");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "privatelink") {
+ cmd = elts[i].innerHTML;
+ if (cmd && cmd.substr(0,4)=="show")
+ toggle_private();
+ }
+ }
+ }
+function getCookie(name) {
+ var dc = document.cookie;
+ var prefix = name + "=";
+ var begin = dc.indexOf("; " + prefix);
+ if (begin == -1) {
+ begin = dc.indexOf(prefix);
+ if (begin != 0) return null;
+ } else
+ { begin += 2; }
+ var end = document.cookie.indexOf(";", begin);
+ if (end == -1)
+ { end = dc.length; }
+ return unescape(dc.substring(begin + prefix.length, end));
+ }
+function setFrame(url1, url2) {
+ parent.frames[1].location.href = url1;
+ parent.frames[2].location.href = url2;
+ }
+function checkCookie() {
+ var cmd=getCookie("EpydocPrivate");
+ if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+ toggle_private();
+ }
+function toggleCallGraph(id) {
+ var elt = document.getElementById(id);
+ if (elt.style.display == "none")
+ elt.style.display = "block";
+ else
+ elt.style.display = "none";
+ }
+function expand(id) {
+ var elt = document.getElementById(id+"-expanded");
+ if (elt) elt.style.display = "block";
+ var elt = document.getElementById(id+"-expanded-linenums");
+ if (elt) elt.style.display = "block";
+ var elt = document.getElementById(id+"-collapsed");
+ if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+ var elt = document.getElementById(id+"-collapsed-linenums");
+ if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+ var elt = document.getElementById(id+"-toggle");
+ if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+ var elt = document.getElementById(id+"-expanded");
+ if (elt) elt.style.display = "none";
+ var elt = document.getElementById(id+"-expanded-linenums");
+ if (elt) elt.style.display = "none";
+ var elt = document.getElementById(id+"-collapsed-linenums");
+ if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+ var elt = document.getElementById(id+"-toggle");
+ if (elt) { elt.innerHTML = "+"; }
+ var elt = document.getElementById(id+"-collapsed");
+ if (elt) {
+ elt.style.display = "block";
+
+ var indent = elt.getAttribute("indent");
+ var pad = elt.getAttribute("pad");
+ var s = "<tt class='py-lineno'>";
+ for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
+ s += "</tt>";
+ s += "&nbsp;&nbsp;<tt class='py-line'>";
+ for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
+ s += "<a href='#' onclick='expand(\"" + id;
+ s += "\");return false'>...</a></tt><br />";
+ elt.innerHTML = s;
+ }
+}
+
+function toggle(id) {
+ elt = document.getElementById(id+"-toggle");
+ if (elt.innerHTML == "-")
+ collapse(id);
+ else
+ expand(id);
+ return false;
+}
+
+function highlight(id) {
+ var elt = document.getElementById(id+"-def");
+ if (elt) elt.className = "py-highlight-hdr";
+ var elt = document.getElementById(id+"-expanded");
+ if (elt) elt.className = "py-highlight";
+ var elt = document.getElementById(id+"-collapsed");
+ if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+ var n = 1;
+ var pos = s.indexOf("\n");
+ while ( pos > 0) {
+ n += 1;
+ pos = s.indexOf("\n", pos+1);
+ }
+ return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+ var elts = document.getElementsByTagName("div");
+ for (var i=0; i<elts.length; i++) {
+ var elt = elts[i];
+ var split = elt.id.indexOf("-");
+ if (split > 0)
+ if (elt.id.substring(split, elt.id.length) == "-expanded")
+ if (num_lines(elt.innerHTML) > min_lines)
+ collapse(elt.id.substring(0, split));
+ }
+}
+
+function expandto(href) {
+ var start = href.indexOf("#")+1;
+ if (start != 0 && start != href.length) {
+ if (href.substring(start, href.length) != "-") {
+ collapse_all(4);
+ pos = href.indexOf(".", start);
+ while (pos != -1) {
+ var id = href.substring(start, pos);
+ expand(id);
+ pos = href.indexOf(".", pos+1);
+ }
+ var id = href.substring(start, href.length);
+ expand(id);
+ highlight(id);
+ }
+ }
+}
+
+function kill_doclink(id) {
+ var parent = document.getElementById(id);
+ parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+ if (!ev) var ev = window.event;
+ if (!this.contains(ev.toElement)) {
+ var parent = document.getElementById(this.parentID);
+ parent.removeChild(parent.childNodes.item(0));
+ }
+}
+
+function doclink(id, name, targets_id) {
+ var elt = document.getElementById(id);
+
+ // If we already opened the box, then destroy it.
+ // (This case should never occur, but leave it in just in case.)
+ if (elt.childNodes.length > 1) {
+ elt.removeChild(elt.childNodes.item(0));
+ }
+ else {
+ // The outer box: relative + inline positioning.
+ var box1 = document.createElement("div");
+ box1.style.position = "relative";
+ box1.style.display = "inline";
+ box1.style.top = 0;
+ box1.style.left = 0;
+
+ // A shadow for fun
+ var shadow = document.createElement("div");
+ shadow.style.position = "absolute";
+ shadow.style.left = "-1.3em";
+ shadow.style.top = "-1.3em";
+ shadow.style.background = "#404040";
+
+ // The inner box: absolute positioning.
+ var box2 = document.createElement("div");
+ box2.style.position = "relative";
+ box2.style.border = "1px solid #a0a0a0";
+ box2.style.left = "-.2em";
+ box2.style.top = "-.2em";
+ box2.style.background = "white";
+ box2.style.padding = ".3em .4em .3em .4em";
+ box2.style.fontStyle = "normal";
+ box2.onmouseout=auto_kill_doclink;
+ box2.parentID = id;
+
+ // Get the targets
+ var targets_elt = document.getElementById(targets_id);
+ var targets = targets_elt.getAttribute("targets");
+ var links = "";
+ target_list = targets.split(",");
+ for (var i=0; i<target_list.length; i++) {
+ var target = target_list[i].split("=");
+ links += "<li><a href='" + target[1] +
+ "' style='text-decoration:none'>" +
+ target[0] + "</a></li>";
+ }
+
+ // Put it all together.
+ elt.insertBefore(box1, elt.childNodes.item(0));
+ //box1.appendChild(box2);
+ box1.appendChild(shadow);
+ shadow.appendChild(box2);
+ box2.innerHTML =
+ "Which <b>"+name+"</b> do you want to see documentation for?" +
+ "<ul style='margin-bottom: 0;'>" +
+ links +
+ "<li><a href='#' style='text-decoration:none' " +
+ "onclick='kill_doclink(\""+id+"\");return false;'>"+
+ "<i>None of the above</i></a></li></ul>";
+ }
+ return false;
+}
+
+function get_anchor() {
+ var href = location.href;
+ var start = href.indexOf("#")+1;
+ if ((start != 0) && (start != href.length))
+ return href.substring(start, href.length);
+ }
+function redirect_url(dottedName) {
+ // Scan through each element of the "pages" list, and check
+ // if "name" matches with any of them.
+ for (var i=0; i<pages.length; i++) {
+
+ // Each page has the form "<pagename>-m" or "<pagename>-c";
+ // extract the <pagename> portion & compare it to dottedName.
+ var pagename = pages[i].substring(0, pages[i].length-2);
+ if (pagename == dottedName.substring(0,pagename.length)) {
+
+ // We've found a page that matches `dottedName`;
+ // construct its URL, using leftover `dottedName`
+ // content to form an anchor.
+ var pagetype = pages[i].charAt(pages[i].length-1);
+ var url = pagename + ((pagetype=="m")?"-module.html":
+ "-class.html");
+ if (dottedName.length > pagename.length)
+ url += "#" + dottedName.substring(pagename.length+1,
+ dottedName.length);
+ return url;
+ }
+ }
+ }
diff --git a/doc/apidocs/frames.html b/doc/apidocs/frames.html
new file mode 100644
index 0000000..d1c9ef1
--- /dev/null
+++ b/doc/apidocs/frames.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title> python-nbxmpp </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="toc.html" name="moduleListFrame"
+ id="moduleListFrame" />
+ <frame src="toc-everything.html" name="moduleFrame"
+ id="moduleFrame" />
+ </frameset>
+ <frame src="nbxmpp-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/apidocs/help.html b/doc/apidocs/help.html
new file mode 100644
index 0000000..cc7bc68
--- /dev/null
+++ b/doc/apidocs/help.html
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Help</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">&nbsp;</td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="help.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for python-nbxmpp. Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class. The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page. </p>
+
+<h2> Object Documentation </h2>
+
+ <p>Each <strong>Package Documentation</strong> page contains: </p>
+ <ul>
+ <li> A description of the package. </li>
+ <li> A list of the modules and sub-packages contained by the
+ package. </li>
+ <li> A summary of the classes defined by the package. </li>
+ <li> A summary of the functions defined by the package. </li>
+ <li> A summary of the variables defined by the package. </li>
+ <li> A detailed description of each function defined by the
+ package. </li>
+ <li> A detailed description of each variable defined by the
+ package. </li>
+ </ul>
+
+ <p>Each <strong>Module Documentation</strong> page contains:</p>
+ <ul>
+ <li> A description of the module. </li>
+ <li> A summary of the classes defined by the module. </li>
+ <li> A summary of the functions defined by the module. </li>
+ <li> A summary of the variables defined by the module. </li>
+ <li> A detailed description of each function defined by the
+ module. </li>
+ <li> A detailed description of each variable defined by the
+ module. </li>
+ </ul>
+
+ <p>Each <strong>Class Documentation</strong> page contains: </p>
+ <ul>
+ <li> A class inheritance diagram. </li>
+ <li> A list of known subclasses. </li>
+ <li> A description of the class. </li>
+ <li> A summary of the methods defined by the class. </li>
+ <li> A summary of the instance variables defined by the class. </li>
+ <li> A summary of the class (static) variables defined by the
+ class. </li>
+ <li> A detailed description of each method defined by the
+ class. </li>
+ <li> A detailed description of each instance variable defined by the
+ class. </li>
+ <li> A detailed description of each class (static) variable defined
+ by the class. </li>
+ </ul>
+
+<h2> Project Documentation </h2>
+
+ <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+ <ul>
+ <li> The <em>module hierarchy</em> lists every package and module, with
+ modules grouped into packages. At the top level, and within each
+ package, modules and sub-packages are listed alphabetically. </li>
+ <li> The <em>class hierarchy</em> lists every class, grouped by base
+ class. If a class has more than one base class, then it will be
+ listed under each base class. At the top level, and under each base
+ class, classes are listed alphabetically. </li>
+ </ul>
+
+ <p> The <strong>Index</strong> page contains indices of terms and
+ identifiers: </p>
+ <ul>
+ <li> The <em>term index</em> lists every term indexed by any object's
+ documentation. For each term, the index provides links to each
+ place where the term is indexed. </li>
+ <li> The <em>identifier index</em> lists the (short) name of every package,
+ module, class, method, function, variable, and parameter. For each
+ identifier, the index provides a short description, and a link to
+ its documentation. </li>
+ </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window. The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+ <tr style="height: 30%">
+ <td align="center" style="font-size: small">
+ Project<br />Contents<hr />...</td>
+ <td align="center" style="font-size: small" rowspan="2" width="70%">
+ API<br />Documentation<br />Frame<br /><br /><br />
+ </td>
+ </tr>
+ <tr>
+ <td align="center" style="font-size: small">
+ Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
+ </td>
+ </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project. Clicking on an entry
+will display its contents in the module contents frame. Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package. Clicking on an entry will display its
+documentation in the API documentation frame. Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages. The following table describes the labels
+on the navigation bar. Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+ <th>Label</th>
+ <th>Highlighted when...</th>
+ <th>Links to...</th>
+</tr>
+ <tr><td valign="top"><strong>[Parent]</strong></td>
+ <td valign="top"><em>(never highlighted)</em></td>
+ <td valign="top"> the parent of the current package </td></tr>
+ <tr><td valign="top"><strong>[Package]</strong></td>
+ <td valign="top">viewing a package</td>
+ <td valign="top">the package containing the current object
+ </td></tr>
+ <tr><td valign="top"><strong>[Module]</strong></td>
+ <td valign="top">viewing a module</td>
+ <td valign="top">the module containing the current object
+ </td></tr>
+ <tr><td valign="top"><strong>[Class]</strong></td>
+ <td valign="top">viewing a class </td>
+ <td valign="top">the class containing the current object</td></tr>
+ <tr><td valign="top"><strong>[Trees]</strong></td>
+ <td valign="top">viewing the trees page</td>
+ <td valign="top"> the trees page </td></tr>
+ <tr><td valign="top"><strong>[Index]</strong></td>
+ <td valign="top">viewing the index page</td>
+ <td valign="top"> the index page </td></tr>
+ <tr><td valign="top"><strong>[Help]</strong></td>
+ <td valign="top">viewing the help page</td>
+ <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed. Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore. For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not. However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/identifier-index.html b/doc/apidocs/identifier-index.html
new file mode 100644
index 0000000..4cf4926
--- /dev/null
+++ b/doc/apidocs/identifier-index.html
@@ -0,0 +1,2839 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Identifier Index</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">&nbsp;</td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="identifier-index.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+ <a href="#J">J</a>
+ <a href="#K">K</a>
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+ <a href="#N">N</a>
+ <a href="#O">O</a>
+ <a href="#P">P</a>
+ Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+ V
+ <a href="#W">W</a>
+ <a href="#X">X</a>
+ Y
+ Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.AckChecker-class.html">AckChecker</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#addInstructions">addInstructions()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#asDict">asDict()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Acks-class.html">Acks</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#addOption">addOption()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#auth">auth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#addValue">addValue()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#auth">auth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#addData">addData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#append_stanza">append_stanza()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html">auth_nb</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Hashes-class.html#addHash">addHash()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Hashes-class.html">Hashes</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ascii_upper">ascii_upper()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Authorize">Authorize()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#B_1">B_1</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh-module.html">bosh</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Acks-class.html#buildAnswer">buildAnswer()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Acks-class.html">Acks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#B_2">B_2</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh-module.html#bosh_errors">bosh_errors</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Acks-class.html#buildEnable">buildEnable()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Acks-class.html">Acks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.AckChecker-class.html#backup_stanza">backup_stanza()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.AckChecker-class.html">AckChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.BOSHBody-class.html">BOSHBody</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#buildReply">buildReply()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.BadFormat-class.html">BadFormat</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#buildReply">buildReply()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.BadNamespacePrefix-class.html">BadNamespacePrefix</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#boshify_stanzas">boshify_stanzas()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Acks-class.html#buildRequest">buildRequest()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Acks-class.html">Acks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html#BadXML2Node">BadXML2Node()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message">build_http_message()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Acks-class.html#buildResume">buildResume()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Acks-class.html">Acks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#bareMatch">bareMatch()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#build_stanza">build_stanza()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#C">C()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_9">C_9</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#connect">connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.c14n-module.html">c14n</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Hashes-class.html#calculateHash">calculateHash()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Hashes-class.html">Hashes</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#connect">connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.c14n-module.html#c14n">c14n()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.c14n-module.html">nbxmpp.c14n</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#challenge_splitter">challenge_splitter()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect">connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_11">C_11</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#changePasswordTo">changePasswordTo()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#connect">connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_12">C_12</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#check_ack">check_ack()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#connect_and_flush">connect_and_flush()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_21">C_21</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.Profile-class.html#check_bidirectionals">check_bidirectionals()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.Profile-class.html">Profile</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#CONNECT_TIMEOUT_SECONDS">CONNECT_TIMEOUT_SECONDS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_22">C_22</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#check_data_buffer">check_data_buffer()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#CONNECTED">CONNECTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_3">C_3</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.NamePrep-class.html#check_prohibiteds">check_prohibiteds()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.NamePrep-class.html">NamePrep</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#CONNECTING">CONNECTING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_4">C_4</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.Profile-class.html#check_prohibiteds">check_prohibiteds()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.Profile-class.html">Profile</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over">connecting_over()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_5">C_5</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.Profile-class.html#check_unassigneds">check_unassigneds()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.Profile-class.html">Profile</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.ConnectionTimeout-class.html">ConnectionTimeout</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_6">C_6</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#current_time">current_time()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_7">C_7</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb-module.html">client_nb</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#C_8">C_8</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Conflict-class.html">Conflict</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#DATA_ERROR">DATA_ERROR</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#delPrivacyList">delPrivacyList()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#DISCONNECTING">DISCONNECTING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#DATA_RECEIVED">DATA_RECEIVED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#destroy">destroy()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch">dispatch()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#DATA_SENT">DATA_SENT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect">disconnect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch">dispatch()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html">DataField</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#disconnect">disconnect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#dispatch">dispatch()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html">DataForm</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect">disconnect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.Dispatcher-class.html">Dispatcher</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb-module.html#DEFAULT_TIMEOUT_SECONDS">DEFAULT_TIMEOUT_SECONDS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect">disconnect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb-module.html">dispatcher_nb</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#DISCONNECT_TIMEOUT_SECONDS">DISCONNECT_TIMEOUT_SECONDS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers">dumpHandlers()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#DISCONNECTED">DISCONNECTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#delItem">delItem()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#DisconnectHandler">DisconnectHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.EmptyMappingTable-class.html">EmptyMappingTable</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_JID_MALFORMED">ERR_JID_MALFORMED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_TIMEOUT">ERR_REMOTE_SERVER_TIMEOUT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza">encode_stanza()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_JID_MALFORMED">ERR_JID_MALFORMED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_RESOURCE_CONSTRAINT">ERR_RESOURCE_CONSTRAINT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html#ENCODING">ENCODING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_NOT_ACCEPTABLE">ERR_NOT_ACCEPTABLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_RESOURCE_CONSTRAINT">ERR_RESOURCE_CONSTRAINT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#end">end()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_NOT_ACCEPTABLE">ERR_NOT_ACCEPTABLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_SERVICE_UNAVAILABLE">ERR_SERVICE_UNAVAILABLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#endtag">endtag()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_NOT_ALLOWED">ERR_NOT_ALLOWED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_SERVICE_UNAVAILABLE">ERR_SERVICE_UNAVAILABLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_BAD_REQUEST">ERR_BAD_REQUEST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_NOT_ALLOWED">ERR_NOT_ALLOWED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_SUBSCRIPTION_REQUIRED">ERR_SUBSCRIPTION_REQUIRED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_BAD_REQUEST">ERR_BAD_REQUEST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_NOT_AUTHORIZED">ERR_NOT_AUTHORIZED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_SUBSCRIPTION_REQUIRED">ERR_SUBSCRIPTION_REQUIRED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_CONFLICT">ERR_CONFLICT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_NOT_AUTHORIZED">ERR_NOT_AUTHORIZED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_UNDEFINED_CONDITION">ERR_UNDEFINED_CONDITION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_CONFLICT">ERR_CONFLICT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_PAYMENT_REQUIRED">ERR_PAYMENT_REQUIRED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_UNDEFINED_CONDITION">ERR_UNDEFINED_CONDITION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_FEATURE_NOT_IMPLEMENTED">ERR_FEATURE_NOT_IMPLEMENTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_PAYMENT_REQUIRED">ERR_PAYMENT_REQUIRED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_UNEXPECTED_REQUEST">ERR_UNEXPECTED_REQUEST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED">ERR_FEATURE_NOT_IMPLEMENTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_RECIPIENT_UNAVAILABLE">ERR_RECIPIENT_UNAVAILABLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_UNEXPECTED_REQUEST">ERR_UNEXPECTED_REQUEST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_FORBIDDEN">ERR_FORBIDDEN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_RECIPIENT_UNAVAILABLE">ERR_RECIPIENT_UNAVAILABLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Error-class.html">Error</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_FORBIDDEN">ERR_FORBIDDEN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_REDIRECT">ERR_REDIRECT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html">Error</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_GONE">ERR_GONE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_REDIRECT">ERR_REDIRECT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#error_handling">error_handling()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_GONE">ERR_GONE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_REGISTRATION_REQUIRED">ERR_REGISTRATION_REQUIRED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.ErrorNode-class.html">ErrorNode</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_INTERNAL_SERVER_ERROR">ERR_INTERNAL_SERVER_ERROR</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_REGISTRATION_REQUIRED">ERR_REGISTRATION_REQUIRED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERRORS">ERRORS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_INTERNAL_SERVER_ERROR">ERR_INTERNAL_SERVER_ERROR</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_REMOTE_SERVER_NOT_FOUND">ERR_REMOTE_SERVER_NOT_FOUND</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERRORS">ERRORS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_ITEM_NOT_FOUND">ERR_ITEM_NOT_FOUND</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_NOT_FOUND">ERR_REMOTE_SERVER_NOT_FOUND</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event">Event()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#ERR_ITEM_NOT_FOUND">ERR_ITEM_NOT_FOUND</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#ERR_REMOTE_SERVER_TIMEOUT">ERR_REMOTE_SERVER_TIMEOUT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh-module.html#FAKE_DESCRIPTOR">FAKE_DESCRIPTOR</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#FeaturesHandler">FeaturesHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#FLAG_READ_WRITE">FLAG_READ_WRITE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html">features_nb</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#FLAG_CLOSE">FLAG_CLOSE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#FLAG_WRITE">FLAG_WRITE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#FeaturesHandler">FeaturesHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#FLAG_READ">FLAG_READ</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb-module.html#gattr">gattr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getErrorMsg">getErrorMsg()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getResources">getResources()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.KeyStack-class.html#get">get()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.KeyStack-class.html">KeyStack</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#getField">getField()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getRole">getRole()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#get_connect_type">get_connect_type()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getFrom">getFrom()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#getRoster">getRoster()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_current_state">get_current_state()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getGroups">getGroups()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRoster">getRoster()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd">get_fd()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getID">getID()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getShow">getShow()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_free_socket">get_free_socket()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#getInstructions">getInstructions()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getShow">getShow()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#get_idlequeue">get_idlequeue()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getItem">getItem()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getStatus">getStatus()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.Dispatcher-class.html#get_instance">get_instance()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.Dispatcher-class.html">Dispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getItems">getItems()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getStatus">getStatus()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.plugin.PlugIn-class.html">PlugIn</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getJid">getJid()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#getStatusCode">getStatusCode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance">get_instance()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getName">getName()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getStatusCode">getStatusCode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_new_http_socket">get_new_http_socket()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getName">getName()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getStatusConditions">getStatusConditions()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.AckChecker-class.html#get_not_acked_rids">get_not_acked_rids()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.AckChecker-class.html">AckChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#getStripped">getStripped()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#get_peerhost">get_peerhost()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getNewNick">getNewNick()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#getSubject">getSubject()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#get_proxy_data_from_dict">get_proxy_data_from_dict()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#getNode">getNode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getSubscription">getSubscription()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh-module.html#get_rand_number">get_rand_number()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#getOptions">getOptions()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.AckChecker-class.html#get_rid">get_rid()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.AckChecker-class.html">AckChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_socket_in">get_socket_in()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state">get_state()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getPriority">getPriority()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#getActiveAndDefaultPrivacyLists">getActiveAndDefaultPrivacyLists()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getPriority">getPriority()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#getThread">getThread()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getActor">getActor()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#getPrivacyList">getPrivacyList()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp">getTimestamp()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getAffiliation">getAffiliation()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#getPrivacyLists">getPrivacyLists()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp2">getTimestamp2()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID">getAnID()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getProperties">getProperties()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#getTitle">getTitle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getAsk">getAsk()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#getQuery">getQuery()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getTo">getTo()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#getQueryChildren">getQueryChildren()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#getType">getType()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#getQuerynode">getQuerynode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#getType">getType()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#getBody">getBody()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#getQueryNS">getQueryNS()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getType">getType()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#getQueryPayload">getQueryPayload()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#getValue">getValue()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#getData">getData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRaw">getRaw()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#getValues">getValues()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#getDesc">getDesc()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawItem">getRawItem()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#getVar">getVar()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#getDom">getDom()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawRoster">getRawRoster()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#getXHTML">getXHTML()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#getDomain">getDomain()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#getReason">getReason()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getError">getError()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#getRegInfo">getRegInfo()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#GSS_STATE_STEP">GSS_STATE_STEP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#getErrorCode">getErrorCode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#getResource">getResource()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#GSS_STATE_WRAP">GSS_STATE_WRAP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#H">H()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#has_received_endtag">has_received_endtag()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.HostGone-class.html">HostGone</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#handle_body_attrs">handle_body_attrs()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Hashes-class.html">Hashes</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.HostUnknown-class.html">HostUnknown</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#handle_cdata">handle_cdata()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#HAVE_GOBJECT">HAVE_GOBJECT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send">http_send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#handle_namespace_start">handle_namespace_start()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#have_kerberos">have_kerberos</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html">HTTPCONNECTConnector</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors-module.html">nbxmpp.proxy_connectors</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#HH">HH()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#incoming_stream_version">incoming_stream_version()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html">Iq</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#initRoster">initRoster()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#IS_CLOSED">IS_CLOSED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html">idlequeue</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.InternalServerError-class.html">InternalServerError</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#is_numtoolarge">is_numtoolarge()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html">PyOpenSSLWrapper</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.InvalidFrom-class.html">InvalidFrom</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#isErrorNode">isErrorNode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.ILookupTable-class.html">ILookupTable</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.InvalidID-class.html">InvalidID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#isRequired">isRequired()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.IMappingTable-class.html">IMappingTable</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.InvalidNamespace-class.html">InvalidNamespace</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#isResultNode">isResultNode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.ImproperAddressing-class.html">ImproperAddressing</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.InvalidXML-class.html">InvalidXML</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="J">J</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html">JID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="K">K</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#kerberos">kerberos</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#keys">keys()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh-module.html#KEY_COUNT">KEY_COUNT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.KeyStack-class.html">KeyStack</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors-module.html">nbxmpp.proxy_connectors</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.ILookupTable-class.html#lookup">lookup()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.ILookupTable-class.html">ILookupTable</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb-module.html">nbxmpp.roster_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.LookupTable-class.html#lookup">lookup()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.LookupTable-class.html">LookupTable</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb-module.html">nbxmpp.client_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks-module.html">nbxmpp.smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.LookupTable-class.html">LookupTable</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.LookupTableFromFunction-class.html">LookupTableFromFunction</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.plugin-module.html">nbxmpp.plugin</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#log">log</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.EmptyMappingTable-class.html#map">map()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.EmptyMappingTable-class.html">EmptyMappingTable</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.Profile-class.html#map">map()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.Profile-class.html">Profile</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#MechanismHandler">MechanismHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.IMappingTable-class.html#map">map()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.IMappingTable-class.html">IMappingTable</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.MappingTableFromFunction-class.html">MappingTableFromFunction</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html">Message</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.NamePrep-class.html#n">n</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.NamePrep-class.html">NamePrep</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_COMPRESS">NS_COMPRESS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MUC_UNIQUE">NS_MUC_UNIQUE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#name">name</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CONDITIONS">NS_CONDITIONS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MUC_USER">NS_MUC_USER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#name">name</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CONFERENCE">NS_CONFERENCE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_NICK">NS_NICK</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.NamePrep-class.html">NamePrep</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DATA">NS_DATA</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_OFFLINE">NS_OFFLINE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#nameprep">nameprep</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DATA_LAYOUT">NS_DATA_LAYOUT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PHYSLOC">NS_PHYSLOC</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.NamePrep-class.html#nameprep">nameprep()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.NamePrep-class.html">NamePrep</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DATA_MEDIA">NS_DATA_MEDIA</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PING">NS_PING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html">nbxmpp</a></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DATA_VALIDATE">NS_DATA_VALIDATE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PRESENCE">NS_PRESENCE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#negociate">negociate()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DELAY">NS_DELAY</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PRIVACY">NS_PRIVACY</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html">Node</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DELAY2">NS_DELAY2</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PRIVATE">NS_PRIVATE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DIALBACK">NS_DIALBACK</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PROFILE">NS_PROFILE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#nodeprep">nodeprep</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DISCO">NS_DISCO</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PUBKEY_ATTEST">NS_PUBKEY_ATTEST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.NodeProcessed-class.html">NodeProcessed</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DISCO_INFO">NS_DISCO_INFO</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PUBKEY_PUBKEY">NS_PUBKEY_PUBKEY</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_DISCO_ITEMS">NS_DISCO_ITEMS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PUBKEY_REVOKE">NS_PUBKEY_REVOKE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#NonBlockingBind">NonBlockingBind()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ENCRYPTED">NS_ENCRYPTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PUBSUB">NS_PUBSUB</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ESESSION">NS_ESESSION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PUBSUB_EVENT">NS_PUBSUB_EVENT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb-module.html">nbxmpp.client_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ESESSION_INIT">NS_ESESSION_INIT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PUBSUB_OWNER">NS_PUBSUB_OWNER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_EVENT">NS_EVENT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_PUBSUB_PUBLISH_OPTIONS">NS_PUBSUB_PUBLISH_OPTIONS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html">NonBlockingHTTPBOSH</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_FEATURE">NS_FEATURE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_RECEIPTS">NS_RECEIPTS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">NonBlockingNonSASL</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_FILE">NS_FILE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_REGISTER">NS_REGISTER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb-module.html">nbxmpp.roster_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_FORWARD">NS_FORWARD</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ROSTER">NS_ROSTER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_GAMING">NS_GAMING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ROSTER_VER">NS_ROSTER_VER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_GATEWAY">NS_GATEWAY</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ROSTERNOTES">NS_ROSTERNOTES</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_GEOLOC">NS_GEOLOC</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ROSTERX">NS_ROSTERX</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.c14n-module.html#normalise_attr">normalise_attr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.c14n-module.html">nbxmpp.c14n</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_GMAILNOTIFY">NS_GMAILNOTIFY</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_RPC">NS_RPC</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.c14n-module.html#normalise_text">normalise_text()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.c14n-module.html">nbxmpp.c14n</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_GROUPCHAT">NS_GROUPCHAT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_RSM">NS_RSM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.NotAuthorized-class.html">NotAuthorized</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_GTALKSETTING">NS_GTALKSETTING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SASL">NS_SASL</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ACTIVITY">NS_ACTIVITY</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_HASHES">NS_HASHES</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SEARCH">NS_SEARCH</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ADDRESS">NS_ADDRESS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_HASHES_MD5">NS_HASHES_MD5</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SECLABEL">NS_SECLABEL</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_AGENTS">NS_AGENTS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_HASHES_SHA1">NS_HASHES_SHA1</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SECLABEL_CATALOG">NS_SECLABEL_CATALOG</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_AMP">NS_AMP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_HASHES_SHA256">NS_HASHES_SHA256</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SERVER">NS_SERVER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_AMP_ERRORS">NS_AMP_ERRORS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_HASHES_SHA512">NS_HASHES_SHA512</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SESSION">NS_SESSION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ARCHIVE">NS_ARCHIVE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_HTTP_AUTH">NS_HTTP_AUTH</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SI">NS_SI</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ARCHIVE_AUTO">NS_ARCHIVE_AUTO</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_HTTP_BIND">NS_HTTP_BIND</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SI_PUB">NS_SI_PUB</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANAGE">NS_ARCHIVE_MANAGE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_IBB">NS_IBB</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SIGNED">NS_SIGNED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANUAL">NS_ARCHIVE_MANUAL</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_INVISIBLE">NS_INVISIBLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_SSN">NS_SSN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ARCHIVE_PREF">NS_ARCHIVE_PREF</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_IQ">NS_IQ</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_STANZA_CRYPTO">NS_STANZA_CRYPTO</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ATOM">NS_ATOM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE">NS_JINGLE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_STANZAS">NS_STANZAS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_ATTENTION">NS_ATTENTION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_BYTESTREAM">NS_JINGLE_BYTESTREAM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_STREAM">NS_STREAM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_AUTH">NS_AUTH</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_ERRORS">NS_JINGLE_ERRORS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_STREAM_MGMT">NS_STREAM_MGMT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_AVATAR">NS_AVATAR</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_FILE_TRANSFER">NS_JINGLE_FILE_TRANSFER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_STREAMS">NS_STREAMS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_BIND">NS_BIND</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_IBB">NS_JINGLE_IBB</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_TIME">NS_TIME</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_BOB">NS_BOB</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_ICE_UDP">NS_JINGLE_ICE_UDP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_TIME_REVISED">NS_TIME_REVISED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_BOOKMARKS">NS_BOOKMARKS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_RAW_UDP">NS_JINGLE_RAW_UDP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_TLS">NS_TLS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_BROWSE">NS_BROWSE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_RTP">NS_JINGLE_RTP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_TUNE">NS_TUNE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_BROWSING">NS_BROWSING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_AUDIO">NS_JINGLE_RTP_AUDIO</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_VACATION">NS_VACATION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_BYTESTREAM">NS_BYTESTREAM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_VIDEO">NS_JINGLE_RTP_VIDEO</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_VCARD">NS_VCARD</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CAPS">NS_CAPS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_JINGLE_XTLS">NS_JINGLE_XTLS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_VCARD_UPDATE">NS_VCARD_UPDATE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CAPTCHA">NS_CAPTCHA</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_LAST">NS_LAST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_VERSION">NS_VERSION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CARBONS">NS_CARBONS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_LOCATION">NS_LOCATION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_VIEWING">NS_VIEWING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CHATSTATES">NS_CHATSTATES</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MESSAGE">NS_MESSAGE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_WAITINGLIST">NS_WAITINGLIST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CHATTING">NS_CHATTING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MOOD">NS_MOOD</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_XHTML">NS_XHTML</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_CLIENT">NS_CLIENT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MUC">NS_MUC</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_XHTML_IM">NS_XHTML_IM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_COMMANDS">NS_COMMANDS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MUC_ADMIN">NS_MUC_ADMIN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_XMPP_STREAMS">NS_XMPP_STREAMS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_COMPONENT_1">NS_COMPONENT_1</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MUC_CONFIG">NS_MUC_CONFIG</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NT-class.html">NT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_COMPONENT_ACCEPT">NS_COMPONENT_ACCEPT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#NS_MUC_OWNER">NS_MUC_OWNER</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_bosh_wait_timeout">on_bosh_wait_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_received_http">on_received_http()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb-module.html#outgoingID">outgoingID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_http_request_possible">on_http_request_possible()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive">onreceive()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_persistent_fallback">on_persistent_fallback()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive">onreceive()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message">parse_http_message()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin">plugin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_RECEIVED">PRIVACY_LISTS_RECEIVED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#PENDING_READ">PENDING_READ</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugout">plugout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#process">process()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#PENDING_WRITE">PENDING_WRITE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#plugout">plugout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#process">process()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PL_ACT_ALLOW">PL_ACT_ALLOW</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout">plugout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#process">process()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.SelectIdleQueue-class.html">SelectIdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PL_ACT_DENY">PL_ACT_DENY</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.plugin.PlugIn-class.html">PlugIn</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.AckChecker-class.html#process_incoming_ack">process_incoming_ack()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.AckChecker-class.html">AckChecker</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PL_TYPE_GROUP">PL_TYPE_GROUP</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout">plugout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#PROCESS_TIMEOUT">PROCESS_TIMEOUT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PL_TYPE_JID">PL_TYPE_JID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.PolicyViolation-class.html">PolicyViolation</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT">PROCESS_TIMEOUT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PL_TYPE_SUBC">PL_TYPE_SUBC</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#pollend">pollend()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking">ProcessNonBlocking()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle">plug_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleObject-class.html#pollend">pollend()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking">ProcessNonBlocking()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#plug_socket">plug_socket()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend">pollend()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.Profile-class.html">Profile</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin-module.html">plugin</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#pollin">pollin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.NamePrep-class.html#prohibiteds">prohibiteds</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.NamePrep-class.html">NamePrep</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin.PlugIn-class.html">PlugIn</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.plugin-module.html">nbxmpp.plugin</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleObject-class.html#pollin">pollin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html">protocol</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugin">plugin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin">pollin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html">Protocol</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin">plugin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">NonBlockingNonSASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleObject-class.html#pollout">pollout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#PROXY_CONNECTING">PROXY_CONNECTING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#plugin">plugin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout">pollout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors-module.html">proxy_connectors</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn">PlugIn()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.NamePrep-class.html#prepare">prepare()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.NamePrep-class.html">NamePrep</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors-module.html">nbxmpp.proxy_connectors</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn">PlugIn()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.Dispatcher-class.html">Dispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.Profile-class.html#prepare">prepare()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.Profile-class.html">Profile</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb-module.html#PYOPENSSL">PYOPENSSL</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin">plugin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html">Presence</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html">PyOpenSSLWrapper</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.plugin.PlugIn-class.html">PlugIn</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#PresenceHandler">PresenceHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb-module.html#PYSTDLIB">PYSTDLIB</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin">plugin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PRIVACY_LIST_RECEIVED">PRIVACY_LIST_RECEIVED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin">plugin()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_ACTIVE_DEFAULT">PRIVACY_LISTS_ACTIVE_DEFAULT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#raise_event">raise_event()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#RegisterDisconnectHandler">RegisterDisconnectHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout">renew_send_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#read_timeout">read_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterEventHandler">RegisterEventHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2">renew_send_timeout2()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleObject-class.html#read_timeout">read_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler">RegisterHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character">replace_non_character()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout">read_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce">RegisterHandlerOnce()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Request">Request()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout">read_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace">RegisterNamespace()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#request_ack">request_ack()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2">read_timeout2()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler">RegisterNamespaceHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.KeyStack-class.html#reset">reset()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.KeyStack-class.html">KeyStack</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#recv">recv()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html">PyOpenSSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol">RegisterProtocol()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.ResourceConstraint-class.html">ResourceConstraint</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.SSLWrapper-class.html#recv">recv()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.RemoteConnectionFailed-class.html">RemoteConnectionFailed</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#resourceprep">resourceprep</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#recv">recv()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html">StdlibSSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm">remove_alarm()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers">restoreHandlers()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#RECV_BUFSIZE">RECV_BUFSIZE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#remove_bosh_wait_timeout">remove_bosh_wait_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.RestrictedXML-class.html">RestrictedXML</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#register">register()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout">remove_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#resume_request">resume_request()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#REGISTER_DATA_RECEIVED">REGISTER_DATA_RECEIVED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout">remove_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#returnStanzaHandler">returnStanzaHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler">RegisterCycleHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout">remove_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb-module.html">roster_nb</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterDefaultHandler">RegisterDefaultHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#renew_bosh_wait_timeout">renew_bosh_wait_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#RosterIqHandler">RosterIqHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html">SASL</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#setError">setError()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_BAD_NAMESPACE_PREFIX">STREAM_BAD_NAMESPACE_PREFIX</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#SASL_ABORTED">SASL_ABORTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#setField">setField()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_CONFLICT">STREAM_CONFLICT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#SASL_ABORTED">SASL_ABORTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#setFrom">setFrom()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_CONFLICT">STREAM_CONFLICT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#sasl_error_conditions">sasl_error_conditions</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#setID">setID()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_CONNECTION_TIMEOUT">STREAM_CONNECTION_TIMEOUT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#SASL_FAILURE">SASL_FAILURE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#setInstructions">setInstructions()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_CONNECTION_TIMEOUT">STREAM_CONNECTION_TIMEOUT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#SASL_FAILURE_IN_PROGRESS">SASL_FAILURE_IN_PROGRESS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setItem">setItem()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#stream_exceptions">stream_exceptions</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#SASL_IN_PROCESS">SASL_IN_PROCESS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setItemMulti">setItemMulti()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#stream_footer_received">stream_footer_received()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#SASL_INCORRECT_ENCODING">SASL_INCORRECT_ENCODING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setName">setName()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#stream_header_received">stream_header_received()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#SASL_INCORRECT_ENCODING">SASL_INCORRECT_ENCODING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_HOST_GONE">STREAM_HOST_GONE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#SASL_INVALID_AUTHZID">SASL_INVALID_AUTHZID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#setNode">setNode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_HOST_GONE">STREAM_HOST_GONE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#SASL_INVALID_AUTHZID">SASL_INVALID_AUTHZID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#setOptions">setOptions()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_HOST_UNKNOWN">STREAM_HOST_UNKNOWN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#SASL_INVALID_MECHANISM">SASL_INVALID_MECHANISM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_HOST_UNKNOWN">STREAM_HOST_UNKNOWN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#SASL_INVALID_MECHANISM">SASL_INVALID_MECHANISM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_IMPROPER_ADDRESSING">STREAM_IMPROPER_ADDRESSING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#SASL_MECHANISM_TOO_WEAK">SASL_MECHANISM_TOO_WEAK</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#setPriority">setPriority()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_IMPROPER_ADDRESSING">STREAM_IMPROPER_ADDRESSING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#SASL_MECHANISM_TOO_WEAK">SASL_MECHANISM_TOO_WEAK</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#setPrivacyList">setPrivacyList()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_INTERNAL_SERVER_ERROR">STREAM_INTERNAL_SERVER_ERROR</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#SASL_NOT_AUTHORIZED">SASL_NOT_AUTHORIZED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#setQuery">setQuery()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_INTERNAL_SERVER_ERROR">STREAM_INTERNAL_SERVER_ERROR</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#SASL_NOT_AUTHORIZED">SASL_NOT_AUTHORIZED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#setQuerynode">setQuerynode()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_INVALID_FROM">STREAM_INVALID_FROM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#SASL_SUCCESS">SASL_SUCCESS</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#setQueryNS">setQueryNS()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_INVALID_FROM">STREAM_INVALID_FROM</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#SASL_TEMPORARY_AUTH_FAILURE">SASL_TEMPORARY_AUTH_FAILURE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#setQueryPayload">setQueryPayload()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_INVALID_ID">STREAM_INVALID_ID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#SASL_TEMPORARY_AUTH_FAILURE">SASL_TEMPORARY_AUTH_FAILURE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setRaw">setRaw()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_INVALID_ID">STREAM_INVALID_ID</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#SASL_UNSUPPORTED">SASL_UNSUPPORTED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#setRequired">setRequired()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_INVALID_NAMESPACE">STREAM_INVALID_NAMESPACE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#SASLHandler">SASLHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#setResource">setResource()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_INVALID_NAMESPACE">STREAM_INVALID_NAMESPACE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#scram_parse">scram_parse()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#setShow">setShow()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_INVALID_XML">STREAM_INVALID_XML</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.SeeOtherHost-class.html">SeeOtherHost</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#setStatus">setStatus()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_INVALID_XML">STREAM_INVALID_XML</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html">SelectIdleQueue</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#setSubject">setSubject()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_NOT_AUTHORIZED">STREAM_NOT_AUTHORIZED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#send">send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_NOT_AUTHORIZED">STREAM_NOT_AUTHORIZED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send">send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_POLICY_VIOLATION">STREAM_POLICY_VIOLATION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send">send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html">PyOpenSSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_POLICY_VIOLATION">STREAM_POLICY_VIOLATION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.SSLWrapper-class.html#send">send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#setThread">setThread()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_REMOTE_CONNECTION_FAILED">STREAM_REMOTE_CONNECTION_FAILED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send">send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html">StdlibSSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#setTimestamp">setTimestamp()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_REMOTE_CONNECTION_FAILED">STREAM_REMOTE_CONNECTION_FAILED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send">send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#setTitle">setTitle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_RESOURCE_CONSTRAINT">STREAM_RESOURCE_CONSTRAINT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#send">send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#setTo">setTo()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_RESOURCE_CONSTRAINT">STREAM_RESOURCE_CONSTRAINT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#send_ack">send_ack()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#setType">setType()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_RESTRICTED_XML">STREAM_RESTRICTED_XML</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#send_BOSH">send_BOSH()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#setType">setType()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_RESTRICTED_XML">STREAM_RESTRICTED_XML</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#send_init">send_init()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#setType">setType()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_SEE_OTHER_HOST">STREAM_SEE_OTHER_HOST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse">SendAndCallForResponse()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#setValue">setValue()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_SEE_OTHER_HOST">STREAM_SEE_OTHER_HOST</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse">SendAndWaitForResponse()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#setValues">setValues()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_SYSTEM_SHUTDOWN">STREAM_SYSTEM_SHUTDOWN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#sendPresence">sendPresence()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#setVar">setVar()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_SYSTEM_SHUTDOWN">STREAM_SYSTEM_SHUTDOWN</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm">set_alarm()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#setXHTML">setXHTML()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_UNDEFINED_CONDITION">STREAM_UNDEFINED_CONDITION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#set_idlequeue">set_idlequeue()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html">simplexml</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_UNDEFINED_CONDITION">STREAM_UNDEFINED_CONDITION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#set_owner">set_owner()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks-module.html">smacks</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_UNSUPPORTED_ENCODING">STREAM_UNSUPPORTED_ENCODING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#set_password">set_password()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html">Smacks</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks-module.html">nbxmpp.smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_ENCODING">STREAM_UNSUPPORTED_ENCODING</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout">set_read_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html">SOCKS5Connector</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors-module.html">nbxmpp.proxy_connectors</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_UNSUPPORTED_STANZA_TYPE">STREAM_UNSUPPORTED_STANZA_TYPE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout">set_send_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#ssl_h_bits">ssl_h_bits</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_STANZA_TYPE">STREAM_UNSUPPORTED_STANZA_TYPE</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2">set_send_timeout2()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_UNSUPPORTED_VERSION">STREAM_UNSUPPORTED_VERSION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#set_stanza_build_cb">set_stanza_build_cb()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html">NonBlockingHTTPBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#start">start()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_VERSION">STREAM_UNSUPPORTED_VERSION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state">set_state()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#start_connecting">start_connecting()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html">HTTPCONNECTConnector</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_XML_NOT_WELL_FORMED">STREAM_XML_NOT_WELL_FORMED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout">set_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting">start_connecting()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_XML_NOT_WELL_FORMED">STREAM_XML_NOT_WELL_FORMED</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout">set_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#start_connecting">start_connecting()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html">SOCKS5Connector</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.StreamError-class.html">StreamError</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout">set_timeout()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#start_disconnect">start_disconnect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit">StreamInit()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2">set_timeout2()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect">start_disconnect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#StreamInit">StreamInit()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#setActivePrivacyList">setActivePrivacyList()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect">start_disconnect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamTerminate">StreamTerminate()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#starttag">starttag()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html">stringprepare</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#setBody">setBody()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#STATES">STATES</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Subscribe">Subscribe()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#setData">setData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html">StdlibSSLWrapper</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Hashes-class.html#supported">supported</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Hashes-class.html">Hashes</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#setDefaultPrivacyList">setDefaultPrivacyList()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_BAD_FORMAT">STREAM_BAD_FORMAT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.SystemShutdown-class.html">SystemShutdown</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#setDesc">setDesc()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#STREAM_BAD_FORMAT">STREAM_BAD_FORMAT</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#setDomain">setDomain()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#STREAM_BAD_NAMESPACE_PREFIX">STREAM_BAD_NAMESPACE_PREFIX</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.T-class.html">T</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb-module.html">tls_nb</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init">tls_init()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html">transports_nb</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Unauthorize">Unauthorize()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#UnregisterDisconnectHandler">UnregisterDisconnectHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.UnsupportedVersion-class.html">UnsupportedVersion</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.UndefinedCondition-class.html">UndefinedCondition</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler">UnregisterHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#urisplit">urisplit()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle">unplug_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Unsubscribe">Unsubscribe()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb-module.html#USE_PYOPENSSL">USE_PYOPENSSL</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#unregister">unregister()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.UnsupportedEncoding-class.html">UnsupportedEncoding</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html#ustr">ustr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterCycleHandler">UnregisterCycleHandler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.UnsupportedStanzaType-class.html">UnsupportedStanzaType</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#wait_child">wait_child()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html#XML2Node">XML2Node()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.XMLNotWellFormed-class.html">XMLNotWellFormed</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb-module.html#XML_DECLARATION">XML_DECLARATION</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#xmpp_stanza_error_conditions">xmpp_stanza_error_conditions</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html#XMLescape">XMLescape()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#xmpp_stream_error_conditions">xmpp_stream_error_conditions</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_init_idle">_init_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.SelectIdleQueue-class.html">SelectIdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.T-class.html#__delattr__">__delattr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.T-class.html">T</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_load_cert_file">_load_cert_file()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#_muc_getItemAttr">_muc_getItemAttr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Error-class.html#__dupstr__">__dupstr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Error-class.html">Error</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#__ne__">__ne__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#_muc_getSubTagDataAttr">_muc_getSubTagDataAttr()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#__eq__">__eq__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp-module.html">nbxmpp</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#_neg_response">_neg_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NT-class.html#__getattr__">__getattr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NT-class.html">NT</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_auth">_on_auth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">NonBlockingNonSASL</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_auth_bind">_on_auth_bind()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.T-class.html#__getattr__">__getattr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.T-class.html">T</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.c14n-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.c14n-module.html">nbxmpp.c14n</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#_on_bound">_on_bound()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb-module.html">nbxmpp.client_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#_on_connect">_on_connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_connect">_on_connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect">_on_connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#__hash__">__hash__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect">_on_connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.plugin-module.html">nbxmpp.plugin</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure">_on_connect_failure()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">NonBlockingNonSASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#_on_default_response">_on_default_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors-module.html">nbxmpp.proxy_connectors</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_doc_attrs">_on_doc_attrs()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.AckChecker-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.AckChecker-class.html">AckChecker</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb-module.html">nbxmpp.roster_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_greeting_sent">_on_greeting_sent()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html">SOCKS5Connector</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.KeyStack-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.KeyStack-class.html">KeyStack</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#_on_headers_sent">_on_headers_sent()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html">HTTPCONNECTConnector</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks-module.html">nbxmpp.smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_old_auth">_on_old_auth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_password">_on_password()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">NonBlockingNonSASL</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_proxy_auth">_on_proxy_auth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html">SOCKS5Connector</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb-module.html#__package__">__package__</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#_on_receive">_on_receive()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleObject-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NT-class.html#__setattr__">__setattr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NT-class.html">NT</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_receive">_on_receive()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.T-class.html#__setattr__">__setattr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.T-class.html">T</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_req_sent">_on_req_sent()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html">SOCKS5Connector</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.plugin.PlugIn-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.plugin.PlugIn-class.html">PlugIn</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_on_roster_set">_on_roster_set()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Acks-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Acks-class.html">Acks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_sasl_auth">_on_sasl_auth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.BOSHBody-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.BOSHBody-class.html">BOSHBody</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#_on_session">_on_session()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataField-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataField-class.html">DataField</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_start_sasl">_on_start_sasl()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.DataForm-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.DataForm-class.html">DataForm</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_stream_start">_on_stream_start()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Error-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Error-class.html">Error</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html">Error</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_username">_on_username()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">NonBlockingNonSASL</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.ErrorNode-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.ErrorNode-class.html">ErrorNode</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_add_idle">_add_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle">_plug_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Hashes-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Hashes-class.html">Hashes</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_add_idle">_add_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_process_events">_process_events()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Iq-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Iq-class.html">Iq</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_add_idle">_add_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.SelectIdleQueue-class.html">SelectIdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_process_events">_process_events()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.JID-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.JID-class.html">JID</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_check_stream_start">_check_stream_start()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.features_nb-module.html#_ReceivedRegInfo">_ReceivedRegInfo()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Message-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Message-class.html">Message</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events">_check_time_events()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_remove_idle">_remove_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Presence-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Presence-class.html">Presence</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_args">_compose_command_args()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_remove_idle">_remove_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol.Protocol-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol.Protocol-class.html">Protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_line">_compose_command_line()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_remove_idle">_remove_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.SelectIdleQueue-class.html">SelectIdleQueue</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy">_connect_to_proxy()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_resolve_hostname">_resolve_hostname()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.auth_nb.SASL-class.html#_convert_to_iso88591">_convert_to_iso88591()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html">SASL</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_return_result">_return_result()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.Node-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.Node-class.html">Node</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#_dec_depth">_dec_depth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_ssl_verify_callback">_ssl_verify_callback()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive">_do_receive()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_start_nt">_start_nt()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.T-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.T-class.html">T</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#_do_send">_do_send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html">NonBlockingHTTPBOSH</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_start_posix">_start_posix()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.smacks.Smacks-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.smacks.Smacks-class.html">Smacks</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send">_do_send()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL">_startSSL()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.EmptyMappingTable-class.html">EmptyMappingTable</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpPKey">_dumpPKey()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_pyOpenSSL">_startSSL_pyOpenSSL()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.LookupTable-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.LookupTable-class.html">LookupTable</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509">_dumpX509()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_stdlib">_startSSL_stdlib()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.LookupTableFromFunction-class.html">LookupTableFromFunction</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509Name">_dumpX509Name()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started">_tcp_connecting_started()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.MappingTableFromFunction-class.html">MappingTableFromFunction</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.protocol-module.html#_errorcodes">_errorcodes</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_tls_negotiation_handler">_tls_negotiation_handler()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.stringprepare.Profile-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.stringprepare.Profile-class.html">Profile</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_getItemData">_getItemData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_try_next_ip">_try_next_ip()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_getResourceData">_getResourceData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData">_WaitForData()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html">PyOpenSSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.simplexml.NodeBuilder-class.html#_inc_depth">_inc_depth()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect">_xmpp_connect()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html">Error</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_init">_init()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect_machine">_xmpp_connect_machine()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.SSLWrapper-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_init_idle">_init_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html">StdlibSSLWrapper</a>)</span></td>
+<td width="33%" class="link-index"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_init_idle">_init_idle()</a><br />
+<span class="index-where">(in&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/index.html b/doc/apidocs/index.html
new file mode 100644
index 0000000..d1c9ef1
--- /dev/null
+++ b/doc/apidocs/index.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title> python-nbxmpp </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="toc.html" name="moduleListFrame"
+ id="moduleListFrame" />
+ <frame src="toc-everything.html" name="moduleFrame"
+ id="moduleFrame" />
+ </frameset>
+ <frame src="nbxmpp-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/apidocs/module-tree.html b/doc/apidocs/module-tree.html
new file mode 100644
index 0000000..46a8e91
--- /dev/null
+++ b/doc/apidocs/module-tree.html
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Module Hierarchy</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">&nbsp;</td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="module-tree.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+ <li> <strong class="uidlink"><a href="nbxmpp-module.html">nbxmpp</a></strong>: <em class="summary">This is a fork of the xmpppy jabber python library. Most of the code is
+inherited but has been extended by implementation of non-blocking transports
+and new features like BOSH.</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a></strong>: <em class="summary">Provides plugs for SASL and NON-SASL authentication mechanisms.
+Can be used both for client and transport authentication</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.c14n-module.html">nbxmpp.c14n</a></strong>: <em class="summary">XML canonicalisation methods (for XEP-0116)</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.client_nb-module.html">nbxmpp.client_nb</a></strong>: <em class="summary">Client class establishs connection to XMPP Server and handles authentication</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a></strong>: <em class="summary">Main xmpp decision making logic. Provides library with methods to assign
+different handlers to different XMPP stanzas and namespaces</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a></strong>: <em class="summary">Different stuff that wasn't worth separating it into modules
+(Registration, Privacy Lists, ...)</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a></strong>: <em class="summary">Idlequeues are Gajim's network heartbeat. Transports can be plugged as idle
+objects and be informed about possible IO</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.plugin-module.html">nbxmpp.plugin</a></strong>: <em class="summary">Provides PlugIn class functionality to develop extentions for xmpppy</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a></strong>: <em class="summary">Protocol module contains tools that are needed for processing of xmpp-related
+data structures, including jabber-objects like JID or different stanzas and
+sub- stanzas) handling routines</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.proxy_connectors-module.html">nbxmpp.proxy_connectors</a></strong>: <em class="summary">Module containing classes for proxy connecting. So far its HTTP CONNECT and
+SOCKS5 proxy</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.roster_nb-module.html">nbxmpp.roster_nb</a></strong>: <em class="summary">Simple roster implementation. Can be used though for different tasks like
+mass-renaming of contacts.</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a></strong>: <em class="summary">Simplexml module provides xmpppy library with all needed tools to handle XML
+nodes and XML streams. I'm personally using it in many other separate
+projects. It is designed to be as standalone as possible</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.smacks-module.html">nbxmpp.smacks</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a></strong>: <em class="summary">Transports are objects responsible for connecting to XMPP server and putting
+data to wrapped sockets in in desired form (SSL, TLS, TCP, for HTTP proxy,
+for SOCKS5 proxy...)</em> </li>
+ </ul>
+ </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp-module.html b/doc/apidocs/nbxmpp-module.html
new file mode 100644
index 0000000..832a908
--- /dev/null
+++ b/doc/apidocs/nbxmpp-module.html
@@ -0,0 +1,1829 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package&nbsp;nbxmpp
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package nbxmpp</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp-pysrc.html">source&nbsp;code</a></span></p>
+<p>This is a fork of the xmpppy jabber python library. Most of the code is
+inherited but has been extended by implementation of non-blocking transports
+and new features like BOSH.</p>
+<p>Most of the xmpp classes are ancestors of PlugIn class to share a single set of methods in order to compile a featured and extensible XMPP client.</p>
+<p>Thanks and credits to the xmpppy developers. See: <a class="rst-reference external" href="http://xmpppy.sourceforge.net/" target="_top">http://xmpppy.sourceforge.net/</a></p>
+
+<!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Submodules</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Submodules"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr><td class="summary">
+ <ul class="nomargin">
+ <li> <strong class="uidlink"><a href="nbxmpp.auth_nb-module.html">nbxmpp.auth_nb</a></strong>: <em class="summary">Provides plugs for SASL and NON-SASL authentication mechanisms.
+Can be used both for client and transport authentication</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.bosh-module.html">nbxmpp.bosh</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.c14n-module.html">nbxmpp.c14n</a></strong>: <em class="summary">XML canonicalisation methods (for XEP-0116)</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.client_nb-module.html">nbxmpp.client_nb</a></strong>: <em class="summary">Client class establishs connection to XMPP Server and handles authentication</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.dispatcher_nb-module.html">nbxmpp.dispatcher_nb</a></strong>: <em class="summary">Main xmpp decision making logic. Provides library with methods to assign
+different handlers to different XMPP stanzas and namespaces</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.features_nb-module.html">nbxmpp.features_nb</a></strong>: <em class="summary">Different stuff that wasn't worth separating it into modules
+(Registration, Privacy Lists, ...)</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.idlequeue-module.html">nbxmpp.idlequeue</a></strong>: <em class="summary">Idlequeues are Gajim's network heartbeat. Transports can be plugged as idle
+objects and be informed about possible IO</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.plugin-module.html">nbxmpp.plugin</a></strong>: <em class="summary">Provides PlugIn class functionality to develop extentions for xmpppy</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.protocol-module.html">nbxmpp.protocol</a></strong>: <em class="summary">Protocol module contains tools that are needed for processing of xmpp-related
+data structures, including jabber-objects like JID or different stanzas and
+sub- stanzas) handling routines</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.proxy_connectors-module.html">nbxmpp.proxy_connectors</a></strong>: <em class="summary">Module containing classes for proxy connecting. So far its HTTP CONNECT and
+SOCKS5 proxy</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.roster_nb-module.html">nbxmpp.roster_nb</a></strong>: <em class="summary">Simple roster implementation. Can be used though for different tasks like
+mass-renaming of contacts.</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.simplexml-module.html">nbxmpp.simplexml</a></strong>: <em class="summary">Simplexml module provides xmpppy library with all needed tools to handle XML
+nodes and XML streams. I'm personally using it in many other separate
+projects. It is designed to be as standalone as possible</em> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.smacks-module.html">nbxmpp.smacks</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.stringprepare-module.html">nbxmpp.stringprepare</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.tls_nb-module.html">nbxmpp.tls_nb</a></strong> </li>
+ <li> <strong class="uidlink"><a href="nbxmpp.transports_nb-module.html">nbxmpp.transports_nb</a></strong>: <em class="summary">Transports are objects responsible for connecting to XMPP server and putting
+data to wrapped sockets in in desired form (SSL, TLS, TCP, for HTTP proxy,
+for SOCKS5 proxy...)</em> </li>
+ </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERRORS" class="summary-name">ERRORS</a> = <code title="{'urn:ietf:params:xml:ns:xmpp-sasl aborted': ['',
+ '',
+ 'The receiving entity ac\
+knowledges an &lt;abort/&gt; element sent by the initiating entity; sent in \
+reply to the &lt;abort/&gt; element.'],
+ 'urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding': ['',
+ '',
+ 'The data pro\
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_BAD_REQUEST" class="summary-name">ERR_BAD_REQUEST</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas bad-request'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas bad-req</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_CONFLICT" class="summary-name">ERR_CONFLICT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas conflict'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas conflict</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_FEATURE_NOT_IMPLEMENTED" class="summary-name">ERR_FEATURE_NOT_IMPLEMENTED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sta</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_FORBIDDEN" class="summary-name">ERR_FORBIDDEN</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas forbidden'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas forbidden</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_GONE" class="summary-name">ERR_GONE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas gone'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas gone</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_INTERNAL_SERVER_ERROR" class="summary-name">ERR_INTERNAL_SERVER_ERROR</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_ITEM_NOT_FOUND" class="summary-name">ERR_ITEM_NOT_FOUND</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas item-not-found'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas item</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_JID_MALFORMED" class="summary-name">ERR_JID_MALFORMED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas jid-m</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_NOT_ACCEPTABLE" class="summary-name">ERR_NOT_ACCEPTABLE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas not-acceptable'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_NOT_ALLOWED" class="summary-name">ERR_NOT_ALLOWED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas not-allowed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-all</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_NOT_AUTHORIZED" class="summary-name">ERR_NOT_AUTHORIZED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas not-authorized'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_PAYMENT_REQUIRED" class="summary-name">ERR_PAYMENT_REQUIRED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas payment-required'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas pa</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_RECIPIENT_UNAVAILABLE" class="summary-name">ERR_RECIPIENT_UNAVAILABLE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_REDIRECT" class="summary-name">ERR_REDIRECT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas redirect'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas redirect</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_REGISTRATION_REQUIRED" class="summary-name">ERR_REGISTRATION_REQUIRED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas registration-required'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_REMOTE_SERVER_NOT_FOUND" class="summary-name">ERR_REMOTE_SERVER_NOT_FOUND</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sta</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_REMOTE_SERVER_TIMEOUT" class="summary-name">ERR_REMOTE_SERVER_TIMEOUT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_RESOURCE_CONSTRAINT" class="summary-name">ERR_RESOURCE_CONSTRAINT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas resource-constraint'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_SERVICE_UNAVAILABLE" class="summary-name">ERR_SERVICE_UNAVAILABLE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas service-unavailable'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_SUBSCRIPTION_REQUIRED" class="summary-name">ERR_SUBSCRIPTION_REQUIRED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas subscription-required'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_UNDEFINED_CONDITION" class="summary-name">ERR_UNDEFINED_CONDITION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas undefined-condition'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#ERR_UNEXPECTED_REQUEST" class="summary-name">ERR_UNEXPECTED_REQUEST</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas unexpected-request'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas </code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#SASL_ABORTED" class="summary-name">SASL_ABORTED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl aborted'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#SASL_INCORRECT_ENCODING" class="summary-name">SASL_INCORRECT_ENCODING</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl in</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#SASL_INVALID_AUTHZID" class="summary-name">SASL_INVALID_AUTHZID</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl invalid-authzid'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl inval</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#SASL_INVALID_MECHANISM" class="summary-name">SASL_INVALID_MECHANISM</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl invalid-mechanism'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl inv</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#SASL_MECHANISM_TOO_WEAK" class="summary-name">SASL_MECHANISM_TOO_WEAK</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl mechanism-too-weak'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl me</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#SASL_NOT_AUTHORIZED" class="summary-name">SASL_NOT_AUTHORIZED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl not-authorized'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl not-au</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#SASL_TEMPORARY_AUTH_FAILURE" class="summary-name">SASL_TEMPORARY_AUTH_FAILURE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl temporary-auth-failure'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_BAD_FORMAT" class="summary-name">STREAM_BAD_FORMAT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams bad-format'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams bad-f</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_BAD_NAMESPACE_PREFIX" class="summary-name">STREAM_BAD_NAMESPACE_PREFIX</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams bad-namespace-prefix'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-str</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_CONFLICT" class="summary-name">STREAM_CONFLICT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams conflict'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams conflict</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_CONNECTION_TIMEOUT" class="summary-name">STREAM_CONNECTION_TIMEOUT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams connection-timeout'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-strea</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_HOST_GONE" class="summary-name">STREAM_HOST_GONE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams host-gone'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams host-g</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_HOST_UNKNOWN" class="summary-name">STREAM_HOST_UNKNOWN</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams host-unknown'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams hos</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_IMPROPER_ADDRESSING" class="summary-name">STREAM_IMPROPER_ADDRESSING</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams improper-addressing'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_INTERNAL_SERVER_ERROR" class="summary-name">STREAM_INTERNAL_SERVER_ERROR</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams internal-server-error'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-st</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_INVALID_FROM" class="summary-name">STREAM_INVALID_FROM</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-from'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams inv</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_INVALID_ID" class="summary-name">STREAM_INVALID_ID</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-id'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams inval</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_INVALID_NAMESPACE" class="summary-name">STREAM_INVALID_NAMESPACE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-namespace'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stream</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_INVALID_XML" class="summary-name">STREAM_INVALID_XML</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-xml'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams inva</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_NOT_AUTHORIZED" class="summary-name">STREAM_NOT_AUTHORIZED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams not-authorized'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams n</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_POLICY_VIOLATION" class="summary-name">STREAM_POLICY_VIOLATION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams policy-violation'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_REMOTE_CONNECTION_FAILED" class="summary-name">STREAM_REMOTE_CONNECTION_FAILED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams remote-connection-failed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_RESOURCE_CONSTRAINT" class="summary-name">STREAM_RESOURCE_CONSTRAINT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams resource-constraint'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_RESTRICTED_XML" class="summary-name">STREAM_RESTRICTED_XML</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams restricted-xml'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams r</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_SEE_OTHER_HOST" class="summary-name">STREAM_SEE_OTHER_HOST</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams see-other-host'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams s</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_SYSTEM_SHUTDOWN" class="summary-name">STREAM_SYSTEM_SHUTDOWN</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams system-shutdown'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams </code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_UNDEFINED_CONDITION" class="summary-name">STREAM_UNDEFINED_CONDITION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams undefined-condition'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_UNSUPPORTED_ENCODING" class="summary-name">STREAM_UNSUPPORTED_ENCODING</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams unsupported-encoding'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-str</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_UNSUPPORTED_STANZA_TYPE" class="summary-name">STREAM_UNSUPPORTED_STANZA_TYPE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams unsupported-stanza-type'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_UNSUPPORTED_VERSION" class="summary-name">STREAM_UNSUPPORTED_VERSION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams unsupported-version'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#STREAM_XML_NOT_WELL_FORMED" class="summary-name">STREAM_XML_NOT_WELL_FORMED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams xml-not-well-formed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp-module.html#name" class="summary-name">name</a> = <code title="'SASL_TEMPORARY_AUTH_FAILURE'"><code class="variable-quote">'</code><code class="variable-string">SASL_TEMPORARY_AUTH_FAILURE</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="nbxmpp.protocol.NS_MUC_ADMIN">NS_MUC_ADMIN</span>,
+ <span title="nbxmpp.protocol.NS_FILE">NS_FILE</span>,
+ <a href="nbxmpp.protocol.Error-class.html" title="nbxmpp.protocol.Error">Error</a>,
+ <span title="nbxmpp.protocol.NS_PUBSUB_EVENT">NS_PUBSUB_EVENT</span>,
+ <span title="nbxmpp.protocol.NS_RECEIPTS">NS_RECEIPTS</span>,
+ <span title="nbxmpp.protocol.NS_PING">NS_PING</span>,
+ <a href="nbxmpp.protocol.Conflict-class.html" title="nbxmpp.protocol.Conflict">Conflict</a>,
+ <span title="nbxmpp.protocol.NS_PHYSLOC">NS_PHYSLOC</span>,
+ <span title="nbxmpp.protocol.NS_CHATTING">NS_CHATTING</span>,
+ <span title="nbxmpp.protocol.NS_COMPRESS">NS_COMPRESS</span>,
+ <span title="nbxmpp.protocol.NS_HASHES_SHA1">NS_HASHES_SHA1</span>,
+ <span title="nbxmpp.protocol.NS_AGENTS">NS_AGENTS</span>,
+ <span title="nbxmpp.protocol.NS_CAPTCHA">NS_CAPTCHA</span>,
+ <span title="nbxmpp.protocol.NS_MOOD">NS_MOOD</span>,
+ <a href="nbxmpp.protocol.UnsupportedVersion-class.html" title="nbxmpp.protocol.UnsupportedVersion">UnsupportedVersion</a>,
+ <span title="nbxmpp.protocol.NS_BROWSING">NS_BROWSING</span>,
+ <a href="nbxmpp.protocol.HostUnknown-class.html" title="nbxmpp.protocol.HostUnknown">HostUnknown</a>,
+ <span title="nbxmpp.protocol.NS_MUC_OWNER">NS_MUC_OWNER</span>,
+ <span title="nbxmpp.protocol.NS_ACTIVITY">NS_ACTIVITY</span>,
+ <span title="nbxmpp.protocol.NS_ARCHIVE_MANUAL">NS_ARCHIVE_MANUAL</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE_RTP_AUDIO">NS_JINGLE_RTP_AUDIO</span>,
+ <span title="nbxmpp.protocol.string">string</span>,
+ <span title="nbxmpp.protocol.NS_PRESENCE">NS_PRESENCE</span>,
+ <span title="nbxmpp.protocol.NS_CHATSTATES">NS_CHATSTATES</span>,
+ <span title="nbxmpp.protocol.NS_LAST">NS_LAST</span>,
+ <a href="nbxmpp.protocol-module.html#isErrorNode" title="nbxmpp.protocol.isErrorNode">isErrorNode</a>,
+ <a href="nbxmpp.protocol.Acks-class.html" title="nbxmpp.protocol.Acks">Acks</a>,
+ <span title="nbxmpp.protocol.NS_GROUPCHAT">NS_GROUPCHAT</span>,
+ <a href="nbxmpp.protocol.Protocol-class.html" title="nbxmpp.protocol.Protocol">Protocol</a>,
+ <span title="nbxmpp.protocol.NS_GATEWAY">NS_GATEWAY</span>,
+ <span title="nbxmpp.protocol.NS_DISCO_ITEMS">NS_DISCO_ITEMS</span>,
+ <span title="nbxmpp.protocol.NS_BOOKMARKS">NS_BOOKMARKS</span>,
+ <a href="nbxmpp.protocol.ConnectionTimeout-class.html" title="nbxmpp.protocol.ConnectionTimeout">ConnectionTimeout</a>,
+ <span title="nbxmpp.protocol.NS_BIND">NS_BIND</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE_ERRORS">NS_JINGLE_ERRORS</span>,
+ <span title="nbxmpp.protocol.NS_XMPP_STREAMS">NS_XMPP_STREAMS</span>,
+ <span title="nbxmpp.protocol.NS_IQ">NS_IQ</span>,
+ <span title="nbxmpp.protocol.NS_CLIENT">NS_CLIENT</span>,
+ <span title="nbxmpp.protocol.NS_FORWARD">NS_FORWARD</span>,
+ <span title="nbxmpp.protocol.NS_EVENT">NS_EVENT</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE_IBB">NS_JINGLE_IBB</span>,
+ <span title="nbxmpp.protocol.NS_DATA_LAYOUT">NS_DATA_LAYOUT</span>,
+ <span title="nbxmpp.protocol.NS_TUNE">NS_TUNE</span>,
+ <a href="nbxmpp.protocol.InvalidID-class.html" title="nbxmpp.protocol.InvalidID">InvalidID</a>,
+ <span title="nbxmpp.protocol.stream_exceptions">stream_exceptions</span>,
+ <span title="nbxmpp.protocol.xmpp_stanza_error_conditions">xmpp_stanza_error_conditions</span>,
+ <span title="nbxmpp.protocol.NS_HASHES_SHA256">NS_HASHES_SHA256</span>,
+ <span title="nbxmpp.protocol.NS_CARBONS">NS_CARBONS</span>,
+ <span title="nbxmpp.protocol.NS_ROSTER">NS_ROSTER</span>,
+ <span title="nbxmpp.protocol.NS_STANZAS">NS_STANZAS</span>,
+ <span title="nbxmpp.protocol.NS_HTTP_BIND">NS_HTTP_BIND</span>,
+ <a href="nbxmpp.protocol-module.html#isResultNode" title="nbxmpp.protocol.isResultNode">isResultNode</a>,
+ <span title="nbxmpp.protocol.NS_TIME_REVISED">NS_TIME_REVISED</span>,
+ <a href="nbxmpp.protocol.UnsupportedStanzaType-class.html" title="nbxmpp.protocol.UnsupportedStanzaType">UnsupportedStanzaType</a>,
+ <span title="nbxmpp.protocol.NS_MUC_UNIQUE">NS_MUC_UNIQUE</span>,
+ <span title="nbxmpp.protocol.NS_PUBKEY_PUBKEY">NS_PUBKEY_PUBKEY</span>,
+ <span title="nbxmpp.protocol.NS_AMP">NS_AMP</span>,
+ <span title="nbxmpp.protocol.NS_CONFERENCE">NS_CONFERENCE</span>,
+ <span title="nbxmpp.protocol.NS_DISCO">NS_DISCO</span>,
+ <span title="nbxmpp.protocol.NS_RSM">NS_RSM</span>,
+ <span title="nbxmpp.protocol.NS_STREAM">NS_STREAM</span>,
+ <span title="nbxmpp.protocol.NS_HASHES">NS_HASHES</span>,
+ <a href="nbxmpp.protocol.HostGone-class.html" title="nbxmpp.protocol.HostGone">HostGone</a>,
+ <span title="nbxmpp.protocol.NS_ESESSION">NS_ESESSION</span>,
+ <a href="nbxmpp.protocol.NotAuthorized-class.html" title="nbxmpp.protocol.NotAuthorized">NotAuthorized</a>,
+ <a href="nbxmpp.protocol.XMLNotWellFormed-class.html" title="nbxmpp.protocol.XMLNotWellFormed">XMLNotWellFormed</a>,
+ <span title="nbxmpp.protocol.NS_JINGLE_FILE_TRANSFER">NS_JINGLE_FILE_TRANSFER</span>,
+ <span title="nbxmpp.protocol.NS_LOCATION">NS_LOCATION</span>,
+ <span title="nbxmpp.protocol.NS_ARCHIVE_AUTO">NS_ARCHIVE_AUTO</span>,
+ <span title="nbxmpp.protocol.NS_DIALBACK">NS_DIALBACK</span>,
+ <span title="nbxmpp.protocol.NS_AUTH">NS_AUTH</span>,
+ <span title="nbxmpp.protocol.NS_MUC_CONFIG">NS_MUC_CONFIG</span>,
+ <span title="nbxmpp.protocol.NS_VCARD">NS_VCARD</span>,
+ <a href="nbxmpp.protocol.DataForm-class.html" title="nbxmpp.protocol.DataForm">DataForm</a>,
+ <span title="nbxmpp.protocol.NS_XHTML">NS_XHTML</span>,
+ <a href="nbxmpp.protocol.InvalidXML-class.html" title="nbxmpp.protocol.InvalidXML">InvalidXML</a>,
+ <span title="nbxmpp.protocol.NS_SI">NS_SI</span>,
+ <a href="nbxmpp.protocol.PolicyViolation-class.html" title="nbxmpp.protocol.PolicyViolation">PolicyViolation</a>,
+ <span title="nbxmpp.protocol.NS_SASL">NS_SASL</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE_RAW_UDP">NS_JINGLE_RAW_UDP</span>,
+ <span title="nbxmpp.protocol.NS_SESSION">NS_SESSION</span>,
+ <a href="nbxmpp.protocol.StreamError-class.html" title="nbxmpp.protocol.StreamError">StreamError</a>,
+ <span title="nbxmpp.protocol.NS_CAPS">NS_CAPS</span>,
+ <span title="nbxmpp.protocol.NS_PUBSUB_OWNER">NS_PUBSUB_OWNER</span>,
+ <span title="nbxmpp.protocol.NS_HASHES_SHA512">NS_HASHES_SHA512</span>,
+ <span title="nbxmpp.protocol.NS_AMP_ERRORS">NS_AMP_ERRORS</span>,
+ <span title="nbxmpp.protocol.NS_BROWSE">NS_BROWSE</span>,
+ <span title="nbxmpp.protocol.NS_ROSTERX">NS_ROSTERX</span>,
+ <span title="nbxmpp.protocol.NS_TLS">NS_TLS</span>,
+ <span title="nbxmpp.protocol.NS_ATTENTION">NS_ATTENTION</span>,
+ <span title="nbxmpp.protocol.NS_DATA">NS_DATA</span>,
+ <span title="nbxmpp.protocol.NS_SERVER">NS_SERVER</span>,
+ <a href="nbxmpp.protocol.ImproperAddressing-class.html" title="nbxmpp.protocol.ImproperAddressing">ImproperAddressing</a>,
+ <span title="nbxmpp.protocol.NS_JINGLE_ICE_UDP">NS_JINGLE_ICE_UDP</span>,
+ <span title="nbxmpp.protocol.NS_IBB">NS_IBB</span>,
+ <a href="nbxmpp.protocol.DataField-class.html" title="nbxmpp.protocol.DataField">DataField</a>,
+ <span title="nbxmpp.protocol.NS_TIME">NS_TIME</span>,
+ <span title="nbxmpp.protocol.NS_PROFILE">NS_PROFILE</span>,
+ <a href="nbxmpp.protocol.Message-class.html" title="nbxmpp.protocol.Message">Message</a>,
+ <span title="nbxmpp.protocol.NS_SECLABEL">NS_SECLABEL</span>,
+ <span title="nbxmpp.protocol.NS_XHTML_IM">NS_XHTML_IM</span>,
+ <span title="nbxmpp.protocol.NS_PRIVACY">NS_PRIVACY</span>,
+ <span title="nbxmpp.protocol.NS_GMAILNOTIFY">NS_GMAILNOTIFY</span>,
+ <a href="nbxmpp.protocol.BadNamespacePrefix-class.html" title="nbxmpp.protocol.BadNamespacePrefix">BadNamespacePrefix</a>,
+ <span title="nbxmpp.protocol.NS_CONDITIONS">NS_CONDITIONS</span>,
+ <a href="nbxmpp.protocol.UnsupportedEncoding-class.html" title="nbxmpp.protocol.UnsupportedEncoding">UnsupportedEncoding</a>,
+ <span title="nbxmpp.protocol.NS_FEATURE">NS_FEATURE</span>,
+ <a href="nbxmpp.protocol.SeeOtherHost-class.html" title="nbxmpp.protocol.SeeOtherHost">SeeOtherHost</a>,
+ <a href="nbxmpp.simplexml.Node-class.html" title="nbxmpp.protocol.Node">Node</a>,
+ <span title="nbxmpp.protocol.NS_JINGLE_RTP">NS_JINGLE_RTP</span>,
+ <a href="nbxmpp.protocol.SystemShutdown-class.html" title="nbxmpp.protocol.SystemShutdown">SystemShutdown</a>,
+ <span title="nbxmpp.protocol.NS_WAITINGLIST">NS_WAITINGLIST</span>,
+ <span title="nbxmpp.protocol.NS_ARCHIVE_MANAGE">NS_ARCHIVE_MANAGE</span>,
+ <span title="nbxmpp.protocol.NS_SSN">NS_SSN</span>,
+ <span title="nbxmpp.protocol.NS_DELAY2">NS_DELAY2</span>,
+ <a href="nbxmpp.protocol.InvalidNamespace-class.html" title="nbxmpp.protocol.InvalidNamespace">InvalidNamespace</a>,
+ <span title="nbxmpp.protocol.NS_COMPONENT_1">NS_COMPONENT_1</span>,
+ <a href="nbxmpp.protocol.Iq-class.html" title="nbxmpp.protocol.Iq">Iq</a>,
+ <span title="nbxmpp.protocol.NS_ARCHIVE_PREF">NS_ARCHIVE_PREF</span>,
+ <a href="nbxmpp.protocol.Hashes-class.html" title="nbxmpp.protocol.Hashes">Hashes</a>,
+ <span title="nbxmpp.protocol.NS_INVISIBLE">NS_INVISIBLE</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE_RTP_VIDEO">NS_JINGLE_RTP_VIDEO</span>,
+ <span title="nbxmpp.protocol.NS_PRIVATE">NS_PRIVATE</span>,
+ <span title="nbxmpp.protocol.NS_VERSION">NS_VERSION</span>,
+ <span title="nbxmpp.protocol.NS_GAMING">NS_GAMING</span>,
+ <span title="nbxmpp.protocol.NS_OFFLINE">NS_OFFLINE</span>,
+ <span title="nbxmpp.protocol.NS_MUC_USER">NS_MUC_USER</span>,
+ <span title="nbxmpp.protocol.NS_VCARD_UPDATE">NS_VCARD_UPDATE</span>,
+ <span title="nbxmpp.protocol.NS_ATOM">NS_ATOM</span>,
+ <a href="nbxmpp.protocol-module.html#ascii_upper" title="nbxmpp.protocol.ascii_upper">ascii_upper</a>,
+ <span title="nbxmpp.protocol.NS_STREAMS">NS_STREAMS</span>,
+ <span title="nbxmpp.protocol.hashlib">hashlib</span>,
+ <span title="nbxmpp.protocol.NS_GTALKSETTING">NS_GTALKSETTING</span>,
+ <a href="nbxmpp.protocol.InvalidFrom-class.html" title="nbxmpp.protocol.InvalidFrom">InvalidFrom</a>,
+ <span title="nbxmpp.protocol.NS_ENCRYPTED">NS_ENCRYPTED</span>,
+ <a href="nbxmpp.protocol.UndefinedCondition-class.html" title="nbxmpp.protocol.UndefinedCondition">UndefinedCondition</a>,
+ <span title="nbxmpp.protocol.NS_RPC">NS_RPC</span>,
+ <span title="nbxmpp.protocol.NS_STANZA_CRYPTO">NS_STANZA_CRYPTO</span>,
+ <span title="nbxmpp.protocol.NS_SIGNED">NS_SIGNED</span>,
+ <span title="nbxmpp.protocol.NS_NICK">NS_NICK</span>,
+ <span title="nbxmpp.protocol.NS_PUBSUB">NS_PUBSUB</span>,
+ <span title="nbxmpp.protocol.NS_MESSAGE">NS_MESSAGE</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE_XTLS">NS_JINGLE_XTLS</span>,
+ <span title="nbxmpp.protocol.NS_DATA_MEDIA">NS_DATA_MEDIA</span>,
+ <span title="nbxmpp.protocol.NS_REGISTER">NS_REGISTER</span>,
+ <a href="nbxmpp.protocol.JID-class.html" title="nbxmpp.protocol.JID">JID</a>,
+ <span title="nbxmpp.protocol.NS_BYTESTREAM">NS_BYTESTREAM</span>,
+ <span title="nbxmpp.protocol.NS_DELAY">NS_DELAY</span>,
+ <span title="nbxmpp.protocol.NS_VACATION">NS_VACATION</span>,
+ <span title="nbxmpp.protocol.NS_PUBSUB_PUBLISH_OPTIONS">NS_PUBSUB_PUBLISH_OPTIONS</span>,
+ <span title="nbxmpp.protocol.NS_GEOLOC">NS_GEOLOC</span>,
+ <span title="nbxmpp.protocol.NS_ARCHIVE">NS_ARCHIVE</span>,
+ <span title="nbxmpp.protocol.NS_ROSTERNOTES">NS_ROSTERNOTES</span>,
+ <span title="nbxmpp.protocol.NS_SI_PUB">NS_SI_PUB</span>,
+ <span title="nbxmpp.protocol.NS_DATA_VALIDATE">NS_DATA_VALIDATE</span>,
+ <span title="nbxmpp.protocol.NS_ESESSION_INIT">NS_ESESSION_INIT</span>,
+ <span title="nbxmpp.protocol.NS_PUBKEY_REVOKE">NS_PUBKEY_REVOKE</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE_BYTESTREAM">NS_JINGLE_BYTESTREAM</span>,
+ <a href="nbxmpp.simplexml.NodeBuilder-class.html" title="nbxmpp.protocol.NodeBuilder">NodeBuilder</a>,
+ <span title="nbxmpp.protocol.xmpp_stream_error_conditions">xmpp_stream_error_conditions</span>,
+ <span title="nbxmpp.protocol.NS_ROSTER_VER">NS_ROSTER_VER</span>,
+ <span title="nbxmpp.protocol.NS_VIEWING">NS_VIEWING</span>,
+ <span title="nbxmpp.protocol.NS_COMMANDS">NS_COMMANDS</span>,
+ <span title="nbxmpp.protocol.NS_AVATAR">NS_AVATAR</span>,
+ <a href="nbxmpp.protocol.NodeProcessed-class.html" title="nbxmpp.protocol.NodeProcessed">NodeProcessed</a>,
+ <a href="nbxmpp.protocol.Presence-class.html" title="nbxmpp.protocol.Presence">Presence</a>,
+ <a href="nbxmpp.protocol.ResourceConstraint-class.html" title="nbxmpp.protocol.ResourceConstraint">ResourceConstraint</a>,
+ <span title="nbxmpp.protocol.NS_STREAM_MGMT">NS_STREAM_MGMT</span>,
+ <a href="nbxmpp.protocol.RemoteConnectionFailed-class.html" title="nbxmpp.protocol.RemoteConnectionFailed">RemoteConnectionFailed</a>,
+ <span title="nbxmpp.protocol.time">time</span>,
+ <span title="nbxmpp.protocol.NS_SEARCH">NS_SEARCH</span>,
+ <a href="nbxmpp.protocol.BOSHBody-class.html" title="nbxmpp.protocol.BOSHBody">BOSHBody</a>,
+ <span title="nbxmpp.protocol.NS_ADDRESS">NS_ADDRESS</span>,
+ <span title="nbxmpp.protocol.NS_COMPONENT_ACCEPT">NS_COMPONENT_ACCEPT</span>,
+ <a href="nbxmpp.protocol.RestrictedXML-class.html" title="nbxmpp.protocol.RestrictedXML">RestrictedXML</a>,
+ <span title="nbxmpp.protocol.NS_SECLABEL_CATALOG">NS_SECLABEL_CATALOG</span>,
+ <span title="nbxmpp.protocol.NS_DISCO_INFO">NS_DISCO_INFO</span>,
+ <span title="nbxmpp.protocol.sasl_error_conditions">sasl_error_conditions</span>,
+ <a href="nbxmpp.protocol.BadFormat-class.html" title="nbxmpp.protocol.BadFormat">BadFormat</a>,
+ <a href="nbxmpp.protocol.InternalServerError-class.html" title="nbxmpp.protocol.InternalServerError">InternalServerError</a>,
+ <span title="nbxmpp.protocol.NS_PUBKEY_ATTEST">NS_PUBKEY_ATTEST</span>,
+ <span title="nbxmpp.protocol.NS_MUC">NS_MUC</span>,
+ <span title="nbxmpp.protocol.NS_JINGLE">NS_JINGLE</span>,
+ <span title="nbxmpp.protocol.NS_BOB">NS_BOB</span>,
+ <span title="nbxmpp.protocol.NS_HASHES_MD5">NS_HASHES_MD5</span>,
+ <span title="nbxmpp.protocol.NS_HTTP_AUTH">NS_HTTP_AUTH</span>,
+ <a href="nbxmpp.protocol.ErrorNode-class.html" title="nbxmpp.protocol.ErrorNode">ErrorNode</a>,
+ <a href="nbxmpp.simplexml-module.html" title="nbxmpp.simplexml">simplexml</a>,
+ <a href="nbxmpp.protocol-module.html" title="nbxmpp.protocol">protocol</a>,
+ <a href="nbxmpp.auth_nb-module.html" title="nbxmpp.auth_nb">auth_nb</a>,
+ <a href="nbxmpp.transports_nb-module.html" title="nbxmpp.transports_nb">transports_nb</a>,
+ <a href="nbxmpp.roster_nb-module.html" title="nbxmpp.roster_nb">roster_nb</a>,
+ <a href="nbxmpp.dispatcher_nb-module.html" title="nbxmpp.dispatcher_nb">dispatcher_nb</a>,
+ <a href="nbxmpp.features_nb-module.html" title="nbxmpp.features_nb">features_nb</a>,
+ <a href="nbxmpp.idlequeue-module.html" title="nbxmpp.idlequeue">idlequeue</a>,
+ <a href="nbxmpp.bosh-module.html" title="nbxmpp.bosh">bosh</a>,
+ <a href="nbxmpp.tls_nb-module.html" title="nbxmpp.tls_nb">tls_nb</a>,
+ <a href="nbxmpp.proxy_connectors-module.html" title="nbxmpp.proxy_connectors">proxy_connectors</a>,
+ <a href="nbxmpp.client_nb.NonBlockingClient-class.html" title="nbxmpp.client_nb.NonBlockingClient">NonBlockingClient</a>,
+ <a href="nbxmpp.plugin.PlugIn-class.html" title="nbxmpp.plugin.PlugIn">PlugIn</a>,
+ <a href="nbxmpp.smacks.Smacks-class.html" title="nbxmpp.smacks.Smacks">Smacks</a>,
+ <a href="nbxmpp.client_nb-module.html" title="nbxmpp.client_nb">client_nb</a>,
+ <a href="nbxmpp.plugin-module.html" title="nbxmpp.plugin">plugin</a>,
+ <a href="nbxmpp.smacks-module.html" title="nbxmpp.smacks">smacks</a>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="ERRORS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERRORS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">The receiving entity ac</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">knowledges an &lt;abort/&gt; element sent by the initiating entity; sent in </code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">reply to the &lt;abort/&gt; element.</code><code class="variable-quote">'</code><code class="variable-group">]</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">The data pro</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_BAD_REQUEST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_BAD_REQUEST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas bad-request</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_CONFLICT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_CONFLICT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas conflict</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_FEATURE_NOT_IMPLEMENTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_FEATURE_NOT_IMPLEMENTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_FORBIDDEN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_FORBIDDEN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas forbidden</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_GONE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_GONE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas gone</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_INTERNAL_SERVER_ERROR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_INTERNAL_SERVER_ERROR</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_ITEM_NOT_FOUND"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_ITEM_NOT_FOUND</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas item-not-found</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_JID_MALFORMED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_JID_MALFORMED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_NOT_ACCEPTABLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_NOT_ACCEPTABLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-acceptable</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_NOT_ALLOWED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_NOT_ALLOWED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-allowed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_NOT_AUTHORIZED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_NOT_AUTHORIZED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-authorized</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_PAYMENT_REQUIRED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_PAYMENT_REQUIRED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas payment-required</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_RECIPIENT_UNAVAILABLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_RECIPIENT_UNAVAILABLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REDIRECT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REDIRECT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas redirect</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REGISTRATION_REQUIRED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REGISTRATION_REQUIRED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas registration-required</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REMOTE_SERVER_NOT_FOUND"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REMOTE_SERVER_NOT_FOUND</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REMOTE_SERVER_TIMEOUT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REMOTE_SERVER_TIMEOUT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_RESOURCE_CONSTRAINT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_RESOURCE_CONSTRAINT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas resource-constraint</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_SERVICE_UNAVAILABLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_SERVICE_UNAVAILABLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas service-unavailable</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_SUBSCRIPTION_REQUIRED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_SUBSCRIPTION_REQUIRED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas subscription-required</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_UNDEFINED_CONDITION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_UNDEFINED_CONDITION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas undefined-condition</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_UNEXPECTED_REQUEST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_UNEXPECTED_REQUEST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas unexpected-request</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_ABORTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_ABORTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_INCORRECT_ENCODING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_INCORRECT_ENCODING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_INVALID_AUTHZID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_INVALID_AUTHZID</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl invalid-authzid</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_INVALID_MECHANISM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_INVALID_MECHANISM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl invalid-mechanism</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_MECHANISM_TOO_WEAK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_MECHANISM_TOO_WEAK</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl mechanism-too-weak</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_NOT_AUTHORIZED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_NOT_AUTHORIZED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl not-authorized</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_TEMPORARY_AUTH_FAILURE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_TEMPORARY_AUTH_FAILURE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl temporary-auth-failure</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_BAD_FORMAT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_BAD_FORMAT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams bad-format</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_BAD_NAMESPACE_PREFIX"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_BAD_NAMESPACE_PREFIX</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams bad-namespace-prefix</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_CONFLICT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_CONFLICT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams conflict</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_CONNECTION_TIMEOUT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_CONNECTION_TIMEOUT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams connection-timeout</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_HOST_GONE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_HOST_GONE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams host-gone</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_HOST_UNKNOWN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_HOST_UNKNOWN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams host-unknown</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_IMPROPER_ADDRESSING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_IMPROPER_ADDRESSING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams improper-addressing</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INTERNAL_SERVER_ERROR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INTERNAL_SERVER_ERROR</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams internal-server-error</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_FROM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_FROM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-from</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_ID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_ID</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-id</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_NAMESPACE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_NAMESPACE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-namespace</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_XML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_XML</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-xml</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_NOT_AUTHORIZED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_NOT_AUTHORIZED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams not-authorized</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_POLICY_VIOLATION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_POLICY_VIOLATION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams policy-violation</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_REMOTE_CONNECTION_FAILED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_REMOTE_CONNECTION_FAILED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams remote-connection-failed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_RESOURCE_CONSTRAINT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_RESOURCE_CONSTRAINT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams resource-constraint</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_RESTRICTED_XML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_RESTRICTED_XML</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams restricted-xml</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_SEE_OTHER_HOST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_SEE_OTHER_HOST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams see-other-host</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_SYSTEM_SHUTDOWN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_SYSTEM_SHUTDOWN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams system-shutdown</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNDEFINED_CONDITION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNDEFINED_CONDITION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams undefined-condition</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNSUPPORTED_ENCODING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNSUPPORTED_ENCODING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams unsupported-encoding</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNSUPPORTED_STANZA_TYPE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNSUPPORTED_STANZA_TYPE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams unsupported-stanza-type</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNSUPPORTED_VERSION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNSUPPORTED_VERSION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams unsupported-version</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_XML_NOT_WELL_FORMED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_XML_NOT_WELL_FORMED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams xml-not-well-formed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">name</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">SASL_TEMPORARY_AUTH_FAILURE</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp-pysrc.html b/doc/apidocs/nbxmpp-pysrc.html
new file mode 100644
index 0000000..76893e3
--- /dev/null
+++ b/doc/apidocs/nbxmpp-pysrc.html
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package&nbsp;nbxmpp
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp-module.html">Package nbxmpp</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># $Id: __init__.py,v 1.9 2005/03/07 09:34:51 snakeru Exp $</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring">This is a fork of the xmpppy jabber python library. Most of the code is</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring">inherited but has been extended by implementation of non-blocking transports</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring">and new features like BOSH.</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring">Most of the xmpp classes are ancestors of PlugIn class to share a single set of methods in order to compile a featured and extensible XMPP client.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-docstring">Thanks and credits to the xmpppy developers. See: http://xmpppy.sourceforge.net/</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-0', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module nbxmpp.simplexml=nbxmpp.simplexml-module.html"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-1', 'simplexml', 'link-1');">simplexml</a></tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-2', 'protocol', 'link-0');">protocol</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Module nbxmpp.auth_nb=nbxmpp.auth_nb-module.html"><a title="nbxmpp.auth_nb" class="py-name" href="#" onclick="return doclink('link-3', 'auth_nb', 'link-3');">auth_nb</a></tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Module nbxmpp.transports_nb=nbxmpp.transports_nb-module.html"><a title="nbxmpp.transports_nb" class="py-name" href="#" onclick="return doclink('link-4', 'transports_nb', 'link-4');">transports_nb</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Module nbxmpp.roster_nb=nbxmpp.roster_nb-module.html"><a title="nbxmpp.roster_nb" class="py-name" href="#" onclick="return doclink('link-5', 'roster_nb', 'link-5');">roster_nb</a></tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Module nbxmpp.dispatcher_nb=nbxmpp.dispatcher_nb-module.html"><a title="nbxmpp.dispatcher_nb" class="py-name" href="#" onclick="return doclink('link-6', 'dispatcher_nb', 'link-6');">dispatcher_nb</a></tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name" targets="Module nbxmpp.features_nb=nbxmpp.features_nb-module.html"><a title="nbxmpp.features_nb" class="py-name" href="#" onclick="return doclink('link-7', 'features_nb', 'link-7');">features_nb</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Module nbxmpp.idlequeue=nbxmpp.idlequeue-module.html"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-8', 'idlequeue', 'link-8');">idlequeue</a></tt><tt class="py-op">,</tt> <tt id="link-9" class="py-name" targets="Module nbxmpp.bosh=nbxmpp.bosh-module.html"><a title="nbxmpp.bosh" class="py-name" href="#" onclick="return doclink('link-9', 'bosh', 'link-9');">bosh</a></tt><tt class="py-op">,</tt> <tt id="link-10" class="py-name" targets="Module nbxmpp.tls_nb=nbxmpp.tls_nb-module.html"><a title="nbxmpp.tls_nb" class="py-name" href="#" onclick="return doclink('link-10', 'tls_nb', 'link-10');">tls_nb</a></tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Module nbxmpp.proxy_connectors=nbxmpp.proxy_connectors-module.html"><a title="nbxmpp.proxy_connectors" class="py-name" href="#" onclick="return doclink('link-11', 'proxy_connectors', 'link-11');">proxy_connectors</a></tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-12" class="py-name" targets="Module nbxmpp.client_nb=nbxmpp.client_nb-module.html"><a title="nbxmpp.client_nb" class="py-name" href="#" onclick="return doclink('link-12', 'client_nb', 'link-12');">client_nb</a></tt> <tt class="py-keyword">import</tt> <tt id="link-13" class="py-name" targets="Class nbxmpp.client_nb.NonBlockingClient=nbxmpp.client_nb.NonBlockingClient-class.html"><a title="nbxmpp.client_nb.NonBlockingClient" class="py-name" href="#" onclick="return doclink('link-13', 'NonBlockingClient', 'link-13');">NonBlockingClient</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-14" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugin()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugin,Method nbxmpp.auth_nb.NonBlockingNonSASL.plugin()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin,Method nbxmpp.auth_nb.SASL.plugin()=nbxmpp.auth_nb.SASL-class.html#plugin,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugin()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin,Module nbxmpp.plugin=nbxmpp.plugin-module.html,Method nbxmpp.roster_nb.NonBlockingRoster.plugin()=nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin,Method nbxmpp.tls_nb.NonBlockingTLS.plugin()=nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin,Method nbxmpp.transports_nb.NonBlockingTransport.plugin()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin"><a title="nbxmpp.auth_nb.NonBlockingBind.plugin
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin
+nbxmpp.auth_nb.SASL.plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin
+nbxmpp.plugin
+nbxmpp.roster_nb.NonBlockingRoster.plugin
+nbxmpp.tls_nb.NonBlockingTLS.plugin
+nbxmpp.transports_nb.NonBlockingTransport.plugin" class="py-name" href="#" onclick="return doclink('link-14', 'plugin', 'link-14');">plugin</a></tt> <tt class="py-keyword">import</tt> <tt id="link-15" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn,Method nbxmpp.dispatcher_nb.Dispatcher.PlugIn()=nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn,Class nbxmpp.plugin.PlugIn=nbxmpp.plugin.PlugIn-class.html,Method nbxmpp.plugin.PlugIn.PlugIn()=nbxmpp.plugin.PlugIn-class.html#PlugIn"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-15', 'PlugIn', 'link-15');">PlugIn</a></tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-16" class="py-name" targets="Module nbxmpp.smacks=nbxmpp.smacks-module.html"><a title="nbxmpp.smacks" class="py-name" href="#" onclick="return doclink('link-16', 'smacks', 'link-16');">smacks</a></tt> <tt class="py-keyword">import</tt> <tt id="link-17" class="py-name" targets="Class nbxmpp.smacks.Smacks=nbxmpp.smacks.Smacks-class.html"><a title="nbxmpp.smacks.Smacks" class="py-name" href="#" onclick="return doclink('link-17', 'Smacks', 'link-17');">Smacks</a></tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.auth_nb-module.html b/doc/apidocs/nbxmpp.auth_nb-module.html
new file mode 100644
index 0000000..cd593eb
--- /dev/null
+++ b/doc/apidocs/nbxmpp.auth_nb-module.html
@@ -0,0 +1,726 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.auth_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;auth_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.auth_nb-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module auth_nb</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html">source&nbsp;code</a></span></p>
+<p>Provides plugs for SASL and NON-SASL authentication mechanisms.
+Can be used both for client and transport authentication</p>
+<p>See client_nb.py</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb.SASL-class.html" class="summary-name">SASL</a><br />
+ Implements SASL authentication. Can be plugged into NonBlockingClient
+to start authentication
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html" class="summary-name">NonBlockingNonSASL</a><br />
+ Implements old Non-SASL (JEP-0078) authentication used in jabberd1.4 and
+transport authentication
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb.NonBlockingBind-class.html" class="summary-name">NonBlockingBind</a><br />
+ Bind some JID to the current connection to allow router know of our
+location. Must be plugged after successful SASL auth
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb-module.html#HH" class="summary-sig-name">HH</a>(<span class="summary-sig-arg">some</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#HH">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb-module.html#H" class="summary-sig-name">H</a>(<span class="summary-sig-arg">some</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#H">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb-module.html#C" class="summary-sig-name">C</a>(<span class="summary-sig-arg">some</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#C">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb-module.html#challenge_splitter" class="summary-sig-name">challenge_splitter</a>(<span class="summary-sig-arg">data</span>)</span><br />
+ Helper function that creates a dict from challenge string</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#challenge_splitter">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb-module.html#scram_parse" class="summary-sig-name">scram_parse</a>(<span class="summary-sig-arg">chatter</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#scram_parse">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.auth_nb')">logging.getLogger('nbxmpp.auth_nb')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#kerberos" class="summary-name">kerberos</a> = <code title="__import__('kerberos')">__import__('kerberos')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#have_kerberos" class="summary-name">have_kerberos</a> = <code title="False">False</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#GSS_STATE_STEP" class="summary-name">GSS_STATE_STEP</a> = <code title="0">0</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#GSS_STATE_WRAP" class="summary-name">GSS_STATE_WRAP</a> = <code title="1">1</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#SASL_FAILURE_IN_PROGRESS" class="summary-name">SASL_FAILURE_IN_PROGRESS</a> = <code title="'failure-in-process'"><code class="variable-quote">'</code><code class="variable-string">failure-in-process</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#SASL_FAILURE" class="summary-name">SASL_FAILURE</a> = <code title="'failure'"><code class="variable-quote">'</code><code class="variable-string">failure</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#SASL_SUCCESS" class="summary-name">SASL_SUCCESS</a> = <code title="'success'"><code class="variable-quote">'</code><code class="variable-string">success</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#SASL_UNSUPPORTED" class="summary-name">SASL_UNSUPPORTED</a> = <code title="'not-supported'"><code class="variable-quote">'</code><code class="variable-string">not-supported</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#SASL_IN_PROCESS" class="summary-name">SASL_IN_PROCESS</a> = <code title="'in-process'"><code class="variable-quote">'</code><code class="variable-string">in-process</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.auth_nb-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="nbxmpp.protocol.NS_SASL">NS_SASL</span>,
+ <span title="nbxmpp.protocol.NS_SESSION">NS_SESSION</span>,
+ <span title="nbxmpp.protocol.NS_STREAMS">NS_STREAMS</span>,
+ <span title="nbxmpp.protocol.NS_BIND">NS_BIND</span>,
+ <span title="nbxmpp.protocol.NS_AUTH">NS_AUTH</span>,
+ <span title="nbxmpp.protocol.NS_STREAM_MGMT">NS_STREAM_MGMT</span>,
+ <a href="nbxmpp.simplexml.Node-class.html" title="nbxmpp.protocol.Node">Node</a>,
+ <a href="nbxmpp.protocol.NodeProcessed-class.html" title="nbxmpp.protocol.NodeProcessed">NodeProcessed</a>,
+ <a href="nbxmpp.protocol-module.html#isResultNode" title="nbxmpp.protocol.isResultNode">isResultNode</a>,
+ <a href="nbxmpp.protocol.Iq-class.html" title="nbxmpp.protocol.Iq">Iq</a>,
+ <a href="nbxmpp.protocol.Protocol-class.html" title="nbxmpp.protocol.Protocol">Protocol</a>,
+ <a href="nbxmpp.protocol.JID-class.html" title="nbxmpp.protocol.JID">JID</a>,
+ <a href="nbxmpp.plugin.PlugIn-class.html" title="nbxmpp.plugin.PlugIn">PlugIn</a>,
+ <a href="nbxmpp.smacks.Smacks-class.html" title="nbxmpp.smacks.Smacks">Smacks</a>,
+ <span title="base64">base64</span>,
+ <span title="random">random</span>,
+ <span title="itertools">itertools</span>,
+ <a href="nbxmpp.dispatcher_nb-module.html" title="nbxmpp.dispatcher_nb">dispatcher_nb</a>,
+ <span title="hmac">hmac</span>,
+ <span title="hashlib">hashlib</span>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="HH"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">HH</span>(<span class="sig-arg">some</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#HH">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="H"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">H</span>(<span class="sig-arg">some</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#H">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="C"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">C</span>(<span class="sig-arg">some</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#C">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="challenge_splitter"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">challenge_splitter</span>(<span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#challenge_splitter">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Helper function that creates a dict from challenge string</p>
+<dl class="rst-docutils">
+<dt>Sample challenge string:</dt>
+<dd><ul class="rst-first rst-last rst-simple">
+<li>username=&quot;example.org&quot;,realm=&quot;somerealm&quot;,
+nonce=&quot;OA6MG9tEQGm2hh&quot;,cnonce=&quot;OA6MHXh6VqTrRk&quot;,
+nc=00000001,qop=&quot;auth,auth-int,auth-conf&quot;,charset=utf-8</li>
+</ul>
+</dd>
+<dt>Expected result for challan:</dt>
+<dd><ul class="rst-first rst-last rst-simple">
+<li>dict['qop'] = ('auth','auth-int','auth-conf')</li>
+<li>dict['realm'] = 'somerealm'</li>
+</ul>
+</dd>
+</dl>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="scram_parse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">scram_parse</span>(<span class="sig-arg">chatter</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#scram_parse">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.auth_nb')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="kerberos"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">kerberos</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+__import__('kerberos')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="have_kerberos"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">have_kerberos</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+False
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="GSS_STATE_STEP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">GSS_STATE_STEP</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+0
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="GSS_STATE_WRAP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">GSS_STATE_WRAP</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+1
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_FAILURE_IN_PROGRESS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_FAILURE_IN_PROGRESS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">failure-in-process</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_FAILURE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_FAILURE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">failure</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_SUCCESS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_SUCCESS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">success</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_UNSUPPORTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_UNSUPPORTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">not-supported</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_IN_PROCESS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_IN_PROCESS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">in-process</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.auth_nb-pysrc.html b/doc/apidocs/nbxmpp.auth_nb-pysrc.html
new file mode 100644
index 0000000..1de3c33
--- /dev/null
+++ b/doc/apidocs/nbxmpp.auth_nb-pysrc.html
@@ -0,0 +1,1310 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.auth_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;auth_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.auth_nb-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.auth_nb-module.html">Module nbxmpp.auth_nb</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## auth_nb.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## based on auth.py, changes backported up to revision 1.41</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2005 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## modified by Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">Provides plugs for SASL and NON-SASL authentication mechanisms.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">Can be used both for client and transport authentication</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">See client_nb.py</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-0', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Variable nbxmpp.protocol.NS_SASL=nbxmpp.protocol-module.html#NS_SASL"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-1', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name" targets="Variable nbxmpp.protocol.NS_SESSION=nbxmpp.protocol-module.html#NS_SESSION"><a title="nbxmpp.protocol.NS_SESSION" class="py-name" href="#" onclick="return doclink('link-2', 'NS_SESSION', 'link-2');">NS_SESSION</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAMS=nbxmpp.protocol-module.html#NS_STREAMS"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-3', 'NS_STREAMS', 'link-3');">NS_STREAMS</a></tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Variable nbxmpp.protocol.NS_BIND=nbxmpp.protocol-module.html#NS_BIND"><a title="nbxmpp.protocol.NS_BIND" class="py-name" href="#" onclick="return doclink('link-4', 'NS_BIND', 'link-4');">NS_BIND</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Variable nbxmpp.protocol.NS_AUTH=nbxmpp.protocol-module.html#NS_AUTH"><a title="nbxmpp.protocol.NS_AUTH" class="py-name" href="#" onclick="return doclink('link-5', 'NS_AUTH', 'link-5');">NS_AUTH</a></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-6', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAM_MGMT=nbxmpp.protocol-module.html#NS_STREAM_MGMT"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-7', 'NS_STREAM_MGMT', 'link-7');">NS_STREAM_MGMT</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-8', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-9', 'Node', 'link-9');">Node</a></tt><tt class="py-op">,</tt> <tt id="link-10" class="py-name" targets="Class nbxmpp.protocol.NodeProcessed=nbxmpp.protocol.NodeProcessed-class.html"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-10', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Function nbxmpp.protocol.isResultNode()=nbxmpp.protocol-module.html#isResultNode"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-11', 'isResultNode', 'link-11');">isResultNode</a></tt><tt class="py-op">,</tt> <tt id="link-12" class="py-name" targets="Class nbxmpp.protocol.Iq=nbxmpp.protocol.Iq-class.html"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-12', 'Iq', 'link-12');">Iq</a></tt><tt class="py-op">,</tt> <tt id="link-13" class="py-name" targets="Class nbxmpp.protocol.Protocol=nbxmpp.protocol.Protocol-class.html"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-13', 'Protocol', 'link-13');">Protocol</a></tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name" targets="Class nbxmpp.protocol.JID=nbxmpp.protocol.JID-class.html"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-14', 'JID', 'link-14');">JID</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugin()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugin,Method nbxmpp.auth_nb.NonBlockingNonSASL.plugin()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin,Method nbxmpp.auth_nb.SASL.plugin()=nbxmpp.auth_nb.SASL-class.html#plugin,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugin()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin,Module nbxmpp.plugin=nbxmpp.plugin-module.html,Method nbxmpp.roster_nb.NonBlockingRoster.plugin()=nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin,Method nbxmpp.tls_nb.NonBlockingTLS.plugin()=nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin,Method nbxmpp.transports_nb.NonBlockingTransport.plugin()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin"><a title="nbxmpp.auth_nb.NonBlockingBind.plugin
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin
+nbxmpp.auth_nb.SASL.plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin
+nbxmpp.plugin
+nbxmpp.roster_nb.NonBlockingRoster.plugin
+nbxmpp.tls_nb.NonBlockingTLS.plugin
+nbxmpp.transports_nb.NonBlockingTransport.plugin" class="py-name" href="#" onclick="return doclink('link-15', 'plugin', 'link-15');">plugin</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn,Method nbxmpp.dispatcher_nb.Dispatcher.PlugIn()=nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn,Class nbxmpp.plugin.PlugIn=nbxmpp.plugin.PlugIn-class.html,Method nbxmpp.plugin.PlugIn.PlugIn()=nbxmpp.plugin.PlugIn-class.html#PlugIn"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-16', 'PlugIn', 'link-16');">PlugIn</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name" targets="Module nbxmpp.smacks=nbxmpp.smacks-module.html"><a title="nbxmpp.smacks" class="py-name" href="#" onclick="return doclink('link-17', 'smacks', 'link-17');">smacks</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name" targets="Class nbxmpp.smacks.Smacks=nbxmpp.smacks.Smacks-class.html"><a title="nbxmpp.smacks.Smacks" class="py-name" href="#" onclick="return doclink('link-18', 'Smacks', 'link-18');">Smacks</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">random</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">itertools</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-19" class="py-name" targets="Module nbxmpp.dispatcher_nb=nbxmpp.dispatcher_nb-module.html"><a title="nbxmpp.dispatcher_nb" class="py-name" href="#" onclick="return doclink('link-19', 'dispatcher_nb', 'link-19');">dispatcher_nb</a></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hashlib</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hmac</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hashlib</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-20', 'log', 'link-20');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.auth_nb'</tt><tt class="py-op">)</tt> </tt>
+<a name="HH"></a><div id="HH-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="HH-toggle" onclick="return toggle('HH');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb-module.html#HH">HH</a><tt class="py-op">(</tt><tt class="py-param">some</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">md5</tt><tt class="py-op">(</tt><tt class="py-name">some</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">hexdigest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="H"></a><div id="H-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="H-toggle" onclick="return toggle('H');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb-module.html#H">H</a><tt class="py-op">(</tt><tt class="py-param">some</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">md5</tt><tt class="py-op">(</tt><tt class="py-name">some</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="C"></a><div id="C-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="C-toggle" onclick="return toggle('C');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb-module.html#C">C</a><tt class="py-op">(</tt><tt class="py-param">some</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-string">':'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">some</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt id="link-21" class="py-name" targets="Variable nbxmpp.auth_nb.kerberos=nbxmpp.auth_nb-module.html#kerberos"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-21', 'kerberos', 'link-21');">kerberos</a></tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-string">'kerberos'</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt id="link-22" class="py-name" targets="Variable nbxmpp.auth_nb.have_kerberos=nbxmpp.auth_nb-module.html#have_kerberos"><a title="nbxmpp.auth_nb.have_kerberos" class="py-name" href="#" onclick="return doclink('link-22', 'have_kerberos', 'link-22');">have_kerberos</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="nbxmpp.auth_nb.have_kerberos" class="py-name" href="#" onclick="return doclink('link-23', 'have_kerberos', 'link-22');">have_kerberos</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt id="link-24" class="py-name" targets="Variable nbxmpp.auth_nb.GSS_STATE_STEP=nbxmpp.auth_nb-module.html#GSS_STATE_STEP"><a title="nbxmpp.auth_nb.GSS_STATE_STEP" class="py-name" href="#" onclick="return doclink('link-24', 'GSS_STATE_STEP', 'link-24');">GSS_STATE_STEP</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt id="link-25" class="py-name" targets="Variable nbxmpp.auth_nb.GSS_STATE_WRAP=nbxmpp.auth_nb-module.html#GSS_STATE_WRAP"><a title="nbxmpp.auth_nb.GSS_STATE_WRAP" class="py-name" href="#" onclick="return doclink('link-25', 'GSS_STATE_WRAP', 'link-25');">GSS_STATE_WRAP</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt id="link-26" class="py-name" targets="Variable nbxmpp.auth_nb.SASL_FAILURE_IN_PROGRESS=nbxmpp.auth_nb-module.html#SASL_FAILURE_IN_PROGRESS"><a title="nbxmpp.auth_nb.SASL_FAILURE_IN_PROGRESS" class="py-name" href="#" onclick="return doclink('link-26', 'SASL_FAILURE_IN_PROGRESS', 'link-26');">SASL_FAILURE_IN_PROGRESS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'failure-in-process'</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt id="link-27" class="py-name" targets="Variable nbxmpp.auth_nb.SASL_FAILURE=nbxmpp.auth_nb-module.html#SASL_FAILURE"><a title="nbxmpp.auth_nb.SASL_FAILURE" class="py-name" href="#" onclick="return doclink('link-27', 'SASL_FAILURE', 'link-27');">SASL_FAILURE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'failure'</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt id="link-28" class="py-name" targets="Variable nbxmpp.auth_nb.SASL_SUCCESS=nbxmpp.auth_nb-module.html#SASL_SUCCESS"><a title="nbxmpp.auth_nb.SASL_SUCCESS" class="py-name" href="#" onclick="return doclink('link-28', 'SASL_SUCCESS', 'link-28');">SASL_SUCCESS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'success'</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt id="link-29" class="py-name" targets="Variable nbxmpp.auth_nb.SASL_UNSUPPORTED=nbxmpp.auth_nb-module.html#SASL_UNSUPPORTED"><a title="nbxmpp.auth_nb.SASL_UNSUPPORTED" class="py-name" href="#" onclick="return doclink('link-29', 'SASL_UNSUPPORTED', 'link-29');">SASL_UNSUPPORTED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'not-supported'</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt id="link-30" class="py-name" targets="Variable nbxmpp.auth_nb.SASL_IN_PROCESS=nbxmpp.auth_nb-module.html#SASL_IN_PROCESS"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-30', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'in-process'</tt> </tt>
+<a name="challenge_splitter"></a><div id="challenge_splitter-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="challenge_splitter-toggle" onclick="return toggle('challenge_splitter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb-module.html#challenge_splitter">challenge_splitter</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="challenge_splitter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="challenge_splitter-expanded"><a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> Helper function that creates a dict from challenge string</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> Sample challenge string:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> - username="example.org",realm="somerealm",</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> nonce="OA6MG9tEQGm2hh",cnonce="OA6MHXh6VqTrRk",</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> nc=00000001,qop="auth,auth-int,auth-conf",charset=utf-8</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> Expected result for challan:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> - dict['qop'] = ('auth','auth-int','auth-conf')</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> - dict['realm'] = 'somerealm'</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">X_KEYWORD</tt><tt class="py-op">,</tt> <tt class="py-name">X_VALUE</tt><tt class="py-op">,</tt> <tt class="py-name">X_END</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">quotes_open</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">keyword</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">dict_</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">arr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">expecting</tt> <tt class="py-op">=</tt> <tt class="py-name">X_KEYWORD</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">iter_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt id="link-31" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.end()=nbxmpp.idlequeue.IdleCommand-class.html#end"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-31', 'end', 'link-31');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">iter_</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">expecting</tt> <tt class="py-op">=</tt> <tt class="py-name">X_END</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-32', 'end', 'link-31');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">char</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">iter_</tt><tt class="py-op">]</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">expecting</tt> <tt class="py-op">==</tt> <tt class="py-name">X_KEYWORD</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">char</tt> <tt class="py-op">==</tt> <tt class="py-string">'='</tt><tt class="py-op">:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">expecting</tt> <tt class="py-op">=</tt> <tt class="py-name">X_VALUE</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">char</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-string">'\t'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">keyword</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%c'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">keyword</tt><tt class="py-op">,</tt> <tt class="py-name">char</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">expecting</tt> <tt class="py-op">==</tt> <tt class="py-name">X_VALUE</tt><tt class="py-op">:</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">char</tt> <tt class="py-op">==</tt> <tt class="py-string">'"'</tt><tt class="py-op">:</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">quotes_open</tt><tt class="py-op">:</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-33', 'end', 'link-31');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">quotes_open</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">char</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-string">'\t'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">quotes_open</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">arr</tt><tt class="py-op">:</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">arr</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">arr</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt id="link-34" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-34', 'end', 'link-31');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%c'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">char</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-35" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-35', 'end', 'link-31');">end</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">arr</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">arr</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">dict_</tt><tt class="py-op">[</tt><tt class="py-name">keyword</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">arr</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">arr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">dict_</tt><tt class="py-op">[</tt><tt class="py-name">keyword</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">keyword</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">expecting</tt> <tt class="py-op">=</tt> <tt class="py-name">X_KEYWORD</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">quotes_open</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">dict_</tt> </tt>
+</div><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
+<a name="scram_parse"></a><div id="scram_parse-def"><a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="scram_parse-toggle" onclick="return toggle('scram_parse');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb-module.html#scram_parse">scram_parse</a><tt class="py-op">(</tt><tt class="py-param">chatter</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="scram_parse-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="scram_parse-expanded"><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'='</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chatter</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt>
+<a name="SASL"></a><div id="SASL-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="SASL-toggle" onclick="return toggle('SASL');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html">SASL</a><tt class="py-op">(</tt><tt class="py-base-class">PlugIn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SASL-expanded"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> Implements SASL authentication. Can be plugged into NonBlockingClient</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> to start authentication</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> </tt>
+<a name="SASL.__init__"></a><div id="SASL.__init__-def"><a name="L130"></a><tt class="py-lineno">130</tt> <a class="py-toggle" href="#" id="SASL.__init__-toggle" onclick="return toggle('SASL.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">on_sasl</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.__init__-expanded"><a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> :param username: XMPP username</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> :param password: XMPP password</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> :param on_sasl: Callback, will be called after each SASL auth-step.</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-36" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-36', 'PlugIn', 'link-16');">PlugIn</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-37', '__init__', 'link-37');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">username</tt> <tt class="py-op">=</tt> <tt class="py-name">username</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt> <tt class="py-op">=</tt> <tt class="py-name">password</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt> <tt class="py-op">=</tt> <tt class="py-name">on_sasl</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">realm</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> </tt>
+<a name="SASL.plugin"></a><div id="SASL.plugin-def"><a name="L142"></a><tt class="py-lineno">142</tt> <a class="py-toggle" href="#" id="SASL.plugin-toggle" onclick="return toggle('SASL.plugin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#plugin">plugin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.plugin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.plugin-expanded"><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'version'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Class nbxmpp.dispatcher_nb.Dispatcher=nbxmpp.dispatcher_nb.Dispatcher-class.html"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-38', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="nbxmpp.auth_nb.SASL_UNSUPPORTED" class="py-name" href="#" onclick="return doclink('link-39', 'SASL_UNSUPPORTED', 'link-29');">SASL_UNSUPPORTED</a></tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-40', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt><tt class="py-op">:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler()=nbxmpp.auth_nb.NonBlockingBind-class.html#FeaturesHandler,Method nbxmpp.auth_nb.SASL.FeaturesHandler()=nbxmpp.auth_nb.SASL-class.html#FeaturesHandler"><a title="nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler
+nbxmpp.auth_nb.SASL.FeaturesHandler" class="py-name" href="#" onclick="return doclink('link-41', 'FeaturesHandler', 'link-41');">FeaturesHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-42', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-43', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-44" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-44', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> </tt>
+<a name="SASL.plugout"></a><div id="SASL.plugout-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="SASL.plugout-toggle" onclick="return toggle('SASL.plugout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#plugout">plugout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.plugout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.plugout-expanded"><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> Remove SASL handlers from owner's dispatcher. Used internally</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'features'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler" class="py-name" href="#" onclick="return doclink('link-45', 'UnregisterHandler', 'link-45');">UnregisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'features'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler
+nbxmpp.auth_nb.SASL.FeaturesHandler" class="py-name" href="#" onclick="return doclink('link-46', 'FeaturesHandler', 'link-41');">FeaturesHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-47" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-47', 'NS_STREAMS', 'link-3');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'challenge'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler" class="py-name" href="#" onclick="return doclink('link-48', 'UnregisterHandler', 'link-45');">UnregisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'challenge'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method nbxmpp.auth_nb.SASL.SASLHandler()=nbxmpp.auth_nb.SASL-class.html#SASLHandler"><a title="nbxmpp.auth_nb.SASL.SASLHandler" class="py-name" href="#" onclick="return doclink('link-49', 'SASLHandler', 'link-49');">SASLHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-50" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-50', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'failure'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler" class="py-name" href="#" onclick="return doclink('link-51', 'UnregisterHandler', 'link-45');">UnregisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'failure'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="nbxmpp.auth_nb.SASL.SASLHandler" class="py-name" href="#" onclick="return doclink('link-52', 'SASLHandler', 'link-49');">SASLHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-53" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-53', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'success'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler" class="py-name" href="#" onclick="return doclink('link-54', 'UnregisterHandler', 'link-45');">UnregisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'success'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="nbxmpp.auth_nb.SASL.SASLHandler" class="py-name" href="#" onclick="return doclink('link-55', 'SASLHandler', 'link-49');">SASLHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-56" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-56', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt>
+<a name="SASL.auth"></a><div id="SASL.auth-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="SASL.auth-toggle" onclick="return toggle('SASL.auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#auth">auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.auth-expanded"><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> Start authentication. Result can be obtained via "SASL.startsasl"</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> attribute and will be either SASL_SUCCESS or SASL_FAILURE</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-docstring"> Note that successfull auth will take at least two Dispatcher.Process()</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"> calls.</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt><tt class="py-op">:</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-57', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler
+nbxmpp.auth_nb.SASL.FeaturesHandler" class="py-name" href="#" onclick="return doclink('link-58', 'FeaturesHandler', 'link-41');">FeaturesHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-59', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-60', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-61" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-61', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-62', 'RegisterHandler', 'link-62');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'features'</tt><tt class="py-op">,</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler
+nbxmpp.auth_nb.SASL.FeaturesHandler" class="py-name" href="#" onclick="return doclink('link-63', 'FeaturesHandler', 'link-41');">FeaturesHandler</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-64" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-64', 'NS_STREAMS', 'link-3');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> </tt>
+<a name="SASL.FeaturesHandler"></a><div id="SASL.FeaturesHandler-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="SASL.FeaturesHandler-toggle" onclick="return toggle('SASL.FeaturesHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#FeaturesHandler">FeaturesHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">conn</tt><tt class="py-op">,</tt> <tt class="py-param">feats</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.FeaturesHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.FeaturesHandler-expanded"><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> Used to determine if server supports SASL auth. Used internally</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">feats</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-65', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'mechanisms'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-66" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-66', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt><tt class="py-op">=</tt><tt class="py-string">'not-supported'</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt id="link-67" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-67', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'SASL not supported by server'</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">mec</tt> <tt class="py-keyword">in</tt> <tt class="py-name">feats</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-68', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'mechanisms'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-69" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-69', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method nbxmpp.simplexml.Node.getTags()=nbxmpp.simplexml.Node-class.html#getTags"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-70', 'getTags', 'link-70');">getTags</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-string">'mechanism'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">mec</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Method nbxmpp.simplexml.Node.getData()=nbxmpp.simplexml.Node-class.html#getData"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-71', 'getData', 'link-71');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-72', 'RegisterHandler', 'link-62');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'challenge'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="nbxmpp.auth_nb.SASL.SASLHandler" class="py-name" href="#" onclick="return doclink('link-73', 'SASLHandler', 'link-49');">SASLHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-74" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-74', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-75', 'RegisterHandler', 'link-62');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'failure'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="nbxmpp.auth_nb.SASL.SASLHandler" class="py-name" href="#" onclick="return doclink('link-76', 'SASLHandler', 'link-49');">SASLHandler</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-77" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-77', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-78', 'RegisterHandler', 'link-62');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'success'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="nbxmpp.auth_nb.SASL.SASLHandler" class="py-name" href="#" onclick="return doclink('link-79', 'SASLHandler', 'link-49');">SASLHandler</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-80" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-80', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method nbxmpp.auth_nb.SASL.MechanismHandler()=nbxmpp.auth_nb.SASL-class.html#MechanismHandler"><a title="nbxmpp.auth_nb.SASL.MechanismHandler" class="py-name" href="#" onclick="return doclink('link-81', 'MechanismHandler', 'link-81');">MechanismHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> </tt>
+<a name="SASL.MechanismHandler"></a><div id="SASL.MechanismHandler-def"><a name="L210"></a><tt class="py-lineno">210</tt> <a class="py-toggle" href="#" id="SASL.MechanismHandler-toggle" onclick="return toggle('SASL.MechanismHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#MechanismHandler">MechanismHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.MechanismHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.MechanismHandler-expanded"><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'ANONYMOUS'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">username</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'ANONYMOUS'</tt><tt class="py-op">)</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-82', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-83" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-83', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-string">'mechanism'</tt><tt class="py-op">:</tt> <tt class="py-string">'ANONYMOUS'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">=</tt> <tt class="py-string">'ANONYMOUS'</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-84" class="py-name"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-84', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-85', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-86" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-86', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"EXTERNAL"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">:</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'EXTERNAL'</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-string">u'%s@%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-name">sasl_data</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'base64'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-87', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-88" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-88', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-string">'mechanism'</tt><tt class="py-op">:</tt> <tt class="py-string">'EXTERNAL'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">sasl_data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">=</tt> <tt class="py-string">'EXTERNAL'</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-89', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-90', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-91" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-91', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'GSSAPI'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt> <tt class="py-keyword">and</tt> <tt id="link-92" class="py-name"><a title="nbxmpp.auth_nb.have_kerberos" class="py-name" href="#" onclick="return doclink('link-92', 'have_kerberos', 'link-22');">have_kerberos</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'GSSAPI'</tt><tt class="py-op">)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-93', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientInit</tt><tt class="py-op">(</tt><tt class="py-string">'xmpp@'</tt> <tt class="py-op">+</tt> \ </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_hostname</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt id="link-94" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-94', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientStep</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt id="link-95" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-95', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientResponse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt id="link-96" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-96', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-97" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-97', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-string">'mechanism'</tt><tt class="py-op">:</tt> <tt class="py-string">'GSSAPI'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">response</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">=</tt> <tt class="py-string">'GSSAPI'</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_step</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="nbxmpp.auth_nb.GSS_STATE_STEP" class="py-name" href="#" onclick="return doclink('link-98', 'GSS_STATE_STEP', 'link-24');">GSS_STATE_STEP</a></tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-99" class="py-name"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-99', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-100', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-101" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-101', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-102" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-102', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">GSSError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt id="link-103" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-103', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'GSSAPI authentication failed: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'SCRAM-SHA-1'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'SCRAM-SHA-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">=</tt> <tt class="py-string">'SCRAM-SHA-1'</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">get_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Method nbxmpp.auth_nb.SASL.set_password()=nbxmpp.auth_nb.SASL-class.html#set_password"><a title="nbxmpp.auth_nb.SASL.set_password" class="py-name" href="#" onclick="return doclink('link-104', 'set_password', 'link-104');">set_password</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt><tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_step</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-105" class="py-name"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-105', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-106" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-106', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'DIGEST-MD5'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">:</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'DIGEST-MD5'</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-107', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-108" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-108', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-string">'mechanism'</tt><tt class="py-op">:</tt> <tt class="py-string">'DIGEST-MD5'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">=</tt> <tt class="py-string">'DIGEST-MD5'</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-109', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-110', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-111" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-111', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'PLAIN'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">:</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'PLAIN'</tt><tt class="py-op">)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">=</tt> <tt class="py-string">'PLAIN'</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">get_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="nbxmpp.auth_nb.SASL.set_password" class="py-name" href="#" onclick="return doclink('link-112', 'set_password', 'link-104');">set_password</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-113', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-114" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-114', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'X-MESSENGER-OAUTH2'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-string">'X-MESSENGER-OAUTH2'</tt><tt class="py-op">)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">=</tt> <tt class="py-string">'X-MESSENGER-OAUTH2'</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">get_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="nbxmpp.auth_nb.SASL.set_password" class="py-name" href="#" onclick="return doclink('link-115', 'set_password', 'link-104');">set_password</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt><tt class="py-op">)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="nbxmpp.auth_nb.SASL_IN_PROCESS" class="py-name" href="#" onclick="return doclink('link-116', 'SASL_IN_PROCESS', 'link-30');">SASL_IN_PROCESS</a></tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-117" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-117', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="nbxmpp.auth_nb.SASL_FAILURE" class="py-name" href="#" onclick="return doclink('link-118', 'SASL_FAILURE', 'link-27');">SASL_FAILURE</a></tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt id="link-119" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-119', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'I can only use EXTERNAL, SCRAM-SHA-1, DIGEST-MD5, GSSAPI and '</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-string">'PLAIN mecanisms.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+</div><a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt>
+<a name="SASL.SASLHandler"></a><div id="SASL.SASLHandler-def"><a name="L280"></a><tt class="py-lineno">280</tt> <a class="py-toggle" href="#" id="SASL.SASLHandler-toggle" onclick="return toggle('SASL.SASLHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#SASLHandler">SASLHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">conn</tt><tt class="py-op">,</tt> <tt class="py-param">challenge</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.SASLHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.SASLHandler-expanded"><a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"><tt class="py-docstring"> Perform next SASL auth step. Used internally</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">challenge</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-120', 'getNamespace', 'link-120');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt id="link-121" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-121', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">scram_base64</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'base64'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">incoming_data</tt> <tt class="py-op">=</tt> <tt class="py-name">challenge</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-122', 'getData', 'link-71');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">incoming_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-comment">### Handle Auth result</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">on_auth_fail</tt><tt class="py-op">(</tt><tt class="py-param">reason</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt id="link-123" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-123', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed SASL authentification: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-124', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-125" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-125', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'abort'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-126" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-126', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mecs</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-comment"># There are other mechanisms to test, but wait for &lt;failure&gt;</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-comment"># answer from server</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="nbxmpp.auth_nb.SASL_FAILURE_IN_PROGRESS" class="py-name" href="#" onclick="return doclink('link-127', 'SASL_FAILURE_IN_PROGRESS', 'link-26');">SASL_FAILURE_IN_PROGRESS</a></tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-128" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-128', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">:</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-129" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-129', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+</div><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">challenge</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-130', 'getName', 'link-130');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'failure'</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">==</tt> <tt id="link-131" class="py-name"><a title="nbxmpp.auth_nb.SASL_FAILURE_IN_PROGRESS" class="py-name" href="#" onclick="return doclink('link-131', 'SASL_FAILURE_IN_PROGRESS', 'link-26');">SASL_FAILURE_IN_PROGRESS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="nbxmpp.auth_nb.SASL.MechanismHandler" class="py-name" href="#" onclick="return doclink('link-132', 'MechanismHandler', 'link-81');">MechanismHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-133" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-133', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="nbxmpp.auth_nb.SASL_FAILURE" class="py-name" href="#" onclick="return doclink('link-134', 'SASL_FAILURE', 'link-27');">SASL_FAILURE</a></tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">challenge</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name" targets="Method nbxmpp.simplexml.Node.getChildren()=nbxmpp.simplexml.Node-class.html#getChildren"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-135', 'getChildren', 'link-135');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">challenge</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">on_auth_fail</tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">challenge</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-136', 'getName', 'link-130');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'success'</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">==</tt> <tt class="py-string">'SCRAM-SHA-1'</tt><tt class="py-op">:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-comment"># check data-with-success</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name" targets="Function nbxmpp.auth_nb.scram_parse()=nbxmpp.auth_nb-module.html#scram_parse"><a title="nbxmpp.auth_nb.scram_parse" class="py-name" href="#" onclick="return doclink('link-137', 'scram_parse', 'link-137');">scram_parse</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'v'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">scram_base64</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_ServerSignature</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-name">on_auth_fail</tt><tt class="py-op">(</tt><tt class="py-string">'ServerSignature is wrong'</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name"><a title="nbxmpp.auth_nb.SASL_SUCCESS" class="py-name" href="#" onclick="return doclink('link-138', 'SASL_SUCCESS', 'link-28');">SASL_SUCCESS</a></tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt id="link-139" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-139', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Successfully authenticated with remote server.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">handlers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-140', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.dumpHandlers()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.dumpHandlers" class="py-name" href="#" onclick="return doclink('link-141', 'dumpHandlers', 'link-141');">dumpHandlers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-comment"># Bosh specific dispatcher replugging</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-comment"># save old features. They will be used in case we won't get response</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-comment"># on stream restart after SASL auth (happens with XMPP over BOSH</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-comment"># with Openfire)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">old_features</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-142', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-143', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets="Method nbxmpp.plugin.PlugIn.PlugOut()=nbxmpp.plugin.PlugIn-class.html#PlugOut"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-144', 'PlugOut', 'link-144');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt id="link-145" class="py-name"><a title="nbxmpp.dispatcher_nb" class="py-name" href="#" onclick="return doclink('link-145', 'dispatcher_nb', 'link-19');">dispatcher_nb</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-146', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Class Method nbxmpp.dispatcher_nb.Dispatcher.get_instance()=nbxmpp.dispatcher_nb.Dispatcher-class.html#get_instance,Class Method nbxmpp.plugin.PlugIn.get_instance()=nbxmpp.plugin.PlugIn-class.html#get_instance,Class Method nbxmpp.proxy_connectors.ProxyConnector.get_instance()=nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-147', 'get_instance', 'link-147');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-148', 'PlugIn', 'link-16');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-name">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">old_features</tt><tt class="py-op">=</tt><tt class="py-name">old_features</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-149', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.restoreHandlers()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.restoreHandlers" class="py-name" href="#" onclick="return doclink('link-150', 'restoreHandlers', 'link-150');">restoreHandlers</a></tt><tt class="py-op">(</tt><tt class="py-name">handlers</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">User</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">username</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-151" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-151', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-comment">### Perform auth step</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt id="link-152" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-152', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Got challenge:'</tt> <tt class="py-op">+</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">==</tt> <tt class="py-string">'GSSAPI'</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_step</tt> <tt class="py-op">==</tt> <tt id="link-153" class="py-name"><a title="nbxmpp.auth_nb.GSS_STATE_STEP" class="py-name" href="#" onclick="return doclink('link-153', 'GSS_STATE_STEP', 'link-24');">GSS_STATE_STEP</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">rc</tt> <tt class="py-op">=</tt> <tt id="link-154" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-154', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientStep</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">,</tt> <tt class="py-name">incoming_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">rc</tt> <tt class="py-op">!=</tt> <tt id="link-155" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-155', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">AUTH_GSS_CONTINUE</tt><tt class="py-op">:</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_step</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="nbxmpp.auth_nb.GSS_STATE_WRAP" class="py-name" href="#" onclick="return doclink('link-156', 'GSS_STATE_WRAP', 'link-25');">GSS_STATE_WRAP</a></tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_step</tt> <tt class="py-op">==</tt> <tt id="link-157" class="py-name"><a title="nbxmpp.auth_nb.GSS_STATE_WRAP" class="py-name" href="#" onclick="return doclink('link-157', 'GSS_STATE_WRAP', 'link-25');">GSS_STATE_WRAP</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-name">rc</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-158', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientUnwrap</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">,</tt> <tt class="py-name">incoming_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt id="link-159" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-159', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientResponse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">rc</tt> <tt class="py-op">=</tt> <tt id="link-160" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-160', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientWrap</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">,</tt> <tt class="py-name">response</tt><tt class="py-op">,</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt id="link-161" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-161', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientUserName</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="nbxmpp.auth_nb.kerberos" class="py-name" href="#" onclick="return doclink('link-162', 'kerberos', 'link-21');">kerberos</a></tt><tt class="py-op">.</tt><tt class="py-name">authGSSClientResponse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gss_vc</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">response</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-163', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt id="link-164" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-164', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'response'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-165" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-165', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">}</tt><tt class="py-op">,</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-name">response</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Method nbxmpp.protocol.JID.__str__()=nbxmpp.protocol.JID-class.html#__str__,Method nbxmpp.simplexml.Node.__str__()=nbxmpp.simplexml.Node-class.html#__str__,Method nbxmpp.tls_nb.SSLWrapper.Error.__str__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-166', '__str__', 'link-166');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-167" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-167', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">==</tt> <tt class="py-string">'SCRAM-SHA-1'</tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-name">hashfn</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha1</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-param">k</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hmac</tt><tt class="py-op">.</tt><tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">=</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">=</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">digestmod</tt><tt class="py-op">=</tt><tt class="py-name">hashfn</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">XOR</tt><tt class="py-op">(</tt><tt class="py-param">x</tt><tt class="py-op">,</tt> <tt class="py-param">y</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">px</tt><tt class="py-op">)</tt> <tt class="py-op">^</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">py</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">px</tt><tt class="py-op">,</tt> <tt class="py-name">py</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">Hi</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">salt</tt><tt class="py-op">,</tt> <tt class="py-param">iters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">ii</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-name">ui_1</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt> <tt class="py-op">+</tt> <tt class="py-string">'\0\0\0\01'</tt><tt class="py-op">)</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">ui</tt> <tt class="py-op">=</tt> <tt class="py-name">ui_1</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">iters</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">ii</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-name">ui_1</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">ui_1</tt><tt class="py-op">)</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-name">ui</tt> <tt class="py-op">=</tt> <tt class="py-name">XOR</tt><tt class="py-op">(</tt><tt class="py-name">ui</tt><tt class="py-op">,</tt> <tt class="py-name">ui_1</tt><tt class="py-op">)</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ui</tt> </tt>
+</div><a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">scram_H</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hashfn</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_step</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_step</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_soup</tt> <tt class="py-op">+=</tt> <tt class="py-string">','</tt> <tt class="py-op">+</tt> <tt class="py-name">data</tt> <tt class="py-op">+</tt> <tt class="py-string">','</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt id="link-168" class="py-name"><a title="nbxmpp.auth_nb.scram_parse" class="py-name" href="#" onclick="return doclink('link-168', 'scram_parse', 'link-137');">scram_parse</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-comment"># TODO: Should check cnonce here.</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-comment"># TODO: Channel binding data goes in here too.</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-string">'c='</tt> <tt class="py-op">+</tt> <tt class="py-name">scram_base64</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_gs2</tt><tt class="py-op">)</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">+=</tt> <tt class="py-string">',r='</tt> <tt class="py-op">+</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'r'</tt><tt class="py-op">]</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_soup</tt> <tt class="py-op">+=</tt> <tt class="py-name">r</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'s'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'base64'</tt><tt class="py-op">)</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-name">iter</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'i'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-name">SaltedPassword</tt> <tt class="py-op">=</tt> <tt class="py-name">Hi</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">,</tt> <tt class="py-name">iter</tt><tt class="py-op">)</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-comment"># TODO: Could cache this, along with salt+iter.</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">ClientKey</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">SaltedPassword</tt><tt class="py-op">,</tt> <tt class="py-string">'Client Key'</tt><tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-name">StoredKey</tt> <tt class="py-op">=</tt> <tt class="py-name">scram_H</tt><tt class="py-op">(</tt><tt class="py-name">ClientKey</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">ClientSignature</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">StoredKey</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_soup</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-name">ClientProof</tt> <tt class="py-op">=</tt> <tt class="py-name">XOR</tt><tt class="py-op">(</tt><tt class="py-name">ClientKey</tt><tt class="py-op">,</tt> <tt class="py-name">ClientSignature</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">+=</tt> <tt class="py-string">',p='</tt> <tt class="py-op">+</tt> <tt class="py-name">scram_base64</tt><tt class="py-op">(</tt><tt class="py-name">ClientProof</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">ServerKey</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">SaltedPassword</tt><tt class="py-op">,</tt> <tt class="py-string">'Server Key'</tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_ServerSignature</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">ServerKey</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_soup</tt><tt class="py-op">)</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-name">scram_base64</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">)</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-169', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'response'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-170" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-170', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">}</tt><tt class="py-op">,</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">sasl_data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-171', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-172" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-172', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_step</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name"><a title="nbxmpp.auth_nb.scram_parse" class="py-name" href="#" onclick="return doclink('link-173', 'scram_parse', 'link-137');">scram_parse</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'v'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'base64'</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_ServerSignature</tt><tt class="py-op">:</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-comment"># TODO: Not clear what to do here - need to abort.</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-174" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-174', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'response'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-175" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-175', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-176', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-177" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-177', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-comment"># magic foo...</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">chal</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name" targets="Function nbxmpp.auth_nb.challenge_splitter()=nbxmpp.auth_nb-module.html#challenge_splitter"><a title="nbxmpp.auth_nb.challenge_splitter" class="py-name" href="#" onclick="return doclink('link-178', 'challenge_splitter', 'link-178');">challenge_splitter</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">realm</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'realm'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chal</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">realm</tt> <tt class="py-op">=</tt> <tt class="py-name">chal</tt><tt class="py-op">[</tt><tt class="py-string">'realm'</tt><tt class="py-op">]</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'qop'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chal</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">chal</tt><tt class="py-op">[</tt><tt class="py-string">'qop'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> \ </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">chal</tt><tt class="py-op">[</tt><tt class="py-string">'qop'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt><tt class="py-string">'auth'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">chal</tt><tt class="py-op">[</tt><tt class="py-string">'qop'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'auth'</tt> <tt class="py-keyword">in</tt> \ </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">chal</tt><tt class="py-op">[</tt><tt class="py-string">'qop'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'username'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">username</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">realm</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'realm'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">realm</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'realm'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'nonce'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">chal</tt><tt class="py-op">[</tt><tt class="py-string">'nonce'</tt><tt class="py-op">]</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'cnonce'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">"%x"</tt> <tt class="py-op">%</tt> <tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-number">28</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">randint</tt> \ </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">in</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">repeat</tt><tt class="py-op">(</tt><tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">,</tt> <tt class="py-number">7</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'nc'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'00000001'</tt><tt class="py-op">)</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'qop'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'auth'</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'digest-uri'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'xmpp/'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'charset'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'utf-8'</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-comment"># Password is now required</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">get_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="nbxmpp.auth_nb.SASL.set_password" class="py-name" href="#" onclick="return doclink('link-179', 'set_password', 'link-104');">set_password</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-string">'rspauth'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chal</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-comment"># Check rspauth value</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chal</tt><tt class="py-op">[</tt><tt class="py-string">'rspauth'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">digest_rspauth</tt><tt class="py-op">:</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">on_auth_fail</tt><tt class="py-op">(</tt><tt class="py-string">'rspauth is wrong'</tt><tt class="py-op">)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-180', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-181" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-181', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'response'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt><tt id="link-182" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-182', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">=</tt> <tt id="link-183" class="py-name"><a title="nbxmpp.auth_nb.SASL_FAILURE" class="py-name" href="#" onclick="return doclink('link-183', 'SASL_FAILURE', 'link-27');">SASL_FAILURE</a></tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt id="link-184" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-184', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed SASL authentification: unknown challenge'</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_sasl</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-185" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-185', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt> </tt>
+</div><a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="SASL._convert_to_iso88591"></a><div id="SASL._convert_to_iso88591-def"><a name="L457"></a><tt class="py-lineno">457</tt> <a class="py-toggle" href="#" id="SASL._convert_to_iso88591-toggle" onclick="return toggle('SASL._convert_to_iso88591');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#_convert_to_iso88591">_convert_to_iso88591</a><tt class="py-op">(</tt><tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL._convert_to_iso88591-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL._convert_to_iso88591-expanded"><a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">string</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeEncodeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">string</tt> </tt>
+</div><a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> </tt>
+<a name="SASL.set_password"></a><div id="SASL.set_password-def"><a name="L464"></a><tt class="py-lineno">464</tt> <a class="py-toggle" href="#" id="SASL.set_password-toggle" onclick="return toggle('SASL.set_password');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.SASL-class.html#set_password">set_password</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SASL.set_password-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SASL.set_password-expanded"><a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">else</tt> <tt class="py-name">password</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">==</tt> <tt class="py-string">'SCRAM-SHA-1'</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-name">nonce</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'%x'</tt> <tt class="py-op">%</tt> <tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt> <tt class="py-op">**</tt> <tt class="py-number">28</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">randint</tt> <tt class="py-keyword">in</tt> \ </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">repeat</tt><tt class="py-op">(</tt><tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">,</tt> <tt class="py-number">7</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_soup</tt> <tt class="py-op">=</tt> <tt class="py-string">'n='</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">username</tt> <tt class="py-op">+</tt> <tt class="py-string">',r='</tt> <tt class="py-op">+</tt> <tt class="py-name">nonce</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_gs2</tt> <tt class="py-op">=</tt> <tt class="py-string">'n,,'</tt> <tt class="py-comment"># No CB yet.</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_gs2</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scram_soup</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'base64'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt>\ </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-186', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-187" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-187', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-string">'mechanism'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">sasl_data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">==</tt> <tt class="py-string">'DIGEST-MD5'</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-name">hash_username</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Static Method nbxmpp.auth_nb.SASL._convert_to_iso88591()=nbxmpp.auth_nb.SASL-class.html#_convert_to_iso88591"><a title="nbxmpp.auth_nb.SASL._convert_to_iso88591" class="py-name" href="#" onclick="return doclink('link-188', '_convert_to_iso88591', 'link-188');">_convert_to_iso88591</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'username'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-name">hash_realm</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="nbxmpp.auth_nb.SASL._convert_to_iso88591" class="py-name" href="#" onclick="return doclink('link-189', '_convert_to_iso88591', 'link-188');">_convert_to_iso88591</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'realm'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt class="py-name">hash_password</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="nbxmpp.auth_nb.SASL._convert_to_iso88591" class="py-name" href="#" onclick="return doclink('link-190', '_convert_to_iso88591', 'link-188');">_convert_to_iso88591</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt><tt class="py-op">)</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-name">A1</tt> <tt class="py-op">=</tt> <tt id="link-191" class="py-name" targets="Function nbxmpp.auth_nb.C()=nbxmpp.auth_nb-module.html#C"><a title="nbxmpp.auth_nb.C" class="py-name" href="#" onclick="return doclink('link-191', 'C', 'link-191');">C</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-192" class="py-name" targets="Function nbxmpp.auth_nb.H()=nbxmpp.auth_nb-module.html#H"><a title="nbxmpp.auth_nb.H" class="py-name" href="#" onclick="return doclink('link-192', 'H', 'link-192');">H</a></tt><tt class="py-op">(</tt><tt id="link-193" class="py-name"><a title="nbxmpp.auth_nb.C" class="py-name" href="#" onclick="return doclink('link-193', 'C', 'link-191');">C</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hash_username</tt><tt class="py-op">,</tt> <tt class="py-name">hash_realm</tt><tt class="py-op">,</tt> <tt class="py-name">hash_password</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'nonce'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'cnonce'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-name">A2</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="nbxmpp.auth_nb.C" class="py-name" href="#" onclick="return doclink('link-194', 'C', 'link-191');">C</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'AUTHENTICATE'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'digest-uri'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt id="link-195" class="py-name" targets="Function nbxmpp.auth_nb.HH()=nbxmpp.auth_nb-module.html#HH"><a title="nbxmpp.auth_nb.HH" class="py-name" href="#" onclick="return doclink('link-195', 'HH', 'link-195');">HH</a></tt><tt class="py-op">(</tt><tt id="link-196" class="py-name"><a title="nbxmpp.auth_nb.C" class="py-name" href="#" onclick="return doclink('link-196', 'C', 'link-191');">C</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-197" class="py-name"><a title="nbxmpp.auth_nb.HH" class="py-name" href="#" onclick="return doclink('link-197', 'HH', 'link-195');">HH</a></tt><tt class="py-op">(</tt><tt class="py-name">A1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'nonce'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'nc'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'cnonce'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'qop'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-198" class="py-name"><a title="nbxmpp.auth_nb.HH" class="py-name" href="#" onclick="return doclink('link-198', 'HH', 'link-195');">HH</a></tt><tt class="py-op">(</tt><tt class="py-name">A2</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">A2</tt> <tt class="py-op">=</tt> <tt id="link-199" class="py-name"><a title="nbxmpp.auth_nb.C" class="py-name" href="#" onclick="return doclink('link-199', 'C', 'link-191');">C</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'digest-uri'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">digest_rspauth</tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name"><a title="nbxmpp.auth_nb.HH" class="py-name" href="#" onclick="return doclink('link-200', 'HH', 'link-195');">HH</a></tt><tt class="py-op">(</tt><tt id="link-201" class="py-name"><a title="nbxmpp.auth_nb.C" class="py-name" href="#" onclick="return doclink('link-201', 'C', 'link-191');">C</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-202" class="py-name"><a title="nbxmpp.auth_nb.HH" class="py-name" href="#" onclick="return doclink('link-202', 'HH', 'link-195');">HH</a></tt><tt class="py-op">(</tt><tt class="py-name">A1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'nonce'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'nc'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'cnonce'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'qop'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt id="link-203" class="py-name"><a title="nbxmpp.auth_nb.HH" class="py-name" href="#" onclick="return doclink('link-203', 'HH', 'link-195');">HH</a></tt><tt class="py-op">(</tt><tt class="py-name">A2</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">response</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-string">u''</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'charset'</tt><tt class="py-op">,</tt> <tt class="py-string">'username'</tt><tt class="py-op">,</tt> <tt class="py-string">'realm'</tt><tt class="py-op">,</tt> <tt class="py-string">'nonce'</tt><tt class="py-op">,</tt> <tt class="py-string">'nc'</tt><tt class="py-op">,</tt> <tt class="py-string">'cnonce'</tt><tt class="py-op">,</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-string">'digest-uri'</tt><tt class="py-op">,</tt> <tt class="py-string">'response'</tt><tt class="py-op">,</tt> <tt class="py-string">'qop'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'nc'</tt><tt class="py-op">,</tt> <tt class="py-string">'qop'</tt><tt class="py-op">,</tt> <tt class="py-string">'response'</tt><tt class="py-op">,</tt> <tt class="py-string">'charset'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">+=</tt> <tt class="py-string">u"%s=%s,"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">+=</tt> <tt class="py-string">u'%s="%s",'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-name">sasl_data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'base64'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-string">'\r'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-204" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-204', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'response'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-205" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-205', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">}</tt><tt class="py-op">,</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">sasl_data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">==</tt> <tt class="py-string">'PLAIN'</tt><tt class="py-op">:</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-string">u'\x00%s\x00%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt><tt class="py-op">)</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-name">sasl_data</tt> <tt class="py-op">=</tt> <tt class="py-name">sasl_data</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'base64'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-206" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-206', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-207" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-207', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> <tt class="py-string">'mechanism'</tt><tt class="py-op">:</tt> <tt class="py-string">'PLAIN'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">sasl_data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mechanism</tt> <tt class="py-op">==</tt> <tt class="py-string">'X-MESSENGER-OAUTH2'</tt><tt class="py-op">:</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-208" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-208', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-209" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-209', 'NS_SASL', 'link-1');">NS_SASL</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-string">'mechanism'</tt><tt class="py-op">:</tt> <tt class="py-string">'X-MESSENGER-OAUTH2'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method nbxmpp.simplexml.Node.addData()=nbxmpp.simplexml.Node-class.html#addData"><a title="nbxmpp.simplexml.Node.addData" class="py-name" href="#" onclick="return doclink('link-210', 'addData', 'link-210');">addData</a></tt><tt class="py-op">(</tt><tt class="py-name">password</tt><tt class="py-op">)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-211', 'send', 'link-85');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingNonSASL"></a><div id="NonBlockingNonSASL-def"><a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt> <a class="py-toggle" href="#" id="NonBlockingNonSASL-toggle" onclick="return toggle('NonBlockingNonSASL');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html">NonBlockingNonSASL</a><tt class="py-op">(</tt><tt class="py-base-class">PlugIn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingNonSASL-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingNonSASL-expanded"><a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"><tt class="py-docstring"> Implements old Non-SASL (JEP-0078) authentication used in jabberd1.4 and</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"><tt class="py-docstring"> transport authentication</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingNonSASL.__init__"></a><div id="NonBlockingNonSASL.__init__-def"><a name="L519"></a><tt class="py-lineno">519</tt> <a class="py-toggle" href="#" id="NonBlockingNonSASL.__init__-toggle" onclick="return toggle('NonBlockingNonSASL.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">resource</tt><tt class="py-op">,</tt> <tt class="py-param">on_auth</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingNonSASL.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingNonSASL.__init__-expanded"><a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"><tt class="py-docstring"> Caches username, password and resource for auth</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt id="link-212" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-212', 'PlugIn', 'link-16');">PlugIn</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-213', '__init__', 'link-37');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt> <tt class="py-op">=</tt> <tt class="py-name">password</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt class="py-name">resource</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt> <tt class="py-op">=</tt> <tt class="py-name">on_auth</tt> </tt>
+</div><a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingNonSASL.plugin"></a><div id="NonBlockingNonSASL.plugin-def"><a name="L532"></a><tt class="py-lineno">532</tt> <a class="py-toggle" href="#" id="NonBlockingNonSASL.plugin-toggle" onclick="return toggle('NonBlockingNonSASL.plugin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin">plugin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingNonSASL.plugin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingNonSASL.plugin-expanded"><a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"><tt class="py-docstring"> Determine the best auth method (digest/0k/plain) and use it for auth.</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"><tt class="py-docstring"> Returns used method name on success. Used internally</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt id="link-214" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-214', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Querying server about possible auth methods'</tt><tt class="py-op">)</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt> <tt class="py-op">=</tt> <tt class="py-name">owner</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-215', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-216" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-216', 'SendAndWaitForResponse', 'link-216');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt id="link-217" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-217', 'Iq', 'link-12');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt id="link-218" class="py-name"><a title="nbxmpp.protocol.NS_AUTH" class="py-name" href="#" onclick="return doclink('link-218', 'NS_AUTH', 'link-5');">NS_AUTH</a></tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-219" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-219', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'username'</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-name">func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingNonSASL._on_username()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_username"><a title="nbxmpp.auth_nb.NonBlockingNonSASL._on_username" class="py-name" href="#" onclick="return doclink('link-220', '_on_username', 'link-220');">_on_username</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingNonSASL._on_username"></a><div id="NonBlockingNonSASL._on_username-def"><a name="L544"></a><tt class="py-lineno">544</tt> <a class="py-toggle" href="#" id="NonBlockingNonSASL._on_username-toggle" onclick="return toggle('NonBlockingNonSASL._on_username');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_username">_on_username</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingNonSASL._on_username-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingNonSASL._on_username-expanded"><a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-221" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-221', 'isResultNode', 'link-11');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt id="link-222" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-222', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'No result node arrived! Aborting...'</tt><tt class="py-op">)</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">=</tt><tt id="link-223" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-223', 'Iq', 'link-12');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-224', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name" targets="Method nbxmpp.simplexml.Node.setTagData()=nbxmpp.simplexml.Node-class.html#setTagData"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-225', 'setTagData', 'link-225');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'username'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-226', 'setTagData', 'link-225');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'resource'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt><tt class="py-op">)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-227', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'digest'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt id="link-228" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-228', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Performing digest authentication"</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-229', 'setTagData', 'link-225');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'digest'</tt><tt class="py-op">,</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha1</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-230', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">hexdigest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-231', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'password'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name" targets="Method nbxmpp.simplexml.Node.delChild()=nbxmpp.simplexml.Node-class.html#delChild"><a title="nbxmpp.simplexml.Node.delChild" class="py-name" href="#" onclick="return doclink('link-232', 'delChild', 'link-232');">delChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'password'</tt><tt class="py-op">)</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_method</tt> <tt class="py-op">=</tt> <tt class="py-string">'digest'</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-233', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'token'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name" targets="Method nbxmpp.simplexml.Node.getTagData()=nbxmpp.simplexml.Node-class.html#getTagData"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-234', 'getTagData', 'link-234');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'token'</tt><tt class="py-op">)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-name">seq</tt> <tt class="py-op">=</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-235', 'getTagData', 'link-234');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'sequence'</tt><tt class="py-op">)</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt id="link-236" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-236', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Performing zero-k authentication"</tt><tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">hasher</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha1</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">hexdigest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">hash_n_times</tt><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">count</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">count</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasher</tt><tt class="py-op">(</tt><tt class="py-name">hash_n_times</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">count</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-name">hash_</tt> <tt class="py-op">=</tt> <tt class="py-name">hash_n_times</tt><tt class="py-op">(</tt><tt class="py-name">hasher</tt><tt class="py-op">(</tt><tt class="py-name">hasher</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">seq</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-237', 'setTagData', 'link-225');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'hash'</tt><tt class="py-op">,</tt> <tt class="py-name">hash_</tt><tt class="py-op">)</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_method</tt><tt class="py-op">=</tt><tt class="py-string">'0k'</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt id="link-238" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-238', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Secure methods unsupported, performing plain text \</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"><tt class="py-string"> authentication"</tt><tt class="py-op">)</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_method</tt> <tt class="py-op">=</tt> <tt class="py-string">'plain'</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">get_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingNonSASL._on_password()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_password"><a title="nbxmpp.auth_nb.NonBlockingNonSASL._on_password" class="py-name" href="#" onclick="return doclink('link-239', '_on_password', 'link-239');">_on_password</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_method</tt><tt class="py-op">)</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-240', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-241', 'SendAndWaitForResponse', 'link-216');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-name">func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingNonSASL._on_auth()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_auth"><a title="nbxmpp.auth_nb.NonBlockingNonSASL._on_auth" class="py-name" href="#" onclick="return doclink('link-242', '_on_auth', 'link-242');">_on_auth</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingNonSASL._on_password"></a><div id="NonBlockingNonSASL._on_password-def"><a name="L586"></a><tt class="py-lineno">586</tt> <a class="py-toggle" href="#" id="NonBlockingNonSASL._on_password-toggle" onclick="return toggle('NonBlockingNonSASL._on_password');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_password">_on_password</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingNonSASL._on_password-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingNonSASL._on_password-expanded"><a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">else</tt> <tt class="py-name">password</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">=</tt><tt id="link-243" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-243', 'Iq', 'link-12');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-244" class="py-name"><a title="nbxmpp.protocol.NS_AUTH" class="py-name" href="#" onclick="return doclink('link-244', 'NS_AUTH', 'link-5');">NS_AUTH</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-245', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-246', 'setTagData', 'link-225');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'username'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-247', 'setTagData', 'link-225');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'resource'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt><tt class="py-op">)</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-248', 'setTagData', 'link-225');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'password'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">password</tt><tt class="py-op">)</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-249', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-250', 'SendAndWaitForResponse', 'link-216');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-name">func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingNonSASL._on_auth" class="py-name" href="#" onclick="return doclink('link-251', '_on_auth', 'link-242');">_on_auth</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingNonSASL._on_auth"></a><div id="NonBlockingNonSASL._on_auth-def"><a name="L596"></a><tt class="py-lineno">596</tt> <a class="py-toggle" href="#" id="NonBlockingNonSASL._on_auth-toggle" onclick="return toggle('NonBlockingNonSASL._on_auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_auth">_on_auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingNonSASL._on_auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingNonSASL._on_auth-expanded"><a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-252" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-252', 'isResultNode', 'link-11');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt id="link-253" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-253', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Sucessfully authenticated with remote host.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">User</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">Resource</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">User</tt> <tt class="py-op">+</tt> <tt class="py-string">'@'</tt> <tt class="py-op">+</tt> \ </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">+</tt> <tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">Resource</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_method</tt><tt class="py-op">)</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> <tt id="link-254" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-254', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication failed!'</tt><tt class="py-op">)</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind"></a><div id="NonBlockingBind-def"><a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt> <a class="py-toggle" href="#" id="NonBlockingBind-toggle" onclick="return toggle('NonBlockingBind');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html">NonBlockingBind</a><tt class="py-op">(</tt><tt class="py-base-class">PlugIn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingBind-expanded"><a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"><tt class="py-docstring"> Bind some JID to the current connection to allow router know of our</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"><tt class="py-docstring"> location. Must be plugged after successful SASL auth</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind.__init__"></a><div id="NonBlockingBind.__init__-def"><a name="L614"></a><tt class="py-lineno">614</tt> <a class="py-toggle" href="#" id="NonBlockingBind.__init__-toggle" onclick="return toggle('NonBlockingBind.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBind.__init__-expanded"><a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt id="link-255" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-255', 'PlugIn', 'link-16');">PlugIn</a></tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-256', '__init__', 'link-37');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bound</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">supports_sm</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind.plugin"></a><div id="NonBlockingBind.plugin-def"><a name="L620"></a><tt class="py-lineno">620</tt> <a class="py-toggle" href="#" id="NonBlockingBind.plugin-toggle" onclick="return toggle('NonBlockingBind.plugin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugin">plugin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind.plugin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBind.plugin-expanded"><a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-docstring">''' Start resource binding, if allowed at this time. Used internally. '''</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-257', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt><tt class="py-op">:</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler
+nbxmpp.auth_nb.SASL.FeaturesHandler" class="py-name" href="#" onclick="return doclink('link-258', 'FeaturesHandler', 'link-41');">FeaturesHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-259', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-260', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-261" class="py-name"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-261', 'NodeProcessed', 'link-10');">NodeProcessed</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-262', 'RegisterHandler', 'link-62');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'features'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler
+nbxmpp.auth_nb.SASL.FeaturesHandler" class="py-name" href="#" onclick="return doclink('link-263', 'FeaturesHandler', 'link-41');">FeaturesHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-264" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-264', 'NS_STREAMS', 'link-3');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind.FeaturesHandler"></a><div id="NonBlockingBind.FeaturesHandler-def"><a name="L632"></a><tt class="py-lineno">632</tt> <a class="py-toggle" href="#" id="NonBlockingBind.FeaturesHandler-toggle" onclick="return toggle('NonBlockingBind.FeaturesHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html#FeaturesHandler">FeaturesHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">conn</tt><tt class="py-op">,</tt> <tt class="py-param">feats</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind.FeaturesHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBind.FeaturesHandler-expanded"><a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"><tt class="py-docstring"> Determine if server supports resource binding and set some internal</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"><tt class="py-docstring"> attributes accordingly.</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"><tt class="py-docstring"> It also checks if server supports stream management</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">feats</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-265', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'sm'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-266" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-266', 'NS_STREAM_MGMT', 'link-7');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">supports_sm</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> <tt class="py-comment"># server supports stream management</tt> </tt>
+<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt><tt class="py-op">:</tt> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method nbxmpp.smacks.Smacks.resume_request()=nbxmpp.smacks.Smacks-class.html#resume_request"><a title="nbxmpp.smacks.Smacks.resume_request" class="py-name" href="#" onclick="return doclink('link-267', 'resume_request', 'link-267');">resume_request</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">feats</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-268', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'bind'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-269" class="py-name"><a title="nbxmpp.protocol.NS_BIND" class="py-name" href="#" onclick="return doclink('link-269', 'NS_BIND', 'link-4');">NS_BIND</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"> <tt id="link-270" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-270', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Server does not requested binding.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> <tt class="py-comment"># we try to bind resource anyway</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> <tt class="py-comment">#self.bound='failure'</tt> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bound</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">feats</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-271', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'session'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-272" class="py-name"><a title="nbxmpp.protocol.NS_SESSION" class="py-name" href="#" onclick="return doclink('link-272', 'NS_SESSION', 'link-2');">NS_SESSION</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bound</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind.plugout"></a><div id="NonBlockingBind.plugout-def"><a name="L657"></a><tt class="py-lineno">657</tt> <a class="py-toggle" href="#" id="NonBlockingBind.plugout-toggle" onclick="return toggle('NonBlockingBind.plugout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugout">plugout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind.plugout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBind.plugout-expanded"><a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"><tt class="py-docstring"> Remove Bind handler from owner's dispatcher. Used internally</tt> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler" class="py-name" href="#" onclick="return doclink('link-273', 'UnregisterHandler', 'link-45');">UnregisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'features'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.FeaturesHandler
+nbxmpp.auth_nb.SASL.FeaturesHandler" class="py-name" href="#" onclick="return doclink('link-274', 'FeaturesHandler', 'link-41');">FeaturesHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-275" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-275', 'NS_STREAMS', 'link-3');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind.NonBlockingBind"></a><div id="NonBlockingBind.NonBlockingBind-def"><a name="L664"></a><tt class="py-lineno">664</tt> <a class="py-toggle" href="#" id="NonBlockingBind.NonBlockingBind-toggle" onclick="return toggle('NonBlockingBind.NonBlockingBind');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html#NonBlockingBind">NonBlockingBind</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resource</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">on_bound</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind.NonBlockingBind-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBind.NonBlockingBind-expanded"><a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"><tt class="py-docstring"> Perform binding. Use provided resource name or random (if not provided).</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt><tt class="py-op">:</tt> <tt class="py-comment"># We don't bind if we resume the stream</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_bound</tt> <tt class="py-op">=</tt> <tt class="py-name">on_bound</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resource</tt> <tt class="py-op">=</tt> <tt class="py-name">resource</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resource</tt><tt class="py-op">:</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resource</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-276" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-276', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'resource'</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resource</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resource</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> </tt>
+<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-277', 'onreceive', 'link-277');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-278" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-278', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-279', 'SendAndWaitForResponse', 'link-216');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt id="link-280" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-280', 'Protocol', 'link-13');">Protocol</a></tt><tt class="py-op">(</tt><tt class="py-string">'iq'</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-281" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-281', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'bind'</tt><tt class="py-op">,</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> <tt id="link-282" class="py-name"><a title="nbxmpp.protocol.NS_BIND" class="py-name" href="#" onclick="return doclink('link-282', 'NS_BIND', 'link-4');">NS_BIND</a></tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resource</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-name">func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-283" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind._on_bound()=nbxmpp.auth_nb.NonBlockingBind-class.html#_on_bound"><a title="nbxmpp.auth_nb.NonBlockingBind._on_bound" class="py-name" href="#" onclick="return doclink('link-283', '_on_bound', 'link-283');">_on_bound</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind._on_bound"></a><div id="NonBlockingBind._on_bound-def"><a name="L683"></a><tt class="py-lineno">683</tt> <a class="py-toggle" href="#" id="NonBlockingBind._on_bound-toggle" onclick="return toggle('NonBlockingBind._on_bound');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html#_on_bound">_on_bound</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind._on_bound-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBind._on_bound-expanded"><a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-284" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-284', 'isResultNode', 'link-11');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-285', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'bind'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-286" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-286', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'bind'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-287', 'getTagData', 'link-234');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'jid'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bound</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-288', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'bind'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-289', 'getTagData', 'link-234');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'jid'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"> <tt id="link-290" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-290', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Successfully bound %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bound</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"> <tt class="py-name">jid</tt> <tt class="py-op">=</tt> <tt id="link-291" class="py-name"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-291', 'JID', 'link-14');">JID</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-292" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-292', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'bind'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-293', 'getTagData', 'link-234');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'jid'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">User</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name" targets="Method nbxmpp.protocol.JID.getNode()=nbxmpp.protocol.JID-class.html#getNode"><a title="nbxmpp.protocol.JID.getNode" class="py-name" href="#" onclick="return doclink('link-294', 'getNode', 'link-294');">getNode</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Resource</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name" targets="Method nbxmpp.protocol.JID.getResource()=nbxmpp.protocol.JID-class.html#getResource"><a title="nbxmpp.protocol.JID.getResource" class="py-name" href="#" onclick="return doclink('link-295', 'getResource', 'link-295');">getResource</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"> <tt class="py-comment"># Only negociate stream management after bounded</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"> <tt class="py-name">sm</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">supports_sm</tt><tt class="py-op">:</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> <tt class="py-comment"># starts negociation</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-name">sm</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name" targets="Method nbxmpp.smacks.Smacks.set_owner()=nbxmpp.smacks.Smacks-class.html#set_owner"><a title="nbxmpp.smacks.Smacks.set_owner" class="py-name" href="#" onclick="return doclink('link-296', 'set_owner', 'link-296');">set_owner</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">)</tt> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-name">sm</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name" targets="Method nbxmpp.smacks.Smacks.negociate()=nbxmpp.smacks.Smacks-class.html#negociate"><a title="nbxmpp.smacks.Smacks.negociate" class="py-name" href="#" onclick="return doclink('link-297', 'negociate', 'link-297');">negociate</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-298', 'Dispatcher', 'link-38');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-op">=</tt> <tt class="py-name">sm</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'session'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-comment"># Server don't want us to initialize a session</tt> </tt>
+<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt id="link-299" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-299', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'No session required.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_bound</tt><tt class="py-op">(</tt><tt class="py-string">'ok'</tt><tt class="py-op">)</tt> </tt>
+<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-300', 'SendAndWaitForResponse', 'link-216');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt><tt id="link-301" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-301', 'Protocol', 'link-13');">Protocol</a></tt><tt class="py-op">(</tt><tt class="py-string">'iq'</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-302" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-302', 'Node', 'link-9');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'session'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt><tt id="link-303" class="py-name"><a title="nbxmpp.protocol.NS_SESSION" class="py-name" href="#" onclick="return doclink('link-303', 'NS_SESSION', 'link-2');">NS_SESSION</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> <tt class="py-name">func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind._on_session()=nbxmpp.auth_nb.NonBlockingBind-class.html#_on_session"><a title="nbxmpp.auth_nb.NonBlockingBind._on_session" class="py-name" href="#" onclick="return doclink('link-304', '_on_session', 'link-304');">_on_session</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> <tt id="link-305" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-305', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Binding failed: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-306', 'getTag', 'link-65');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_bound</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"> <tt id="link-307" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-307', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Binding failed: timeout expired.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_bound</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBind._on_session"></a><div id="NonBlockingBind._on_session-def"><a name="L715"></a><tt class="py-lineno">715</tt> <a class="py-toggle" href="#" id="NonBlockingBind._on_session-toggle" onclick="return toggle('NonBlockingBind._on_session');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.auth_nb.NonBlockingBind-class.html#_on_session">_on_session</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBind._on_session-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBind._on_session-expanded"><a name="L716"></a><tt class="py-lineno">716</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-308', 'onreceive', 'link-277');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-309" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-309', 'isResultNode', 'link-11');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L718"></a><tt class="py-lineno">718</tt> <tt class="py-line"> <tt id="link-310" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-310', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Successfully opened session.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_bound</tt><tt class="py-op">(</tt><tt class="py-string">'ok'</tt><tt class="py-op">)</tt> </tt>
+<a name="L721"></a><tt class="py-lineno">721</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"> <tt id="link-311" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-311', 'log', 'link-20');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Session open failed.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_bound</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.auth_nb.NonBlockingBind-class.html b/doc/apidocs/nbxmpp.auth_nb.NonBlockingBind-class.html
new file mode 100644
index 0000000..5a942c7
--- /dev/null
+++ b/doc/apidocs/nbxmpp.auth_nb.NonBlockingBind-class.html
@@ -0,0 +1,475 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.auth_nb.NonBlockingBind</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.auth_nb-module.html">Module&nbsp;auth_nb</a> ::
+ Class&nbsp;NonBlockingBind
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.auth_nb.NonBlockingBind-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingBind</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_a" name="uml_class_diagram_for_nbxmpp_a">
+<area shape="rect" id="node0" href="nbxmpp.auth_nb.NonBlockingBind-class.html#__init__" title="nbxmpp.auth_nb.NonBlockingBind.__init__" alt="" coords="17,153,389,172"/>
+<area shape="rect" id="node0" href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugin" title="Start resource binding, if allowed at this time. Used internally." alt="" coords="17,172,389,191"/>
+<area shape="rect" id="node0" href="nbxmpp.auth_nb.NonBlockingBind-class.html#FeaturesHandler" title="Determine if server supports resource binding and set some internal attributes accordingly." alt="" coords="17,191,389,209"/>
+<area shape="rect" id="node0" href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugout" title="Remove Bind handler from owner&#39;s dispatcher. Used internally" alt="" coords="17,209,389,228"/>
+<area shape="rect" id="node0" href="nbxmpp.auth_nb.NonBlockingBind-class.html#NonBlockingBind" title="Perform binding. Use provided resource name or random (if not provided)." alt="" coords="17,228,389,247"/>
+<area shape="rect" id="node1" href="nbxmpp.auth_nb.NonBlockingBind-class.html" title="Bind some JID to the current connection to allow router know of our location. Must be plugged after successful SASL auth" alt="" coords="5,121,400,253"/>
+<area shape="rect" id="node1" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="91,39,316,57"/>
+<area shape="rect" id="node1" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="91,57,316,76"/>
+<area shape="rect" id="node1" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="91,76,316,95"/>
+<area shape="rect" id="node2" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="79,6,327,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_a.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_a" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Bind some JID to the current connection to allow router know of our
+location. Must be plugged after successful SASL auth
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugin" class="summary-sig-name">plugin</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span><br />
+ Start resource binding, if allowed at this time. Used internally.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.plugin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#FeaturesHandler" class="summary-sig-name">FeaturesHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">conn</span>,
+ <span class="summary-sig-arg">feats</span>)</span><br />
+ Determine if server supports resource binding and set some internal
+attributes accordingly.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.FeaturesHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#plugout" class="summary-sig-name">plugout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Remove Bind handler from owner's dispatcher. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.plugout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#NonBlockingBind" class="summary-sig-name">NonBlockingBind</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resource</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">on_bound</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Perform binding. Use provided resource name or random (if not provided).</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.NonBlockingBind">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#_on_bound" class="summary-sig-name" onclick="show_private();">_on_bound</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resp</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind._on_bound">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingBind-class.html#_on_session" class="summary-sig-name" onclick="show_private();">_on_session</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resp</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind._on_session">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugin</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.plugin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Start resource binding, if allowed at this time. Used internally.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="FeaturesHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">FeaturesHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">conn</span>,
+ <span class="sig-arg">feats</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.FeaturesHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Determine if server supports resource binding and set some internal
+attributes accordingly.</p>
+<p>It also checks if server supports stream management</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.plugout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Remove Bind handler from owner's dispatcher. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="NonBlockingBind"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">NonBlockingBind</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resource</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">on_bound</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind.NonBlockingBind">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Perform binding. Use provided resource name or random (if not provided).
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_bound"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_bound</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resp</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind._on_bound">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_session"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_session</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resp</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingBind._on_session">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.auth_nb.NonBlockingNonSASL-class.html b/doc/apidocs/nbxmpp.auth_nb.NonBlockingNonSASL-class.html
new file mode 100644
index 0000000..f515bf5
--- /dev/null
+++ b/doc/apidocs/nbxmpp.auth_nb.NonBlockingNonSASL-class.html
@@ -0,0 +1,401 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.auth_nb.NonBlockingNonSASL</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.auth_nb-module.html">Module&nbsp;auth_nb</a> ::
+ Class&nbsp;NonBlockingNonSASL
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingNonSASL</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_a_2" name="uml_class_diagram_for_nbxmpp_a_2">
+<area shape="rect" id="node2" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__" title="Caches username, password and resource for auth" alt="" coords="17,153,332,172"/>
+<area shape="rect" id="node2" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin" title="Determine the best auth method (digest/0k/plain) and use it for auth. Returns used method name on success. Used internally" alt="" coords="17,172,332,191"/>
+<area shape="rect" id="node1" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html" title="Implements old Non&#45;SASL (JEP&#45;0078) authentication used in jabberd1.4 and transport authentication" alt="" coords="5,121,344,197"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="61,39,287,57"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="61,57,287,76"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="61,76,287,95"/>
+<area shape="rect" id="node2" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="49,6,297,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_a_2.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_a_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Implements old Non-SASL (JEP-0078) authentication used in jabberd1.4 and
+transport authentication
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">user</span>,
+ <span class="summary-sig-arg">password</span>,
+ <span class="summary-sig-arg">resource</span>,
+ <span class="summary-sig-arg">on_auth</span>)</span><br />
+ Caches username, password and resource for auth</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin" class="summary-sig-name">plugin</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span><br />
+ Determine the best auth method (digest/0k/plain) and use it for auth.
+Returns used method name on success. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL.plugin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_username" class="summary-sig-name" onclick="show_private();">_on_username</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resp</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL._on_username">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_password" class="summary-sig-name" onclick="show_private();">_on_password</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">password</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL._on_password">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html#_on_auth" class="summary-sig-name" onclick="show_private();">_on_auth</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resp</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL._on_auth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">user</span>,
+ <span class="sig-arg">password</span>,
+ <span class="sig-arg">resource</span>,
+ <span class="sig-arg">on_auth</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Caches username, password and resource for auth
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugin</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL.plugin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Determine the best auth method (digest/0k/plain) and use it for auth.
+Returns used method name on success. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_username"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_username</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resp</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL._on_username">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_password"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_password</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">password</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL._on_password">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_auth"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_auth</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resp</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#NonBlockingNonSASL._on_auth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.auth_nb.SASL-class.html b/doc/apidocs/nbxmpp.auth_nb.SASL-class.html
new file mode 100644
index 0000000..12d650c
--- /dev/null
+++ b/doc/apidocs/nbxmpp.auth_nb.SASL-class.html
@@ -0,0 +1,578 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.auth_nb.SASL</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.auth_nb-module.html">Module&nbsp;auth_nb</a> ::
+ Class&nbsp;SASL
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.auth_nb.SASL-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SASL</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_a_3" name="uml_class_diagram_for_nbxmpp_a_3">
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#__init__" title="nbxmpp.auth_nb.SASL.__init__" alt="" coords="17,153,301,172"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#plugin" title="nbxmpp.auth_nb.SASL.plugin" alt="" coords="17,172,301,191"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#plugout" title="Remove SASL handlers from owner&#39;s dispatcher. Used internally" alt="" coords="17,191,301,209"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#auth" title="Start authentication. Result can be obtained via &quot;SASL.startsasl&quot; attribute and will be either SASL_SUCCESS or SASL_FAILURE" alt="" coords="17,209,301,228"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#FeaturesHandler" title="Used to determine if server supports SASL auth. Used internally" alt="" coords="17,228,301,247"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#MechanismHandler" title="nbxmpp.auth_nb.SASL.MechanismHandler" alt="" coords="17,247,301,265"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#SASLHandler" title="Perform next SASL auth step. Used internally" alt="" coords="17,265,301,284"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.SASL-class.html#set_password" title="nbxmpp.auth_nb.SASL.set_password" alt="" coords="17,284,301,303"/>
+<area shape="rect" id="node1" href="nbxmpp.auth_nb.SASL-class.html" title="Implements SASL authentication. Can be plugged into NonBlockingClient to start authentication" alt="" coords="5,121,312,309"/>
+<area shape="rect" id="node5" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="47,39,272,57"/>
+<area shape="rect" id="node5" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="47,57,272,76"/>
+<area shape="rect" id="node5" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="47,76,272,95"/>
+<area shape="rect" id="node2" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="35,6,283,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_a_3.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_a_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Implements SASL authentication. Can be plugged into NonBlockingClient
+to start authentication
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">username</span>,
+ <span class="summary-sig-arg">password</span>,
+ <span class="summary-sig-arg">on_sasl</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#plugin" class="summary-sig-name">plugin</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.plugin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#plugout" class="summary-sig-name">plugout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Remove SASL handlers from owner's dispatcher. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.plugout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#auth" class="summary-sig-name">auth</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Start authentication. Result can be obtained via &quot;SASL.startsasl&quot;
+attribute and will be either SASL_SUCCESS or SASL_FAILURE</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.auth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#FeaturesHandler" class="summary-sig-name">FeaturesHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">conn</span>,
+ <span class="summary-sig-arg">feats</span>)</span><br />
+ Used to determine if server supports SASL auth. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.FeaturesHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#MechanismHandler" class="summary-sig-name">MechanismHandler</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.MechanismHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#SASLHandler" class="summary-sig-name">SASLHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">conn</span>,
+ <span class="summary-sig-arg">challenge</span>)</span><br />
+ Perform next SASL auth step. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.SASLHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#set_password" class="summary-sig-name">set_password</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">password</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.set_password">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Static Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-StaticMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.auth_nb.SASL-class.html#_convert_to_iso88591" class="summary-sig-name" onclick="show_private();">_convert_to_iso88591</a>(<span class="summary-sig-arg">string</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL._convert_to_iso88591">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">username</span>,
+ <span class="sig-arg">password</span>,
+ <span class="sig-arg">on_sasl</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>username</code></strong> - XMPP username</li>
+ <li><strong class="pname"><code>password</code></strong> - XMPP password</li>
+ <li><strong class="pname"><code>on_sasl</code></strong> - Callback, will be called after each SASL auth-step.</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugin</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.plugin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.plugout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Remove SASL handlers from owner's dispatcher. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="auth"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">auth</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.auth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Start authentication. Result can be obtained via &quot;SASL.startsasl&quot;
+attribute and will be either SASL_SUCCESS or SASL_FAILURE</p>
+<p>Note that successfull auth will take at least two Dispatcher.Process()
+calls.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="FeaturesHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">FeaturesHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">conn</span>,
+ <span class="sig-arg">feats</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.FeaturesHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Used to determine if server supports SASL auth. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="MechanismHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">MechanismHandler</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.MechanismHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASLHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">SASLHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">conn</span>,
+ <span class="sig-arg">challenge</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.SASLHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Perform next SASL auth step. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_convert_to_iso88591"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_convert_to_iso88591</span>(<span class="sig-arg">string</span>)</span>
+ <br /><em class="fname">Static Method</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL._convert_to_iso88591">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_password"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_password</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">password</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.auth_nb-pysrc.html#SASL.set_password">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.bosh-module.html b/doc/apidocs/nbxmpp.bosh-module.html
new file mode 100644
index 0000000..57bd31b
--- /dev/null
+++ b/doc/apidocs/nbxmpp.bosh-module.html
@@ -0,0 +1,424 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.bosh</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;bosh
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.bosh-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module bosh</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.bosh-pysrc.html">source&nbsp;code</a></span></p>
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh.NonBlockingBOSH-class.html" class="summary-name">NonBlockingBOSH</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh.AckChecker-class.html" class="summary-name">AckChecker</a><br />
+ Class for generating rids and generating and checking acknowledgements in
+BOSH messages
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh.KeyStack-class.html" class="summary-name">KeyStack</a><br />
+ Class implementing key sequences for BOSH messages
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh-module.html#get_rand_number" class="summary-sig-name">get_rand_number</a>()</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#get_rand_number">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.bosh')">logging.getLogger('nbxmpp.bosh')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh-module.html#KEY_COUNT" class="summary-name">KEY_COUNT</a> = <code title="10">10</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh-module.html#FAKE_DESCRIPTOR" class="summary-name">FAKE_DESCRIPTOR</a> = <code title="-1337">-1337</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh-module.html#bosh_errors" class="summary-name">bosh_errors</a> = <code title="{'bad-request': 'The format of an HTTP header or binding element recei\
+ved from the client is unacceptable (e.g., syntax error), or Script Sy\
+ntax is not supported.',
+ 'host-gone': 'The target domain specified in the &quot;to&quot; attribute or th\
+e target host or port specified in the &quot;route&quot; attribute is no longer \
+serviced by the connection manager.',
+ 'host-unknown': 'The target domain specified in the &quot;to&quot; attribute or\
+ the target host or port specified in the &quot;route&quot; attribute is unknown\
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">bad-request</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">The format of an HTTP header or</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.bosh-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="locale">locale</span>,
+ <span title="random">random</span>,
+ <span title="hashlib.sha1">sha1</span>,
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html" title="nbxmpp.transports_nb.NonBlockingTransport">NonBlockingTransport</a>,
+ <a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" title="nbxmpp.transports_nb.NonBlockingHTTPBOSH">NonBlockingHTTPBOSH</a>,
+ <span title="nbxmpp.transports_nb.CONNECTED">CONNECTED</span>,
+ <span title="nbxmpp.transports_nb.CONNECTING">CONNECTING</span>,
+ <span title="nbxmpp.transports_nb.DISCONNECTED">DISCONNECTED</span>,
+ <span title="nbxmpp.transports_nb.DISCONNECTING">DISCONNECTING</span>,
+ <a href="nbxmpp.transports_nb-module.html#urisplit" title="nbxmpp.transports_nb.urisplit">urisplit</a>,
+ <span title="nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS">DISCONNECT_TIMEOUT_SECONDS</span>,
+ <a href="nbxmpp.protocol.BOSHBody-class.html" title="nbxmpp.protocol.BOSHBody">BOSHBody</a>,
+ <a href="nbxmpp.protocol.Protocol-class.html" title="nbxmpp.protocol.Protocol">Protocol</a>,
+ <span title="nbxmpp.protocol.NS_CLIENT">NS_CLIENT</span>,
+ <a href="nbxmpp.simplexml.Node-class.html" title="nbxmpp.simplexml.Node">Node</a>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="get_rand_number"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_rand_number</span>()</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#get_rand_number">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.bosh')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="KEY_COUNT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">KEY_COUNT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+10
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="FAKE_DESCRIPTOR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">FAKE_DESCRIPTOR</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+-1337
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="bosh_errors"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">bosh_errors</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">bad-request</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">The format of an HTTP header or binding element recei</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">ved from the client is unacceptable (e.g., syntax error), or Script Sy</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">ntax is not supported.</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">host-gone</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">The target domain specified in the &quot;to&quot; attribute or th</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">e target host or port specified in the &quot;route&quot; attribute is no longer </code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">serviced by the connection manager.</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">host-unknown</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">The target domain specified in the &quot;to&quot; attribute or</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string"> the target host or port specified in the &quot;route&quot; attribute is unknown</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.bosh-pysrc.html b/doc/apidocs/nbxmpp.bosh-pysrc.html
new file mode 100644
index 0000000..f6e3ca2
--- /dev/null
+++ b/doc/apidocs/nbxmpp.bosh-pysrc.html
@@ -0,0 +1,910 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.bosh</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;bosh
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.bosh-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.bosh-module.html">Module nbxmpp.bosh</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## bosh.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2008 Tomas Karasek &lt;tom.to.the.k@gmail.com&gt;</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## This file is part of Gajim.</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## Gajim is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## by the Free Software Foundation; version 3 only.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## Gajim is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment">## You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment">## along with Gajim. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">locale</tt><tt class="py-op">,</tt> <tt class="py-name">random</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">hashlib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">sha1</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.transports_nb=nbxmpp.transports_nb-module.html"><a title="nbxmpp.transports_nb" class="py-name" href="#" onclick="return doclink('link-0', 'transports_nb', 'link-0');">transports_nb</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Class nbxmpp.transports_nb.NonBlockingTransport=nbxmpp.transports_nb.NonBlockingTransport-class.html"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-1', 'NonBlockingTransport', 'link-1');">NonBlockingTransport</a></tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name" targets="Class nbxmpp.transports_nb.NonBlockingHTTPBOSH=nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html"><a title="nbxmpp.transports_nb.NonBlockingHTTPBOSH" class="py-name" href="#" onclick="return doclink('link-2', 'NonBlockingHTTPBOSH', 'link-2');">NonBlockingHTTPBOSH</a></tt><tt class="py-op">,</tt>\ </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> <tt id="link-3" class="py-name" targets="Variable nbxmpp.transports_nb.CONNECTED=nbxmpp.transports_nb-module.html#CONNECTED"><a title="nbxmpp.transports_nb.CONNECTED" class="py-name" href="#" onclick="return doclink('link-3', 'CONNECTED', 'link-3');">CONNECTED</a></tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Variable nbxmpp.transports_nb.CONNECTING=nbxmpp.transports_nb-module.html#CONNECTING"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-4', 'CONNECTING', 'link-4');">CONNECTING</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Variable nbxmpp.transports_nb.DISCONNECTED=nbxmpp.transports_nb-module.html#DISCONNECTED"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-5', 'DISCONNECTED', 'link-5');">DISCONNECTED</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Variable nbxmpp.transports_nb.DISCONNECTING=nbxmpp.transports_nb-module.html#DISCONNECTING"><a title="nbxmpp.transports_nb.DISCONNECTING" class="py-name" href="#" onclick="return doclink('link-6', 'DISCONNECTING', 'link-6');">DISCONNECTING</a></tt><tt class="py-op">,</tt>\ </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt id="link-7" class="py-name" targets="Function nbxmpp.transports_nb.urisplit()=nbxmpp.transports_nb-module.html#urisplit"><a title="nbxmpp.transports_nb.urisplit" class="py-name" href="#" onclick="return doclink('link-7', 'urisplit', 'link-7');">urisplit</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Variable nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS=nbxmpp.transports_nb-module.html#DISCONNECT_TIMEOUT_SECONDS"><a title="nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-8', 'DISCONNECT_TIMEOUT_SECONDS', 'link-8');">DISCONNECT_TIMEOUT_SECONDS</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-9', 'protocol', 'link-9');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Class nbxmpp.protocol.BOSHBody=nbxmpp.protocol.BOSHBody-class.html"><a title="nbxmpp.protocol.BOSHBody" class="py-name" href="#" onclick="return doclink('link-10', 'BOSHBody', 'link-10');">BOSHBody</a></tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Class nbxmpp.protocol.Protocol=nbxmpp.protocol.Protocol-class.html"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-11', 'Protocol', 'link-11');">Protocol</a></tt><tt class="py-op">,</tt> <tt id="link-12" class="py-name" targets="Variable nbxmpp.protocol.NS_CLIENT=nbxmpp.protocol-module.html#NS_CLIENT"><a title="nbxmpp.protocol.NS_CLIENT" class="py-name" href="#" onclick="return doclink('link-12', 'NS_CLIENT', 'link-12');">NS_CLIENT</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name" targets="Module nbxmpp.simplexml=nbxmpp.simplexml-module.html"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-13', 'simplexml', 'link-13');">simplexml</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-14', 'Node', 'link-14');">Node</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-15', 'log', 'link-15');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.bosh'</tt><tt class="py-op">)</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable nbxmpp.bosh.KEY_COUNT=nbxmpp.bosh-module.html#KEY_COUNT"><a title="nbxmpp.bosh.KEY_COUNT" class="py-name" href="#" onclick="return doclink('link-16', 'KEY_COUNT', 'link-16');">KEY_COUNT</a></tt> <tt class="py-op">=</tt> <tt class="py-number">10</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-comment"># Fake file descriptor - it's used for setting read_timeout in idlequeue for</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment"># BOSH Transport. In TCP-derived transports this is file descriptor of socket.</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt id="link-17" class="py-name" targets="Variable nbxmpp.bosh.FAKE_DESCRIPTOR=nbxmpp.bosh-module.html#FAKE_DESCRIPTOR"><a title="nbxmpp.bosh.FAKE_DESCRIPTOR" class="py-name" href="#" onclick="return doclink('link-17', 'FAKE_DESCRIPTOR', 'link-17');">FAKE_DESCRIPTOR</a></tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1337</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH"></a><div id="NonBlockingBOSH-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH-toggle" onclick="return toggle('NonBlockingBOSH');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html">NonBlockingBOSH</a><tt class="py-op">(</tt><tt class="py-base-class">NonBlockingTransport</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingBOSH-expanded"><a name="NonBlockingBOSH.__init__"></a><div id="NonBlockingBOSH.__init__-def"><a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.__init__-toggle" onclick="return toggle('NonBlockingBOSH.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">raise_event</tt><tt class="py-op">,</tt> <tt class="py-param">on_disconnect</tt><tt class="py-op">,</tt> <tt class="py-param">idlequeue</tt><tt class="py-op">,</tt> <tt class="py-param">estabilish_tls</tt><tt class="py-op">,</tt> <tt class="py-param">certs</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-param">xmpp_server</tt><tt class="py-op">,</tt> <tt class="py-param">domain</tt><tt class="py-op">,</tt> <tt class="py-param">bosh_dict</tt><tt class="py-op">,</tt> <tt class="py-param">proxy_creds</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.__init__-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt id="link-18" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-18', 'NonBlockingTransport', 'link-1');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-19', '__init__', 'link-19');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient.raise_event()=nbxmpp.client_nb.NonBlockingClient-class.html#raise_event"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-20', 'raise_event', 'link-20');">raise_event</a></tt><tt class="py-op">,</tt> <tt class="py-name">on_disconnect</tt><tt class="py-op">,</tt> <tt id="link-21" class="py-name" targets="Module nbxmpp.idlequeue=nbxmpp.idlequeue-module.html"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-21', 'idlequeue', 'link-21');">idlequeue</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-name">estabilish_tls</tt><tt class="py-op">,</tt> <tt class="py-name">certs</tt><tt class="py-op">)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_sid</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_xml_lang</tt> <tt class="py-op">=</tt> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_xml_lang</tt> <tt class="py-op">=</tt> <tt class="py-string">'en'</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_version</tt> <tt class="py-op">=</tt> <tt class="py-string">'HTTP/1.1'</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_persistent</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_pipelining</tt> <tt class="py-op">=</tt> <tt class="py-name">bosh_dict</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_http_pipelining'</tt><tt class="py-op">]</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_to</tt> <tt class="py-op">=</tt> <tt class="py-name">domain</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">route_host</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">route_port</tt> <tt class="py-op">=</tt> <tt class="py-name">xmpp_server</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_wait</tt> <tt class="py-op">=</tt> <tt class="py-name">bosh_dict</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_wait'</tt><tt class="py-op">]</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_pipelining</tt><tt class="py-op">:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_hold</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_hold</tt> <tt class="py-op">=</tt> <tt class="py-name">bosh_dict</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_hold'</tt><tt class="py-op">]</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_requests</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_hold</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">bosh_dict</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_uri'</tt><tt class="py-op">]</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_content</tt> <tt class="py-op">=</tt> <tt class="py-name">bosh_dict</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_content'</tt><tt class="py-op">]</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">over_proxy</tt> <tt class="py-op">=</tt> <tt class="py-name">bosh_dict</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_useproxy'</tt><tt class="py-op">]</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">estabilish_tls</tt><tt class="py-op">:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_secure</tt> <tt class="py-op">=</tt> <tt class="py-string">'true'</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_secure</tt> <tt class="py-op">=</tt> <tt class="py-string">'false'</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">use_proxy_auth</tt> <tt class="py-op">=</tt> <tt class="py-name">bosh_dict</tt><tt class="py-op">[</tt><tt class="py-string">'useauth'</tt><tt class="py-op">]</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_creds</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy_creds</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wait_cb_time</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prio_bosh_stanzas</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_recv_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_recv_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key_stack</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack_checker</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_init</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">over_proxy</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">estabilish_tls</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'http'</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-comment"># with SSL over proxy, we do HTTP CONNECT to proxy to open a channel to</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-comment"># BOSH Connection Manager</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="nbxmpp.transports_nb.urisplit" class="py-name" href="#" onclick="return doclink('link-22', 'urisplit', 'link-7');">urisplit</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_uri</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'xmpp_server'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'credentials'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_creds</tt> </tt>
+</div><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.connect"></a><div id="NonBlockingBOSH.connect-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.connect-toggle" onclick="return toggle('NonBlockingBOSH.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">conn_5tuple</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect_failure</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.connect-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-23', 'NonBlockingTransport', 'link-1');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.connect()=nbxmpp.bosh.NonBlockingBOSH-class.html#connect,Method nbxmpp.client_nb.NonBlockingClient.connect()=nbxmpp.client_nb.NonBlockingClient-class.html#connect,Method nbxmpp.transports_nb.NonBlockingTCP.connect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#connect,Method nbxmpp.transports_nb.NonBlockingTransport.connect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#connect"><a title="nbxmpp.bosh.NonBlockingBOSH.connect
+nbxmpp.client_nb.NonBlockingClient.connect
+nbxmpp.transports_nb.NonBlockingTCP.connect
+nbxmpp.transports_nb.NonBlockingTransport.connect" class="py-name" href="#" onclick="return doclink('link-24', 'connect', 'link-24');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">conn_5tuple</tt><tt class="py-op">,</tt> <tt class="py-name">on_connect</tt><tt class="py-op">,</tt> <tt class="py-name">on_connect_failure</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-25" class="py-name"><a title="nbxmpp.bosh.FAKE_DESCRIPTOR" class="py-name" href="#" onclick="return doclink('link-25', 'FAKE_DESCRIPTOR', 'link-17');">FAKE_DESCRIPTOR</a></tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt id="link-26" class="py-name"><a title="nbxmpp.bosh.FAKE_DESCRIPTOR" class="py-name" href="#" onclick="return doclink('link-26', 'FAKE_DESCRIPTOR', 'link-17');">FAKE_DESCRIPTOR</a></tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="nbxmpp.bosh.FAKE_DESCRIPTOR" class="py-name" href="#" onclick="return doclink('link-27', 'FAKE_DESCRIPTOR', 'link-17');">FAKE_DESCRIPTOR</a></tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="nbxmpp.bosh.FAKE_DESCRIPTOR" class="py-name" href="#" onclick="return doclink('link-28', 'FAKE_DESCRIPTOR', 'link-17');">FAKE_DESCRIPTOR</a></tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prio_bosh_stanzas</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key_stack</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name" targets="Class nbxmpp.bosh.KeyStack=nbxmpp.bosh.KeyStack-class.html"><a title="nbxmpp.bosh.KeyStack" class="py-name" href="#" onclick="return doclink('link-29', 'KeyStack', 'link-29');">KeyStack</a></tt><tt class="py-op">(</tt><tt id="link-30" class="py-name"><a title="nbxmpp.bosh.KEY_COUNT" class="py-name" href="#" onclick="return doclink('link-30', 'KEY_COUNT', 'link-16');">KEY_COUNT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack_checker</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name" targets="Class nbxmpp.bosh.AckChecker=nbxmpp.bosh.AckChecker-class.html"><a title="nbxmpp.bosh.AckChecker" class="py-name" href="#" onclick="return doclink('link-31', 'AckChecker', 'link-31');">AckChecker</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_init</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.get_new_http_socket()=nbxmpp.bosh.NonBlockingBOSH-class.html#get_new_http_socket"><a title="nbxmpp.bosh.NonBlockingBOSH.get_new_http_socket" class="py-name" href="#" onclick="return doclink('link-32', 'get_new_http_socket', 'link-32');">get_new_http_socket</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started()=nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started"><a title="nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started" class="py-name" href="#" onclick="return doclink('link-33', '_tcp_connecting_started', 'link-33');">_tcp_connecting_started</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.connect
+nbxmpp.client_nb.NonBlockingClient.connect
+nbxmpp.transports_nb.NonBlockingTCP.connect
+nbxmpp.transports_nb.NonBlockingTransport.connect" class="py-name" href="#" onclick="return doclink('link-34', 'connect', 'link-24');">connect</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">conn_5tuple</tt> <tt class="py-op">=</tt> <tt class="py-name">conn_5tuple</tt><tt class="py-op">,</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">on_connect</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH._on_connect()=nbxmpp.bosh.NonBlockingBOSH-class.html#_on_connect,Method nbxmpp.client_nb.NonBlockingClient._on_connect()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_connect,Method nbxmpp.transports_nb.NonBlockingTCP._on_connect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect,Method nbxmpp.transports_nb.NonBlockingTransport._on_connect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-35', '_on_connect', 'link-35');">_on_connect</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">on_connect_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure()=nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure"><a title="nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure" class="py-name" href="#" onclick="return doclink('link-36', '_on_connect_failure', 'link-36');">_on_connect_failure</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH._on_connect"></a><div id="NonBlockingBOSH._on_connect-def"><a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH._on_connect-toggle" onclick="return toggle('NonBlockingBOSH._on_connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#_on_connect">_on_connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH._on_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH._on_connect-expanded"><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peerhost</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">peerhost</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt id="link-37" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-37', 'NonBlockingTransport', 'link-1');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-38', '_on_connect', 'link-35');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.set_timeout"></a><div id="NonBlockingBOSH.set_timeout-def"><a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.set_timeout-toggle" onclick="return toggle('NonBlockingBOSH.set_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout">set_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.set_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.set_timeout-expanded"><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.get_state()=nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-39', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt id="link-40" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-40', 'DISCONNECTED', 'link-5');">DISCONNECTED</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt id="link-41" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-41', 'NonBlockingTransport', 'link-1');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.set_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.set_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.set_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout" class="py-name" href="#" onclick="return doclink('link-42', 'set_timeout', 'link-42');">set_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt id="link-43" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-43', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'set_timeout: TIMEOUT NOT SET: state is %s, fd is %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-44', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.on_http_request_possible"></a><div id="NonBlockingBOSH.on_http_request_possible-def"><a name="L127"></a><tt class="py-lineno">127</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.on_http_request_possible-toggle" onclick="return toggle('NonBlockingBOSH.on_http_request_possible');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_http_request_possible">on_http_request_possible</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.on_http_request_possible-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.on_http_request_possible-expanded"><a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> Called when HTTP request it's possible to send a HTTP request. It can be when</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> socket is connected or when HTTP response arrived</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> There should be always one pending request to BOSH CM.</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt id="link-45" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-45', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'on_http_req possible, state:\n%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.get_current_state()=nbxmpp.bosh.NonBlockingBOSH-class.html#get_current_state"><a title="nbxmpp.bosh.NonBlockingBOSH.get_current_state" class="py-name" href="#" onclick="return doclink('link-46', 'get_current_state', 'link-46');">get_current_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-47', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt id="link-48" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-48', 'DISCONNECTED', 'link-5');">DISCONNECTED</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-comment">#Hack for making the non-secure warning dialog work</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">got_features</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> <tt class="py-string">'NonBlockingNonSASL'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> <tt class="py-string">'SASL'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send_BOSH()=nbxmpp.bosh.NonBlockingBOSH-class.html#send_BOSH"><a title="nbxmpp.bosh.NonBlockingBOSH.send_BOSH" class="py-name" href="#" onclick="return doclink('link-49', 'send_BOSH', 'link-49');">send_BOSH</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-comment"># If we already got features and no auth module was plugged yet, we are</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-comment"># probably waiting for confirmation of the "not-secure-connection" dialog.</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-comment"># We don't send HTTP request in that case.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-comment"># see http://lists.jabber.ru/pipermail/ejabberd/2008-August/004027.html</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send_BOSH" class="py-name" href="#" onclick="return doclink('link-50', 'send_BOSH', 'link-49');">send_BOSH</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.get_socket_in"></a><div id="NonBlockingBOSH.get_socket_in-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.get_socket_in-toggle" onclick="return toggle('NonBlockingBOSH.get_socket_in');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_socket_in">get_socket_in</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.get_socket_in-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.get_socket_in-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> Get sockets in desired state</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-51', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-name">state</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.get_free_socket"></a><div id="NonBlockingBOSH.get_free_socket-def"><a name="L161"></a><tt class="py-lineno">161</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.get_free_socket-toggle" onclick="return toggle('NonBlockingBOSH.get_free_socket');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_free_socket">get_free_socket</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.get_free_socket-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.get_free_socket-expanded"><a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> Select and returns socket eligible for sending a data to</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_pipelining</tt><tt class="py-op">:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.get_socket_in()=nbxmpp.bosh.NonBlockingBOSH-class.html#get_socket_in"><a title="nbxmpp.bosh.NonBlockingBOSH.get_socket_in" class="py-name" href="#" onclick="return doclink('link-52', 'get_socket_in', 'link-52');">get_socket_in</a></tt><tt class="py-op">(</tt><tt id="link-53" class="py-name"><a title="nbxmpp.transports_nb.CONNECTED" class="py-name" href="#" onclick="return doclink('link-53', 'CONNECTED', 'link-3');">CONNECTED</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">last_recv_time</tt><tt class="py-op">,</tt> <tt class="py-name">tmpsock</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-comment"># we're interested only in CONNECTED socket with no requests pending</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-54', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt id="link-55" class="py-name"><a title="nbxmpp.transports_nb.CONNECTED" class="py-name" href="#" onclick="return doclink('link-55', 'CONNECTED', 'link-3');">CONNECTED</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">pending_requests</tt><tt class="py-op">==</tt><tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-comment"># if there's more of them, we want the one with the least recent data receive</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-comment"># (lowest last_recv_time)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">last_recv_time</tt><tt class="py-op">==</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">last_recv_time</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">last_recv_time</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">last_recv_time</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">last_recv_time</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">tmpsock</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tmpsock</tt><tt class="py-op">:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tmpsock</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.send_BOSH"></a><div id="NonBlockingBOSH.send_BOSH-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.send_BOSH-toggle" onclick="return toggle('NonBlockingBOSH.send_BOSH');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#send_BOSH">send_BOSH</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.send_BOSH-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.send_BOSH-expanded"><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> Tries to send a stanza in payload by appeding it to a buffer and plugging a</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> free socket for writing.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">total_pending_reqs</tt> <tt class="py-op">=</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">pending_requests</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-comment"># when called after HTTP response (Payload=None) and when there are already</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-comment"># some pending requests and no data to send, or when the socket is</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-comment"># disconnected, we do nothing</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">payload</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> \ </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">total_pending_reqs</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> \ </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> \ </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prio_bosh_stanzas</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> \ </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-56', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt id="link-57" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-57', 'DISCONNECTED', 'link-5');">DISCONNECTED</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-comment"># Add xmlns to stanza to help ejabberd server</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">payload</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-58', 'Protocol', 'link-11');">Protocol</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-59', 'getNamespace', 'link-59');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method nbxmpp.simplexml.Node.setNamespace()=nbxmpp.simplexml.Node-class.html#setNamespace"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-60', 'setNamespace', 'link-60');">setNamespace</a></tt><tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="nbxmpp.protocol.NS_CLIENT" class="py-name" href="#" onclick="return doclink('link-61', 'NS_CLIENT', 'link-12');">NS_CLIENT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-comment"># now the payload is put to buffer and will be sent at some point</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.append_stanza()=nbxmpp.bosh.NonBlockingBOSH-class.html#append_stanza"><a title="nbxmpp.bosh.NonBlockingBOSH.append_stanza" class="py-name" href="#" onclick="return doclink('link-62', 'append_stanza', 'link-62');">append_stanza</a></tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-comment"># if we're about to make more requests than allowed, we don't send - stanzas will be</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-comment"># sent after HTTP response from CM, exception is when we're disconnecting - then we</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-comment"># send anyway</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">total_pending_reqs</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_requests</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-63', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">!=</tt><tt id="link-64" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTING" class="py-name" href="#" onclick="return doclink('link-64', 'DISCONNECTING', 'link-6');">DISCONNECTING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt id="link-65" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-65', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'attemp to make more requests than allowed by Connection Manager:\n%s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.get_current_state" class="py-name" href="#" onclick="return doclink('link-66', 'get_current_state', 'link-46');">get_current_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-comment"># when there's free CONNECTED socket, we plug it for write and the data will</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-comment"># be sent when write is possible</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.get_free_socket()=nbxmpp.bosh.NonBlockingBOSH-class.html#get_free_socket"><a title="nbxmpp.bosh.NonBlockingBOSH.get_free_socket" class="py-name" href="#" onclick="return doclink('link-67', 'get_free_socket', 'link-67');">get_free_socket</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.plug_socket()=nbxmpp.bosh.NonBlockingBOSH-class.html#plug_socket"><a title="nbxmpp.bosh.NonBlockingBOSH.plug_socket" class="py-name" href="#" onclick="return doclink('link-68', 'plug_socket', 'link-68');">plug_socket</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-comment"># if there is a connecting socket, we just wait for when it connects,</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-comment"># payload will be sent in a sec when the socket connects</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.get_socket_in" class="py-name" href="#" onclick="return doclink('link-69', 'get_socket_in', 'link-52');">get_socket_in</a></tt><tt class="py-op">(</tt><tt id="link-70" class="py-name"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-70', 'CONNECTING', 'link-4');">CONNECTING</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-comment"># being here means there are either DISCONNECTED sockets or all sockets are</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-comment"># CONNECTED with too many pending requests</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.get_socket_in" class="py-name" href="#" onclick="return doclink('link-71', 'get_socket_in', 'link-52');">get_socket_in</a></tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-72', 'DISCONNECTED', 'link-5');">DISCONNECTED</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-comment"># if we have DISCONNECTED socket, lets connect it and plug for send</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.connect_and_flush()=nbxmpp.bosh.NonBlockingBOSH-class.html#connect_and_flush"><a title="nbxmpp.bosh.NonBlockingBOSH.connect_and_flush" class="py-name" href="#" onclick="return doclink('link-73', 'connect_and_flush', 'link-73');">connect_and_flush</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-comment"># otherwise create and connect a new one</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">ss</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.get_new_http_socket" class="py-name" href="#" onclick="return doclink('link-74', 'get_new_http_socket', 'link-32');">get_new_http_socket</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">ss</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.connect_and_flush" class="py-name" href="#" onclick="return doclink('link-75', 'connect_and_flush', 'link-73');">connect_and_flush</a></tt><tt class="py-op">(</tt><tt class="py-name">ss</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+</div><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.plug_socket"></a><div id="NonBlockingBOSH.plug_socket-def"><a name="L240"></a><tt class="py-lineno">240</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.plug_socket-toggle" onclick="return toggle('NonBlockingBOSH.plug_socket');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#plug_socket">plug_socket</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.plug_socket-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.plug_socket-expanded"><a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.get_free_socket" class="py-name" href="#" onclick="return doclink('link-76', 'get_free_socket', 'link-67');">get_free_socket</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTCP._plug_idle()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle"><a title="nbxmpp.transports_nb.NonBlockingTCP._plug_idle" class="py-name" href="#" onclick="return doclink('link-77', '_plug_idle', 'link-77');">_plug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">writable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">readable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-78', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'=====!!!!!!!!====&gt; Couldn\'t get free socket in plug_socket())'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.build_stanza"></a><div id="NonBlockingBOSH.build_stanza-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.build_stanza-toggle" onclick="return toggle('NonBlockingBOSH.build_stanza');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#build_stanza">build_stanza</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">socket</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.build_stanza-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.build_stanza-expanded"><a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> Build a BOSH body tag from data in buffers and adds key, rid and ack</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-docstring"> attributes to it</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> This method is called from _do_send() of underlying transport. This is to</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> ensure rid and keys will be processed in correct order. If I generate</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> them before plugging a socket for write (and did it for two sockets/HTTP</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> connections) in parallel, they might be sent in wrong order, which</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> results in violating the BOSH session and server-side disconnect.</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prio_bosh_stanzas</tt><tt class="py-op">:</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">add_payload</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prio_bosh_stanzas</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">add_payload</tt><tt class="py-op">:</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method nbxmpp.simplexml.Node.setPayload()=nbxmpp.simplexml.Node-class.html#setPayload"><a title="nbxmpp.simplexml.Node.setPayload" class="py-name" href="#" onclick="return doclink('link-79', 'setPayload', 'link-79');">setPayload</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt><tt class="py-op">)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.boshify_stanzas()=nbxmpp.bosh.NonBlockingBOSH-class.html#boshify_stanzas"><a title="nbxmpp.bosh.NonBlockingBOSH.boshify_stanzas" class="py-name" href="#" onclick="return doclink('link-80', 'boshify_stanzas', 'link-80');">boshify_stanzas</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack_checker</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method nbxmpp.bosh.AckChecker.backup_stanza()=nbxmpp.bosh.AckChecker-class.html#backup_stanza"><a title="nbxmpp.bosh.AckChecker.backup_stanza" class="py-name" href="#" onclick="return doclink('link-81', 'backup_stanza', 'link-81');">backup_stanza</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">newkey</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key_stack</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method nbxmpp.bosh.KeyStack.get()=nbxmpp.bosh.KeyStack-class.html#get"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-82', 'get', 'link-82');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Method nbxmpp.simplexml.Node.setAttr()=nbxmpp.simplexml.Node-class.html#setAttr"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-83', 'setAttr', 'link-83');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'key'</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">newkey</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-84', 'setAttr', 'link-83');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'newkey'</tt><tt class="py-op">,</tt> <tt class="py-name">newkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt id="link-85" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-85', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'sending msg with rid=%s to sock %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-86', 'getAttr', 'link-86');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'rid'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.renew_bosh_wait_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#renew_bosh_wait_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.renew_bosh_wait_timeout" class="py-name" href="#" onclick="return doclink('link-87', 'renew_bosh_wait_timeout', 'link-87');">renew_bosh_wait_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_wait</tt> <tt class="py-op">+</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">stanza</tt> </tt>
+</div><a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.on_bosh_wait_timeout"></a><div id="NonBlockingBOSH.on_bosh_wait_timeout-def"><a name="L282"></a><tt class="py-lineno">282</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.on_bosh_wait_timeout-toggle" onclick="return toggle('NonBlockingBOSH.on_bosh_wait_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_bosh_wait_timeout">on_bosh_wait_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.on_bosh_wait_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.on_bosh_wait_timeout-expanded"><a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt id="link-88" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-88', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Connection Manager didn\'t respond within %s + 3 seconds --&gt; forcing disconnect'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_wait</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.disconnect()=nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect,Method nbxmpp.client_nb.NonBlockingClient.disconnect()=nbxmpp.client_nb.NonBlockingClient-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTCP.disconnect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTransport.disconnect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-89', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.renew_bosh_wait_timeout"></a><div id="NonBlockingBOSH.renew_bosh_wait_timeout-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.renew_bosh_wait_timeout-toggle" onclick="return toggle('NonBlockingBOSH.renew_bosh_wait_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#renew_bosh_wait_timeout">renew_bosh_wait_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.renew_bosh_wait_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.renew_bosh_wait_timeout-expanded"><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wait_cb_time</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.remove_bosh_wait_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#remove_bosh_wait_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.remove_bosh_wait_timeout" class="py-name" href="#" onclick="return doclink('link-90', 'remove_bosh_wait_timeout', 'link-90');">remove_bosh_wait_timeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">sched_time</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-91', 'idlequeue', 'link-21');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.set_alarm()=nbxmpp.idlequeue.IdleQueue-class.html#set_alarm"><a title="nbxmpp.idlequeue.IdleQueue.set_alarm" class="py-name" href="#" onclick="return doclink('link-92', 'set_alarm', 'link-92');">set_alarm</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.on_bosh_wait_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#on_bosh_wait_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.on_bosh_wait_timeout" class="py-name" href="#" onclick="return doclink('link-93', 'on_bosh_wait_timeout', 'link-93');">on_bosh_wait_timeout</a></tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wait_cb_time</tt> <tt class="py-op">=</tt> <tt class="py-name">sched_time</tt> </tt>
+</div><a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.remove_bosh_wait_timeout"></a><div id="NonBlockingBOSH.remove_bosh_wait_timeout-def"><a name="L293"></a><tt class="py-lineno">293</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.remove_bosh_wait_timeout-toggle" onclick="return toggle('NonBlockingBOSH.remove_bosh_wait_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#remove_bosh_wait_timeout">remove_bosh_wait_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.remove_bosh_wait_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.remove_bosh_wait_timeout-expanded"><a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-94', 'idlequeue', 'link-21');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.remove_alarm()=nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm"><a title="nbxmpp.idlequeue.IdleQueue.remove_alarm" class="py-name" href="#" onclick="return doclink('link-95', 'remove_alarm', 'link-95');">remove_alarm</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.on_bosh_wait_timeout" class="py-name" href="#" onclick="return doclink('link-96', 'on_bosh_wait_timeout', 'link-93');">on_bosh_wait_timeout</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wait_cb_time</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.on_persistent_fallback"></a><div id="NonBlockingBOSH.on_persistent_fallback-def"><a name="L298"></a><tt class="py-lineno">298</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.on_persistent_fallback-toggle" onclick="return toggle('NonBlockingBOSH.on_persistent_fallback');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_persistent_fallback">on_persistent_fallback</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">socket</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.on_persistent_fallback-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.on_persistent_fallback-expanded"><a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-docstring"> Called from underlying transport when server closes TCP connection</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"><tt class="py-docstring"> :param socket: disconnected transport object</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">http_persistent</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt id="link-97" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-97', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Fallback to nonpersistent HTTP (no pipelining as well)'</tt><tt class="py-op">)</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">http_persistent</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_persistent</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_pipelining</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-98', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.connect_and_flush" class="py-name" href="#" onclick="return doclink('link-99', 'connect_and_flush', 'link-73');">connect_and_flush</a></tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-100', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.handle_body_attrs"></a><div id="NonBlockingBOSH.handle_body_attrs-def"><a name="L316"></a><tt class="py-lineno">316</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.handle_body_attrs-toggle" onclick="return toggle('NonBlockingBOSH.handle_body_attrs');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#handle_body_attrs">handle_body_attrs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza_attrs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.handle_body_attrs-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.handle_body_attrs-expanded"><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"> Called for each incoming body stanza from dispatcher. Checks body</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> attributes.</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.remove_bosh_wait_timeout" class="py-name" href="#" onclick="return doclink('link-101', 'remove_bosh_wait_timeout', 'link-90');">remove_bosh_wait_timeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_init</tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'sid'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-comment"># session ID should be only in init response</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_sid</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'sid'</tt><tt class="py-op">]</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'requests'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_requests</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'requests'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'wait'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_wait</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'wait'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_init</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'ack'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'ack'</tt><tt class="py-op">]</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack_checker</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Method nbxmpp.bosh.AckChecker.process_incoming_ack()=nbxmpp.bosh.AckChecker-class.html#process_incoming_ack"><a title="nbxmpp.bosh.AckChecker.process_incoming_ack" class="py-name" href="#" onclick="return doclink('link-102', 'process_incoming_ack', 'link-102');">process_incoming_ack</a></tt><tt class="py-op">(</tt><tt class="py-name">ack</tt><tt class="py-op">=</tt><tt class="py-name">ack</tt><tt class="py-op">,</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_recv_socket</tt><tt class="py-op">)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'terminate'</tt><tt class="py-op">,</tt> <tt class="py-string">'terminal'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-name">condition</tt> <tt class="py-op">=</tt> <tt class="py-string">'n/a'</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'condition'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-name">condition</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'condition'</tt><tt class="py-op">]</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">condition</tt> <tt class="py-op">==</tt> <tt class="py-string">'n/a'</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt id="link-103" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-103', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Received sesion-ending terminating stanza'</tt><tt class="py-op">)</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt id="link-104" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-104', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Received terminating stanza: %s - %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">condition</tt><tt class="py-op">,</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt id="link-105" class="py-name" targets="Variable nbxmpp.bosh.bosh_errors=nbxmpp.bosh-module.html#bosh_errors"><a title="nbxmpp.bosh.bosh_errors" class="py-name" href="#" onclick="return doclink('link-105', 'bosh_errors', 'link-105');">bosh_errors</a></tt><tt class="py-op">[</tt><tt class="py-name">condition</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-106', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'error'</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-comment"># recoverable error</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+</div><a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.append_stanza"></a><div id="NonBlockingBOSH.append_stanza-def"><a name="L360"></a><tt class="py-lineno">360</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.append_stanza-toggle" onclick="return toggle('NonBlockingBOSH.append_stanza');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#append_stanza">append_stanza</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.append_stanza-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.append_stanza-expanded"><a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> Append stanza to a buffer to send</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-comment"># stanza is tuple of BOSH stanza and bool value for whether to add payload</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prio_bosh_stanzas</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-comment"># stanza is XMPP stanza. Will be boshified before send.</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.send"></a><div id="NonBlockingBOSH.send-def"><a name="L373"></a><tt class="py-lineno">373</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.send-toggle" onclick="return toggle('NonBlockingBOSH.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.send-expanded"><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send_BOSH" class="py-name" href="#" onclick="return doclink('link-107', 'send_BOSH', 'link-49');">send_BOSH</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.get_current_state"></a><div id="NonBlockingBOSH.get_current_state-def"><a name="L378"></a><tt class="py-lineno">378</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.get_current_state-toggle" onclick="return toggle('NonBlockingBOSH.get_current_state');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_current_state">get_current_state</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.get_current_state-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.get_current_state-expanded"><a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-string">'------ SOCKET_ID\tSOCKET_STATE\tPENDING_REQS\n'</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s------ %s\t%s\t%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-108', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">pending_requests</tt><tt class="py-op">)</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s------ prio stanzas: %s, queued XMPP stanzas: %s, not_acked stanzas: %s'</tt> \ </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prio_bosh_stanzas</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stanza_buffer</tt><tt class="py-op">,</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack_checker</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method nbxmpp.bosh.AckChecker.get_not_acked_rids()=nbxmpp.bosh.AckChecker-class.html#get_not_acked_rids"><a title="nbxmpp.bosh.AckChecker.get_not_acked_rids" class="py-name" href="#" onclick="return doclink('link-109', 'get_not_acked_rids', 'link-109');">get_not_acked_rids</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">t</tt> </tt>
+</div><a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.connect_and_flush"></a><div id="NonBlockingBOSH.connect_and_flush-def"><a name="L388"></a><tt class="py-lineno">388</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.connect_and_flush-toggle" onclick="return toggle('NonBlockingBOSH.connect_and_flush');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#connect_and_flush">connect_and_flush</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">socket</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.connect_and_flush-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.connect_and_flush-expanded"><a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.connect
+nbxmpp.client_nb.NonBlockingClient.connect
+nbxmpp.transports_nb.NonBlockingTCP.connect
+nbxmpp.transports_nb.NonBlockingTransport.connect" class="py-name" href="#" onclick="return doclink('link-110', 'connect', 'link-24');">connect</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">conn_5tuple</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">conn_5tuple</tt><tt class="py-op">,</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">on_connect</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible()=nbxmpp.bosh.NonBlockingBOSH-class.html#on_http_request_possible"><a title="nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible" class="py-name" href="#" onclick="return doclink('link-111', 'on_http_request_possible', 'link-111');">on_http_request_possible</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-name">on_connect_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-112', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.boshify_stanzas"></a><div id="NonBlockingBOSH.boshify_stanzas-def"><a name="L395"></a><tt class="py-lineno">395</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.boshify_stanzas-toggle" onclick="return toggle('NonBlockingBOSH.boshify_stanzas');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#boshify_stanzas">boshify_stanzas</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanzas</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">body_attrs</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.boshify_stanzas-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.boshify_stanzas-expanded"><a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"> Wraps zero to many stanzas by body tag with xmlns and sid</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt id="link-113" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-113', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'boshify_staza - type is: %s, stanza is %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">stanzas</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">stanzas</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="nbxmpp.protocol.BOSHBody" class="py-name" href="#" onclick="return doclink('link-114', 'BOSHBody', 'link-10');">BOSHBody</a></tt><tt class="py-op">(</tt><tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'sid'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_sid</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="nbxmpp.simplexml.Node.setPayload" class="py-name" href="#" onclick="return doclink('link-115', 'setPayload', 'link-79');">setPayload</a></tt><tt class="py-op">(</tt><tt class="py-name">stanzas</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tag</tt> </tt>
+</div><a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.send_init"></a><div id="NonBlockingBOSH.send_init-def"><a name="L405"></a><tt class="py-lineno">405</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.send_init-toggle" onclick="return toggle('NonBlockingBOSH.send_init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#send_init">send_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.send_init-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.send_init-expanded"><a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">after_SASL</tt><tt class="py-op">:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="nbxmpp.protocol.BOSHBody" class="py-name" href="#" onclick="return doclink('link-116', 'BOSHBody', 'link-10');">BOSHBody</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> <tt class="py-string">'to'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_to</tt><tt class="py-op">,</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-string">'sid'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_sid</tt><tt class="py-op">,</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-string">'xml:lang'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_xml_lang</tt><tt class="py-op">,</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-string">'xmpp:restart'</tt><tt class="py-op">:</tt> <tt class="py-string">'true'</tt><tt class="py-op">,</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-string">'secure'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_secure</tt><tt class="py-op">,</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-string">'xmlns:xmpp'</tt><tt class="py-op">:</tt> <tt class="py-string">'urn:xmpp:xbosh'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="nbxmpp.protocol.BOSHBody" class="py-name" href="#" onclick="return doclink('link-117', 'BOSHBody', 'link-10');">BOSHBody</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> <tt class="py-string">'content'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_content</tt><tt class="py-op">,</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-string">'hold'</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_hold</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-string">'route'</tt><tt class="py-op">:</tt> <tt class="py-string">'xmpp:%s:%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">route_host</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">route_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-string">'to'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_to</tt><tt class="py-op">,</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-string">'wait'</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_wait</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-string">'xml:lang'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_xml_lang</tt><tt class="py-op">,</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-string">'xmpp:version'</tt><tt class="py-op">:</tt> <tt class="py-string">'1.0'</tt><tt class="py-op">,</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-string">'ver'</tt><tt class="py-op">:</tt> <tt class="py-string">'1.6'</tt><tt class="py-op">,</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-string">'xmlns:xmpp'</tt><tt class="py-op">:</tt> <tt class="py-string">'urn:xmpp:xbosh'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send_BOSH" class="py-name" href="#" onclick="return doclink('link-118', 'send_BOSH', 'link-49');">send_BOSH</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.start_disconnect"></a><div id="NonBlockingBOSH.start_disconnect-def"><a name="L427"></a><tt class="py-lineno">427</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.start_disconnect-toggle" onclick="return toggle('NonBlockingBOSH.start_disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#start_disconnect">start_disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.start_disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.start_disconnect-expanded"><a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt id="link-119" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-119', 'NonBlockingTransport', 'link-1');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.start_disconnect()=nbxmpp.bosh.NonBlockingBOSH-class.html#start_disconnect,Method nbxmpp.transports_nb.NonBlockingTCP.start_disconnect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect,Method nbxmpp.transports_nb.NonBlockingTransport.start_disconnect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect"><a title="nbxmpp.bosh.NonBlockingBOSH.start_disconnect
+nbxmpp.transports_nb.NonBlockingTCP.start_disconnect
+nbxmpp.transports_nb.NonBlockingTransport.start_disconnect" class="py-name" href="#" onclick="return doclink('link-120', 'start_disconnect', 'link-120');">start_disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.renew_bosh_wait_timeout" class="py-name" href="#" onclick="return doclink('link-121', 'renew_bosh_wait_timeout', 'link-87');">renew_bosh_wait_timeout</a></tt><tt class="py-op">(</tt><tt id="link-122" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-122', 'DISCONNECT_TIMEOUT_SECONDS', 'link-8');">DISCONNECT_TIMEOUT_SECONDS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send_BOSH" class="py-name" href="#" onclick="return doclink('link-123', 'send_BOSH', 'link-49');">send_BOSH</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="nbxmpp.protocol.BOSHBody" class="py-name" href="#" onclick="return doclink('link-124', 'BOSHBody', 'link-10');">BOSHBody</a></tt><tt class="py-op">(</tt><tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'sid'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_sid</tt><tt class="py-op">,</tt> <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'terminate'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.get_new_http_socket"></a><div id="NonBlockingBOSH.get_new_http_socket-def"><a name="L434"></a><tt class="py-lineno">434</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.get_new_http_socket-toggle" onclick="return toggle('NonBlockingBOSH.get_new_http_socket');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_new_http_socket">get_new_http_socket</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.get_new_http_socket-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.get_new_http_socket-expanded"><a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">http_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'http_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bosh_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-string">'http_version'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_version</tt><tt class="py-op">,</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-string">'http_persistent'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_persistent</tt><tt class="py-op">,</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-string">'add_proxy_headers'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">over_proxy</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">estabilish_tls</tt><tt class="py-op">}</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">use_proxy_auth</tt><tt class="py-op">:</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-name">http_dict</tt><tt class="py-op">[</tt><tt class="py-string">'proxy_user'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">http_dict</tt><tt class="py-op">[</tt><tt class="py-string">'proxy_pass'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_creds</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingHTTPBOSH" class="py-name" href="#" onclick="return doclink('link-125', 'NonBlockingHTTPBOSH', 'link-2');">NonBlockingHTTPBOSH</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt id="link-126" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-126', 'raise_event', 'link-20');">raise_event</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-127', 'raise_event', 'link-20');">raise_event</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">on_disconnect</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-128', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt id="link-129" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-129', 'idlequeue', 'link-21');">idlequeue</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-130', 'idlequeue', 'link-21');">idlequeue</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-name">estabilish_tls</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">estabilish_tls</tt><tt class="py-op">,</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">certs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">certs</tt><tt class="py-op">,</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt id="link-131" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible" class="py-name" href="#" onclick="return doclink('link-131', 'on_http_request_possible', 'link-111');">on_http_request_possible</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible" class="py-name" href="#" onclick="return doclink('link-132', 'on_http_request_possible', 'link-111');">on_http_request_possible</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">http_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">http_dict</tt><tt class="py-op">,</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-name">proxy_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">,</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt id="link-133" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.on_persistent_fallback()=nbxmpp.bosh.NonBlockingBOSH-class.html#on_persistent_fallback"><a title="nbxmpp.bosh.NonBlockingBOSH.on_persistent_fallback" class="py-name" href="#" onclick="return doclink('link-133', 'on_persistent_fallback', 'link-133');">on_persistent_fallback</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.on_persistent_fallback" class="py-name" href="#" onclick="return doclink('link-134', 'on_persistent_fallback', 'link-133');">on_persistent_fallback</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-135', 'onreceive', 'link-135');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.on_received_http()=nbxmpp.bosh.NonBlockingBOSH-class.html#on_received_http"><a title="nbxmpp.bosh.NonBlockingBOSH.on_received_http" class="py-name" href="#" onclick="return doclink('link-136', 'on_received_http', 'link-136');">on_received_http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingHTTPBOSH.set_stanza_build_cb()=nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#set_stanza_build_cb"><a title="nbxmpp.transports_nb.NonBlockingHTTPBOSH.set_stanza_build_cb" class="py-name" href="#" onclick="return doclink('link-137', 'set_stanza_build_cb', 'link-137');">set_stanza_build_cb</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.build_stanza()=nbxmpp.bosh.NonBlockingBOSH-class.html#build_stanza"><a title="nbxmpp.bosh.NonBlockingBOSH.build_stanza" class="py-name" href="#" onclick="return doclink('link-138', 'build_stanza', 'link-138');">build_stanza</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.onreceive"></a><div id="NonBlockingBOSH.onreceive-def"><a name="L458"></a><tt class="py-lineno">458</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.onreceive-toggle" onclick="return toggle('NonBlockingBOSH.onreceive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive">onreceive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">recv_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.onreceive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.onreceive-expanded"><a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">recv_handler</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-name">recv_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Class nbxmpp.dispatcher_nb.Dispatcher=nbxmpp.dispatcher_nb.Dispatcher-class.html"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-139', 'Dispatcher', 'link-139');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking,Method nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-140', 'ProcessNonBlocking', 'link-140');">ProcessNonBlocking</a></tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_recv_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">recv_handler</tt> </tt>
+</div><a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.on_received_http"></a><div id="NonBlockingBOSH.on_received_http-def"><a name="L464"></a><tt class="py-lineno">464</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.on_received_http-toggle" onclick="return toggle('NonBlockingBOSH.on_received_http');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_received_http">on_received_http</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">socket</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.on_received_http-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.on_received_http-expanded"><a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_recv_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_recv_handler</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingBOSH.disconnect"></a><div id="NonBlockingBOSH.disconnect-def"><a name="L469"></a><tt class="py-lineno">469</tt> <a class="py-toggle" href="#" id="NonBlockingBOSH.disconnect-toggle" onclick="return toggle('NonBlockingBOSH.disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect">disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingBOSH.disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingBOSH.disconnect-expanded"><a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.remove_bosh_wait_timeout" class="py-name" href="#" onclick="return doclink('link-141', 'remove_bosh_wait_timeout', 'link-90');">remove_bosh_wait_timeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-142', 'get_state', 'link-39');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-143" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-143', 'DISCONNECTED', 'link-5');">DISCONNECTED</a></tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_socks</tt><tt class="py-op">:</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-144', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt id="link-145" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-145', 'NonBlockingTransport', 'link-1');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-146', 'disconnect', 'link-89');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">do_callback</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> </tt>
+<a name="get_rand_number"></a><div id="get_rand_number-def"><a name="L478"></a><tt class="py-lineno">478</tt> <a class="py-toggle" href="#" id="get_rand_number-toggle" onclick="return toggle('get_rand_number');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh-module.html#get_rand_number">get_rand_number</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_rand_number-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_rand_number-expanded"><a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-comment"># with 50-bit random initial rid, session would have to go up</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-comment"># to 7881299347898368 messages to raise rid over 2**53</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-comment"># (see http://www.xmpp.org/extensions/xep-0124.html#rids)</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-comment"># it's also used for sequence key initialization</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">Random</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">seed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt class="py-name">getrandbits</tt><tt class="py-op">(</tt><tt class="py-number">50</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> </tt>
+<a name="AckChecker"></a><div id="AckChecker-def"><a name="L489"></a><tt class="py-lineno">489</tt> <a class="py-toggle" href="#" id="AckChecker-toggle" onclick="return toggle('AckChecker');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.bosh.AckChecker-class.html">AckChecker</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AckChecker-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AckChecker-expanded"><a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"><tt class="py-docstring"> Class for generating rids and generating and checking acknowledgements in</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"><tt class="py-docstring"> BOSH messages</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="AckChecker.__init__"></a><div id="AckChecker.__init__-def"><a name="L494"></a><tt class="py-lineno">494</tt> <a class="py-toggle" href="#" id="AckChecker.__init__-toggle" onclick="return toggle('AckChecker.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.AckChecker-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AckChecker.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AckChecker.__init__-expanded"><a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rid</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name" targets="Function nbxmpp.bosh.get_rand_number()=nbxmpp.bosh-module.html#get_rand_number"><a title="nbxmpp.bosh.get_rand_number" class="py-name" href="#" onclick="return doclink('link-147', 'get_rand_number', 'link-147');">get_rand_number</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_rids</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_acked</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> </tt>
+<a name="AckChecker.get_not_acked_rids"></a><div id="AckChecker.get_not_acked_rids-def"><a name="L501"></a><tt class="py-lineno">501</tt> <a class="py-toggle" href="#" id="AckChecker.get_not_acked_rids-toggle" onclick="return toggle('AckChecker.get_not_acked_rids');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.AckChecker-class.html#get_not_acked_rids">get_not_acked_rids</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">rid</tt> <tt class="py-keyword">for</tt> <tt class="py-name">rid</tt><tt class="py-op">,</tt> <tt class="py-name">st</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_acked</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> </tt>
+<a name="AckChecker.backup_stanza"></a><div id="AckChecker.backup_stanza-def"><a name="L503"></a><tt class="py-lineno">503</tt> <a class="py-toggle" href="#" id="AckChecker.backup_stanza-toggle" onclick="return toggle('AckChecker.backup_stanza');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.AckChecker-class.html#backup_stanza">backup_stanza</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">socket</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AckChecker.backup_stanza-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AckChecker.backup_stanza-expanded"><a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">pending_requests</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-name">rid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method nbxmpp.bosh.AckChecker.get_rid()=nbxmpp.bosh.AckChecker-class.html#get_rid"><a title="nbxmpp.bosh.AckChecker.get_rid" class="py-name" href="#" onclick="return doclink('link-148', 'get_rid', 'link-148');">get_rid</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_acked</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">rid</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-149', 'setAttr', 'link-83');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'rid'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">rid</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_rids</tt><tt class="py-op">[</tt><tt class="py-name">socket</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">rid</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rid</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-150', 'setAttr', 'link-83');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'ack'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">stanza</tt> </tt>
+</div><a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> </tt>
+<a name="AckChecker.process_incoming_ack"></a><div id="AckChecker.process_incoming_ack-def"><a name="L514"></a><tt class="py-lineno">514</tt> <a class="py-toggle" href="#" id="AckChecker.process_incoming_ack-toggle" onclick="return toggle('AckChecker.process_incoming_ack');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.AckChecker-class.html#process_incoming_ack">process_incoming_ack</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">socket</tt><tt class="py-op">,</tt> <tt class="py-param">ack</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AckChecker.process_incoming_ack-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AckChecker.process_incoming_ack-expanded"><a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">pending_requests</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ack</tt><tt class="py-op">:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ack</tt><tt class="py-op">)</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_rids</tt><tt class="py-op">[</tt><tt class="py-name">socket</tt><tt class="py-op">]</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">rid</tt> <tt class="py-keyword">for</tt> <tt class="py-name">rid</tt><tt class="py-op">,</tt> <tt class="py-name">st</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_acked</tt> <tt class="py-keyword">if</tt> <tt class="py-name">ack</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">rid</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_acked</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">not_acked</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">ack</tt> </tt>
+</div><a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> </tt>
+<a name="AckChecker.get_rid"></a><div id="AckChecker.get_rid-def"><a name="L527"></a><tt class="py-lineno">527</tt> <a class="py-toggle" href="#" id="AckChecker.get_rid-toggle" onclick="return toggle('AckChecker.get_rid');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.AckChecker-class.html#get_rid">get_rid</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AckChecker.get_rid-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AckChecker.get_rid-expanded"><a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rid</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rid</tt> </tt>
+</div></div><a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> </tt>
+<a name="KeyStack"></a><div id="KeyStack-def"><a name="L535"></a><tt class="py-lineno">535</tt> <a class="py-toggle" href="#" id="KeyStack-toggle" onclick="return toggle('KeyStack');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.bosh.KeyStack-class.html">KeyStack</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="KeyStack-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="KeyStack-expanded"><a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"><tt class="py-docstring"> Class implementing key sequences for BOSH messages</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="KeyStack.__init__"></a><div id="KeyStack.__init__-def"><a name="L539"></a><tt class="py-lineno">539</tt> <a class="py-toggle" href="#" id="KeyStack.__init__-toggle" onclick="return toggle('KeyStack.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.KeyStack-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">count</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="KeyStack.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KeyStack.__init__-expanded"><a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">count</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.keys()=nbxmpp.roster_nb.NonBlockingRoster-class.html#keys"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-151', 'keys', 'link-151');">keys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method nbxmpp.bosh.KeyStack.reset()=nbxmpp.bosh.KeyStack-class.html#reset"><a title="nbxmpp.bosh.KeyStack.reset" class="py-name" href="#" onclick="return doclink('link-152', 'reset', 'link-152');">reset</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_call</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> </tt>
+<a name="KeyStack.reset"></a><div id="KeyStack.reset-def"><a name="L545"></a><tt class="py-lineno">545</tt> <a class="py-toggle" href="#" id="KeyStack.reset-toggle" onclick="return toggle('KeyStack.reset');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.KeyStack-class.html#reset">reset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="KeyStack.reset-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KeyStack.reset-expanded"><a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt class="py-name">seed</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-153" class="py-name"><a title="nbxmpp.bosh.get_rand_number" class="py-name" href="#" onclick="return doclink('link-153', 'get_rand_number', 'link-147');">get_rand_number</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-154', 'keys', 'link-151');">keys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">sha1</tt><tt class="py-op">(</tt><tt class="py-name">seed</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">hexdigest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">curr_seed</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-155', 'keys', 'link-151');">keys</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-156', 'keys', 'link-151');">keys</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">sha1</tt><tt class="py-op">(</tt><tt class="py-name">curr_seed</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">hexdigest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> </tt>
+<a name="KeyStack.get"></a><div id="KeyStack.get-def"><a name="L552"></a><tt class="py-lineno">552</tt> <a class="py-toggle" href="#" id="KeyStack.get-toggle" onclick="return toggle('KeyStack.get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.bosh.KeyStack-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="KeyStack.get-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KeyStack.get-expanded"><a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_call</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_call</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-157', 'keys', 'link-151');">keys</a></tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-158', 'keys', 'link-151');">keys</a></tt><tt class="py-op">)</tt><tt class="py-op">&gt;</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-159', 'keys', 'link-151');">keys</a></tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> <tt class="py-name">last_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-160', 'keys', 'link-151');">keys</a></tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="nbxmpp.bosh.KeyStack.reset" class="py-name" href="#" onclick="return doclink('link-161', 'reset', 'link-152');">reset</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-name">new_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-162', 'keys', 'link-151');">keys</a></tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">last_key</tt><tt class="py-op">,</tt> <tt class="py-name">new_key</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"><tt class="py-comment"># http://www.xmpp.org/extensions/xep-0124.html#errorstatus-terminal</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"><tt id="link-163" class="py-name"><a title="nbxmpp.bosh.bosh_errors" class="py-name" href="#" onclick="return doclink('link-163', 'bosh_errors', 'link-105');">bosh_errors</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-string">'n/a'</tt><tt class="py-op">:</tt> <tt class="py-string">'none or unknown condition in terminating body stanza'</tt><tt class="py-op">,</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-string">'bad-request'</tt><tt class="py-op">:</tt> <tt class="py-string">'The format of an HTTP header or binding element received from the client is unacceptable (e.g., syntax error), or Script Syntax is not supported.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-string">'host-gone'</tt><tt class="py-op">:</tt> <tt class="py-string">'The target domain specified in the "to" attribute or the target host or port specified in the "route" attribute is no longer serviced by the connection manager.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-string">'host-unknown'</tt><tt class="py-op">:</tt> <tt class="py-string">'The target domain specified in the "to" attribute or the target host or port specified in the "route" attribute is unknown to the connection manager.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-string">'improper-addressing'</tt><tt class="py-op">:</tt> <tt class="py-string">'The initialization element lacks a "to" or "route" attribute (or the attribute has no value) but the connection manager requires one.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-string">'internal-server-error'</tt><tt class="py-op">:</tt> <tt class="py-string">'The connection manager has experienced an internal error that prevents it from servicing the request.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-string">'item-not-found'</tt><tt class="py-op">:</tt> <tt class="py-string">'(1) "sid" is not valid, (2) "stream" is not valid, (3) "rid" is larger than the upper limit of the expected window, (4) connection manager is unable to resend response, (5) "key" sequence is invalid'</tt><tt class="py-op">,</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt class="py-string">'other-request'</tt><tt class="py-op">:</tt> <tt class="py-string">'Another request being processed at the same time as this request caused the session to terminate.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-string">'policy-violation'</tt><tt class="py-op">:</tt> <tt class="py-string">'The client has broken the session rules (polling too frequently, requesting too frequently, too many simultaneous requests).'</tt><tt class="py-op">,</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-string">'remote-connection-failed'</tt><tt class="py-op">:</tt> <tt class="py-string">'The connection manager was unable to connect to, or unable to connect securely to, or has lost its connection to, the server.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt class="py-string">'remote-stream-error'</tt><tt class="py-op">:</tt> <tt class="py-string">'Encapsulates an error in the protocol being transported.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-string">'see-other-uri'</tt><tt class="py-op">:</tt> <tt class="py-string">'The connection manager does not operate at this URI (e.g., the connection manager accepts only SSL or TLS connections at some https: URI rather than the http: URI requested by the client). The client may try POSTing to the URI in the content of the &lt;uri/&gt; child element.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"> <tt class="py-string">'system-shutdown'</tt><tt class="py-op">:</tt> <tt class="py-string">'The connection manager is being shut down. All active HTTP sessions are being terminated. No new sessions can be created.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-string">'undefined-condition'</tt><tt class="py-op">:</tt> <tt class="py-string">'The error is not one of those defined herein; the connection manager SHOULD include application-specific information in the content of the &lt;body/&gt; wrapper.'</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-op">}</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.bosh.AckChecker-class.html b/doc/apidocs/nbxmpp.bosh.AckChecker-class.html
new file mode 100644
index 0000000..0d6309e
--- /dev/null
+++ b/doc/apidocs/nbxmpp.bosh.AckChecker-class.html
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.bosh.AckChecker</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.bosh-module.html">Module&nbsp;bosh</a> ::
+ Class&nbsp;AckChecker
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.bosh.AckChecker-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AckChecker</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker">source&nbsp;code</a></span></p>
+Class for generating rids and generating and checking acknowledgements in
+BOSH messages
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.AckChecker-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.AckChecker-class.html#get_not_acked_rids" class="summary-sig-name">get_not_acked_rids</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.get_not_acked_rids">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.AckChecker-class.html#backup_stanza" class="summary-sig-name">backup_stanza</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>,
+ <span class="summary-sig-arg">socket</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.backup_stanza">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.AckChecker-class.html#process_incoming_ack" class="summary-sig-name">process_incoming_ack</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">socket</span>,
+ <span class="summary-sig-arg">ack</span>=<span class="summary-sig-default">None</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.process_incoming_ack">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.AckChecker-class.html#get_rid" class="summary-sig-name">get_rid</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.get_rid">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_not_acked_rids"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_not_acked_rids</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.get_not_acked_rids">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="backup_stanza"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">backup_stanza</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>,
+ <span class="sig-arg">socket</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.backup_stanza">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="process_incoming_ack"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">process_incoming_ack</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">socket</span>,
+ <span class="sig-arg">ack</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.process_incoming_ack">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_rid"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_rid</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#AckChecker.get_rid">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.bosh.KeyStack-class.html b/doc/apidocs/nbxmpp.bosh.KeyStack-class.html
new file mode 100644
index 0000000..609d0b5
--- /dev/null
+++ b/doc/apidocs/nbxmpp.bosh.KeyStack-class.html
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.bosh.KeyStack</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.bosh-module.html">Module&nbsp;bosh</a> ::
+ Class&nbsp;KeyStack
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.bosh.KeyStack-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class KeyStack</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#KeyStack">source&nbsp;code</a></span></p>
+Class implementing key sequences for BOSH messages
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.KeyStack-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">count</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#KeyStack.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.KeyStack-class.html#reset" class="summary-sig-name">reset</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#KeyStack.reset">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.KeyStack-class.html#get" class="summary-sig-name">get</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#KeyStack.get">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">count</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#KeyStack.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="reset"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">reset</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#KeyStack.reset">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#KeyStack.get">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.bosh.NonBlockingBOSH-class.html b/doc/apidocs/nbxmpp.bosh.NonBlockingBOSH-class.html
new file mode 100644
index 0000000..0caef5d
--- /dev/null
+++ b/doc/apidocs/nbxmpp.bosh.NonBlockingBOSH-class.html
@@ -0,0 +1,1298 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.bosh.NonBlockingBOSH</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.bosh-module.html">Module&nbsp;bosh</a> ::
+ Class&nbsp;NonBlockingBOSH
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.bosh.NonBlockingBOSH-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingBOSH</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_b" name="uml_class_diagram_for_nbxmpp_b">
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#__init__" title="Each trasport class can have different constructor but it has to have at least all the arguments of NonBlockingTransport constructor" alt="" coords="17,455,787,473"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#connect" title="Creates and connects transport to server and port defined in conn_5tuple which should be item from list returned from getaddrinfo" alt="" coords="17,473,787,492"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout" title="nbxmpp.bosh.NonBlockingBOSH.set_timeout" alt="" coords="17,492,787,511"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_http_request_possible" title="Called when HTTP request it&#39;s possible to send a HTTP request. It can be when socket is connected or when HTTP response arrived" alt="" coords="17,511,787,529"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_socket_in" title="Get sockets in desired state" alt="" coords="17,529,787,548"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_free_socket" title="Select and returns socket eligible for sending a data to" alt="" coords="17,548,787,567"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#send_BOSH" title="Tries to send a stanza in payload by appeding it to a buffer and plugging a free socket for writing." alt="" coords="17,567,787,585"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#plug_socket" title="nbxmpp.bosh.NonBlockingBOSH.plug_socket" alt="" coords="17,585,787,604"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#build_stanza" title="Build a BOSH body tag from data in buffers and adds key, rid and ack attributes to it" alt="" coords="17,604,787,623"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_bosh_wait_timeout" title="nbxmpp.bosh.NonBlockingBOSH.on_bosh_wait_timeout" alt="" coords="17,623,787,641"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#renew_bosh_wait_timeout" title="nbxmpp.bosh.NonBlockingBOSH.renew_bosh_wait_timeout" alt="" coords="17,641,787,660"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#remove_bosh_wait_timeout" title="nbxmpp.bosh.NonBlockingBOSH.remove_bosh_wait_timeout" alt="" coords="17,660,787,679"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_persistent_fallback" title="Called from underlying transport when server closes TCP connection" alt="" coords="17,679,787,697"/>
+<area shape="rect" id="node6" href="nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect" title="nbxmpp.bosh.NonBlockingBOSH.disconnect" alt="" coords="17,716,787,735"/>
+<area shape="rect" id="node1" href="nbxmpp.bosh.NonBlockingBOSH-class.html" title="nbxmpp.bosh.NonBlockingBOSH" alt="" coords="5,422,797,741"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin" title="nbxmpp.transports_nb.NonBlockingTransport.plugin" alt="" coords="244,153,561,172"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout" title="nbxmpp.transports_nb.NonBlockingTransport.plugout" alt="" coords="244,172,561,191"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state" title="nbxmpp.transports_nb.NonBlockingTransport.set_state" alt="" coords="244,191,561,209"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state" title="nbxmpp.transports_nb.NonBlockingTransport.get_state" alt="" coords="244,209,561,228"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout" title="Called when there&#39;s no response from server in defined timeout" alt="" coords="244,228,561,247"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2" title="called when there&#39;s no response from server in defined timeout" alt="" coords="244,247,561,265"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout" alt="" coords="244,265,561,284"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2" alt="" coords="244,284,561,303"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_timeout2" alt="" coords="244,303,561,321"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd" title="nbxmpp.transports_nb.NonBlockingTransport.get_fd" alt="" coords="244,321,561,340"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" alt="" coords="244,340,561,359"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout" alt="" coords="244,359,561,377"/>
+<area shape="rect" id="node7" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2" alt="" coords="244,377,561,396"/>
+<area shape="rect" id="node2" href="nbxmpp.transports_nb.NonBlockingTransport-class.html" title="Abstract class representing a transport" alt="" coords="232,121,573,402"/>
+<area shape="rect" id="node8" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="289,39,515,57"/>
+<area shape="rect" id="node8" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="289,57,515,76"/>
+<area shape="rect" id="node8" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="289,76,515,95"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="277,6,525,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_b.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_b" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">raise_event</span>,
+ <span class="summary-sig-arg">on_disconnect</span>,
+ <span class="summary-sig-arg">idlequeue</span>,
+ <span class="summary-sig-arg">estabilish_tls</span>,
+ <span class="summary-sig-arg">certs</span>,
+ <span class="summary-sig-arg">xmpp_server</span>,
+ <span class="summary-sig-arg">domain</span>,
+ <span class="summary-sig-arg">bosh_dict</span>,
+ <span class="summary-sig-arg">proxy_creds</span>)</span><br />
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#connect" class="summary-sig-name">connect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">conn_5tuple</span>,
+ <span class="summary-sig-arg">on_connect</span>,
+ <span class="summary-sig-arg">on_connect_failure</span>)</span><br />
+ Creates and connects transport to server and port defined in conn_5tuple
+which should be item from list returned from getaddrinfo</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#_on_connect" class="summary-sig-name" onclick="show_private();">_on_connect</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Preceeds call of on_connect callback</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH._on_connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout" class="summary-sig-name">set_timeout</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">timeout</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.set_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_http_request_possible" class="summary-sig-name">on_http_request_possible</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called when HTTP request it's possible to send a HTTP request. It can be when
+socket is connected or when HTTP response arrived</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_http_request_possible">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_socket_in" class="summary-sig-name">get_socket_in</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">state</span>)</span><br />
+ Get sockets in desired state</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_socket_in">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_free_socket" class="summary-sig-name">get_free_socket</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Select and returns socket eligible for sending a data to</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_free_socket">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#send_BOSH" class="summary-sig-name">send_BOSH</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">payload</span>)</span><br />
+ Tries to send a stanza in payload by appeding it to a buffer and plugging a
+free socket for writing.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.send_BOSH">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#plug_socket" class="summary-sig-name">plug_socket</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.plug_socket">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#build_stanza" class="summary-sig-name">build_stanza</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">socket</span>)</span><br />
+ Build a BOSH body tag from data in buffers and adds key, rid and ack
+attributes to it</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.build_stanza">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_bosh_wait_timeout" class="summary-sig-name">on_bosh_wait_timeout</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_bosh_wait_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#renew_bosh_wait_timeout" class="summary-sig-name">renew_bosh_wait_timeout</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">timeout</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.renew_bosh_wait_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#remove_bosh_wait_timeout" class="summary-sig-name">remove_bosh_wait_timeout</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.remove_bosh_wait_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_persistent_fallback" class="summary-sig-name">on_persistent_fallback</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">socket</span>)</span><br />
+ Called from underlying transport when server closes TCP connection</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_persistent_fallback">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#handle_body_attrs" class="summary-sig-name">handle_body_attrs</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza_attrs</span>)</span><br />
+ Called for each incoming body stanza from dispatcher. Checks body
+attributes.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.handle_body_attrs">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#append_stanza" class="summary-sig-name">append_stanza</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>)</span><br />
+ Append stanza to a buffer to send</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.append_stanza">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_current_state" class="summary-sig-name">get_current_state</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_current_state">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#connect_and_flush" class="summary-sig-name">connect_and_flush</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">socket</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.connect_and_flush">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#boshify_stanzas" class="summary-sig-name">boshify_stanzas</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanzas</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">body_attrs</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Wraps zero to many stanzas by body tag with xmlns and sid</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.boshify_stanzas">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#send_init" class="summary-sig-name">send_init</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">after_SASL</span>=<span class="summary-sig-default">False</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.send_init">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#start_disconnect" class="summary-sig-name">start_disconnect</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.start_disconnect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#get_new_http_socket" class="summary-sig-name">get_new_http_socket</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_new_http_socket">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive" class="summary-sig-name">onreceive</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">recv_handler</span>)</span><br />
+ Set the on_receive callback.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.onreceive">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#on_received_http" class="summary-sig-name">on_received_http</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>,
+ <span class="summary-sig-arg">socket</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_received_http">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect" class="summary-sig-name">disconnect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">do_callback</span>=<span class="summary-sig-default">True</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.disconnect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">transports_nb.NonBlockingTransport</a></code></b>:
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd">get_fd</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state">get_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin">plugin</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout">plugout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout">read_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2">read_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout">remove_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout">renew_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2">renew_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout">set_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2">set_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state">set_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2">set_timeout2</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">transports_nb.NonBlockingTransport</a></code></b> (private):
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure" onclick="show_private();">_on_connect_failure</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started" onclick="show_private();">_tcp_connecting_started</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">raise_event</span>,
+ <span class="sig-arg">on_disconnect</span>,
+ <span class="sig-arg">idlequeue</span>,
+ <span class="sig-arg">estabilish_tls</span>,
+ <span class="sig-arg">certs</span>,
+ <span class="sig-arg">xmpp_server</span>,
+ <span class="sig-arg">domain</span>,
+ <span class="sig-arg">bosh_dict</span>,
+ <span class="sig-arg">proxy_creds</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>raise_event</code></strong> - callback for monitoring of sent and received data</li>
+ <li><strong class="pname"><code>on_disconnect</code></strong> - callback called on disconnection during runtime</li>
+ <li><strong class="pname"><code>idlequeue</code></strong> - processing idlequeue</li>
+ <li><strong class="pname"><code>estabilish_tls</code></strong> - boolean whether to estabilish TLS connection after
+TCP connection is done</li>
+ <li><strong class="pname"><code>certs</code></strong> - tuple of (cacerts, mycerts) see constructor of
+tls_nb.NonBlockingTLS for more details</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="connect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">connect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">conn_5tuple</span>,
+ <span class="sig-arg">on_connect</span>,
+ <span class="sig-arg">on_connect_failure</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Creates and connects transport to server and port defined in conn_5tuple
+which should be item from list returned from getaddrinfo
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>conn_5tuple</code></strong> - 5-tuple returned from getaddrinfo</li>
+ <li><strong class="pname"><code>on_connect</code></strong> - callback called on successful connect to the server</li>
+ <li><strong class="pname"><code>on_connect_failure</code></strong> - callback called on failure when connecting</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#connect">transports_nb.NonBlockingTransport.connect</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_connect"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_connect</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH._on_connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Preceeds call of on_connect callback
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect" onclick="show_private();">transports_nb.NonBlockingTransport._on_connect</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_timeout</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">timeout</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.set_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout">transports_nb.NonBlockingTransport.set_timeout</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="on_http_request_possible"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">on_http_request_possible</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_http_request_possible">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Called when HTTP request it's possible to send a HTTP request. It can be when
+socket is connected or when HTTP response arrived</p>
+<p>There should be always one pending request to BOSH CM.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_socket_in"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_socket_in</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">state</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_socket_in">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get sockets in desired state
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_free_socket"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_free_socket</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_free_socket">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Select and returns socket eligible for sending a data to
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="send_BOSH"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send_BOSH</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">payload</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.send_BOSH">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Tries to send a stanza in payload by appeding it to a buffer and plugging a
+free socket for writing.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plug_socket"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plug_socket</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.plug_socket">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="build_stanza"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">build_stanza</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">socket</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.build_stanza">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Build a BOSH body tag from data in buffers and adds key, rid and ack
+attributes to it</p>
+<p>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.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="on_bosh_wait_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">on_bosh_wait_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_bosh_wait_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="renew_bosh_wait_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">renew_bosh_wait_timeout</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">timeout</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.renew_bosh_wait_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="remove_bosh_wait_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">remove_bosh_wait_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.remove_bosh_wait_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="on_persistent_fallback"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">on_persistent_fallback</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">socket</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_persistent_fallback">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called from underlying transport when server closes TCP connection
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>socket</code></strong> - disconnected transport object</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="handle_body_attrs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">handle_body_attrs</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza_attrs</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.handle_body_attrs">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called for each incoming body stanza from dispatcher. Checks body
+attributes.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="append_stanza"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">append_stanza</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.append_stanza">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Append stanza to a buffer to send
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#send">transports_nb.NonBlockingTransport.send</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_current_state"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_current_state</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_current_state">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="connect_and_flush"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">connect_and_flush</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">socket</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.connect_and_flush">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="boshify_stanzas"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">boshify_stanzas</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanzas</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">body_attrs</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.boshify_stanzas">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Wraps zero to many stanzas by body tag with xmlns and sid
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="send_init"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send_init</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">after_SASL</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.send_init">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="start_disconnect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">start_disconnect</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.start_disconnect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect">transports_nb.NonBlockingTransport.start_disconnect</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_new_http_socket"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_new_http_socket</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.get_new_http_socket">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="onreceive"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">onreceive</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">recv_handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.onreceive">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Set the on_receive callback.</p>
+<p>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.</p>
+<p>Do not confuse it with on_receive() method, which is the callback
+itself.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive">transports_nb.NonBlockingTransport.onreceive</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="on_received_http"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">on_received_http</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>,
+ <span class="sig-arg">socket</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.on_received_http">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="disconnect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">disconnect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">do_callback</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.bosh-pysrc.html#NonBlockingBOSH.disconnect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect">transports_nb.NonBlockingTransport.disconnect</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.c14n-module.html b/doc/apidocs/nbxmpp.c14n-module.html
new file mode 100644
index 0000000..d7c1fd3
--- /dev/null
+++ b/doc/apidocs/nbxmpp.c14n-module.html
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.c14n</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;c14n
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.c14n-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module c14n</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.c14n-pysrc.html">source&nbsp;code</a></span></p>
+XML canonicalisation methods (for XEP-0116)
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.c14n-module.html#c14n" class="summary-sig-name">c14n</a>(<span class="summary-sig-arg">node</span>,
+ <span class="summary-sig-arg">is_buggy</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.c14n-pysrc.html#c14n">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.c14n-module.html#normalise_attr" class="summary-sig-name">normalise_attr</a>(<span class="summary-sig-arg">val</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.c14n-pysrc.html#normalise_attr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.c14n-module.html#normalise_text" class="summary-sig-name">normalise_text</a>(<span class="summary-sig-arg">val</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.c14n-pysrc.html#normalise_text">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.c14n-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <a href="nbxmpp.simplexml-module.html#ustr" title="nbxmpp.simplexml.ustr">ustr</a>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="c14n"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">c14n</span>(<span class="sig-arg">node</span>,
+ <span class="sig-arg">is_buggy</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.c14n-pysrc.html#c14n">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="normalise_attr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">normalise_attr</span>(<span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.c14n-pysrc.html#normalise_attr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="normalise_text"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">normalise_text</span>(<span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.c14n-pysrc.html#normalise_text">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.c14n-pysrc.html b/doc/apidocs/nbxmpp.c14n-pysrc.html
new file mode 100644
index 0000000..4bcfe62
--- /dev/null
+++ b/doc/apidocs/nbxmpp.c14n-pysrc.html
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.c14n</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;c14n
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.c14n-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.c14n-module.html">Module nbxmpp.c14n</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding:utf-8 -*-</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## c14n.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2007-2008 Brendan Taylor &lt;whateley AT gmail.com&gt;</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## This file is part of Gajim.</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## Gajim is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment">## by the Free Software Foundation; version 3 only.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment">## Gajim is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment">## You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment">## along with Gajim. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt class="py-docstring">XML canonicalisation methods (for XEP-0116)</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.simplexml=nbxmpp.simplexml-module.html"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-0', 'simplexml', 'link-0');">simplexml</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Function nbxmpp.simplexml.ustr()=nbxmpp.simplexml-module.html#ustr"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-1', 'ustr', 'link-1');">ustr</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"> </tt>
+<a name="c14n"></a><div id="c14n-def"><a name="L27"></a><tt class="py-lineno">27</tt> <a class="py-toggle" href="#" id="c14n-toggle" onclick="return toggle('c14n');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.c14n-module.html#c14n">c14n</a><tt class="py-op">(</tt><tt class="py-param">node</tt><tt class="py-op">,</tt> <tt class="py-param">is_buggy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="c14n-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="c14n-expanded"><a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">"&lt;"</tt> <tt class="py-op">+</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-2', 'name', 'link-2');">name</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-keyword">or</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt> <tt class="py-op">!=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">' xmlns="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> <tt class="py-name">sorted_attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.keys()=nbxmpp.roster_nb.NonBlockingRoster-class.html#keys"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-3', 'keys', 'link-3');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sorted_attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">is_buggy</tt> <tt class="py-keyword">and</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-4', 'ustr', 'link-1');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> <tt class="py-comment"># like XMLescape() but with whitespace and without &amp;gt;</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">' %s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Function nbxmpp.c14n.normalise_attr()=nbxmpp.c14n-module.html#normalise_attr"><a title="nbxmpp.c14n.normalise_attr" class="py-name" href="#" onclick="return doclink('link-5', 'normalise_attr', 'link-5');">normalise_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">"&gt;"</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"> <tt class="py-name">cnt</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">:</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">:</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">cnt</tt><tt class="py-op">:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt id="link-6" class="py-name" targets="Function nbxmpp.c14n.normalise_text()=nbxmpp.c14n-module.html#normalise_text"><a title="nbxmpp.c14n.normalise_text" class="py-name" href="#" onclick="return doclink('link-6', 'normalise_text', 'link-6');">normalise_text</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">cnt</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt id="link-7" class="py-name" targets="Module nbxmpp.c14n=nbxmpp.c14n-module.html,Function nbxmpp.c14n.c14n()=nbxmpp.c14n-module.html#c14n"><a title="nbxmpp.c14n
+nbxmpp.c14n.c14n" class="py-name" href="#" onclick="return doclink('link-7', 'c14n', 'link-7');">c14n</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">is_buggy</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"> <tt class="py-name">cnt</tt><tt class="py-op">=</tt><tt class="py-name">cnt</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">cnt</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt id="link-8" class="py-name"><a title="nbxmpp.c14n.normalise_text" class="py-name" href="#" onclick="return doclink('link-8', 'normalise_text', 'link-6');">normalise_text</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">cnt</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt> <tt class="py-keyword">and</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">=</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">' /&gt;'</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">"&lt;/"</tt> <tt class="py-op">+</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-9', 'name', 'link-2');">name</a></tt> <tt class="py-op">+</tt> <tt class="py-string">"&gt;"</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"> </tt>
+<a name="normalise_attr"></a><div id="normalise_attr-def"><a name="L55"></a><tt class="py-lineno">55</tt> <a class="py-toggle" href="#" id="normalise_attr-toggle" onclick="return toggle('normalise_attr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.c14n-module.html#normalise_attr">normalise_attr</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="normalise_attr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="normalise_attr-expanded"><a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'&amp;'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;amp;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;lt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;quot;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\t'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;#x9;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;#xA;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;#xD;'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> </tt>
+<a name="normalise_text"></a><div id="normalise_text-def"><a name="L58"></a><tt class="py-lineno">58</tt> <a class="py-toggle" href="#" id="normalise_text-toggle" onclick="return toggle('normalise_text');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.c14n-module.html#normalise_text">normalise_text</a><tt class="py-op">(</tt><tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="normalise_text-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="normalise_text-expanded"><a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'&amp;'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;amp;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;lt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'&gt;'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt> <tt class="py-string">'&amp;#xD;'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.client_nb-module.html b/doc/apidocs/nbxmpp.client_nb-module.html
new file mode 100644
index 0000000..89df90d
--- /dev/null
+++ b/doc/apidocs/nbxmpp.client_nb-module.html
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.client_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;client_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.client_nb-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module client_nb</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html">source&nbsp;code</a></span></p>
+Client class establishs connection to XMPP Server and handles authentication
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.client_nb.NonBlockingClient-class.html" class="summary-name">NonBlockingClient</a><br />
+ Client class is XMPP connection mountpoint. Objects for authentication,
+network communication, roster, xml parsing ... are plugged to client object.
+Client implements the abstract behavior - mostly negotioation and callbacks
+handling, whereas underlying modules take care of feature-specific logic
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.client_nb-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.client_nb')">logging.getLogger('nbxmpp.client_nb')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.client_nb-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="socket">socket</span>,
+ <a href="nbxmpp.transports_nb-module.html" title="nbxmpp.transports_nb">transports_nb</a>,
+ <a href="nbxmpp.dispatcher_nb-module.html" title="nbxmpp.dispatcher_nb">dispatcher_nb</a>,
+ <a href="nbxmpp.auth_nb-module.html" title="nbxmpp.auth_nb">auth_nb</a>,
+ <a href="nbxmpp.roster_nb-module.html" title="nbxmpp.roster_nb">roster_nb</a>,
+ <a href="nbxmpp.protocol-module.html" title="nbxmpp.protocol">protocol</a>,
+ <a href="nbxmpp.bosh-module.html" title="nbxmpp.bosh">bosh</a>,
+ <span title="nbxmpp.protocol.NS_TLS">NS_TLS</span>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.client_nb')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.client_nb-pysrc.html b/doc/apidocs/nbxmpp.client_nb-pysrc.html
new file mode 100644
index 0000000..f93a79b
--- /dev/null
+++ b/doc/apidocs/nbxmpp.client_nb-pysrc.html
@@ -0,0 +1,1054 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.client_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;client_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.client_nb-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.client_nb-module.html">Module nbxmpp.client_nb</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## client_nb.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## based on client.py, changes backported up to revision 1.60</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2005 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## modified by Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># $Id: client.py,v 1.52 2006/01/02 19:40:55 normanr Exp $</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Client class establishs connection to XMPP Server and handles authentication</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.transports_nb=nbxmpp.transports_nb-module.html"><a title="nbxmpp.transports_nb" class="py-name" href="#" onclick="return doclink('link-0', 'transports_nb', 'link-0');">transports_nb</a></tt><tt class="py-op">,</tt> <tt id="link-1" class="py-name" targets="Module nbxmpp.dispatcher_nb=nbxmpp.dispatcher_nb-module.html"><a title="nbxmpp.dispatcher_nb" class="py-name" href="#" onclick="return doclink('link-1', 'dispatcher_nb', 'link-1');">dispatcher_nb</a></tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name" targets="Module nbxmpp.auth_nb=nbxmpp.auth_nb-module.html"><a title="nbxmpp.auth_nb" class="py-name" href="#" onclick="return doclink('link-2', 'auth_nb', 'link-2');">auth_nb</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Module nbxmpp.roster_nb=nbxmpp.roster_nb-module.html"><a title="nbxmpp.roster_nb" class="py-name" href="#" onclick="return doclink('link-3', 'roster_nb', 'link-3');">roster_nb</a></tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-4', 'protocol', 'link-4');">protocol</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Module nbxmpp.bosh=nbxmpp.bosh-module.html"><a title="nbxmpp.bosh" class="py-name" href="#" onclick="return doclink('link-5', 'bosh', 'link-5');">bosh</a></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-6', 'protocol', 'link-4');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable nbxmpp.protocol.NS_TLS=nbxmpp.protocol-module.html#NS_TLS"><a title="nbxmpp.protocol.NS_TLS" class="py-name" href="#" onclick="return doclink('link-7', 'NS_TLS', 'link-7');">NS_TLS</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-8', 'log', 'link-8');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.client_nb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient"></a><div id="NonBlockingClient-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="NonBlockingClient-toggle" onclick="return toggle('NonBlockingClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html">NonBlockingClient</a><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingClient-expanded"><a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"> Client class is XMPP connection mountpoint. Objects for authentication,</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> network communication, roster, xml parsing ... are plugged to client object.</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> Client implements the abstract behavior - mostly negotioation and callbacks</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"> handling, whereas underlying modules take care of feature-specific logic</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.__init__"></a><div id="NonBlockingClient.__init__-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="NonBlockingClient.__init__-toggle" onclick="return toggle('NonBlockingClient.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">domain</tt><tt class="py-op">,</tt> <tt class="py-param">idlequeue</tt><tt class="py-op">,</tt> <tt class="py-param">caller</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.__init__-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> Caches connection data</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> :param domain: domain - for to: attribute (from account info)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> :param idlequeue: processing idlequeue</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> :param caller: calling object - it has to implement methods</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> _event_dispatcher which is called from dispatcher instance</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Namespace</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-9', 'protocol', 'link-4');">protocol</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable nbxmpp.protocol.NS_CLIENT=nbxmpp.protocol-module.html#NS_CLIENT"><a title="nbxmpp.protocol.NS_CLIENT" class="py-name" href="#" onclick="return doclink('link-10', 'NS_CLIENT', 'link-10');">NS_CLIENT</a></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Namespace</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module nbxmpp.idlequeue=nbxmpp.idlequeue-module.html"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-11', 'idlequeue', 'link-11');">idlequeue</a></tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-12', 'idlequeue', 'link-11');">idlequeue</a></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_handlers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt> <tt class="py-op">=</tt> <tt class="py-name">domain</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># FQDN hostname to connect to</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-comment"># caller is who initiated this client, it is in needed to register</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-comment"># the EventDispatcher</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt> <tt class="py-op">=</tt> <tt class="py-name">caller</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># our full jid, set after successful auth</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ip_addresses</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_proxy_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">got_features</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stream_started</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnecting</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">protocol_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'XMPP'</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.disconnect"></a><div id="NonBlockingClient.disconnect-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="NonBlockingClient.disconnect-toggle" onclick="return toggle('NonBlockingClient.disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#disconnect">disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.disconnect-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Called on disconnection - disconnect callback is picked based on state of</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> the client.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># to avoid recursive calls</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ip_addresses</tt><tt class="py-op">:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._try_next_ip()=nbxmpp.client_nb.NonBlockingClient-class.html#_try_next_ip"><a title="nbxmpp.client_nb.NonBlockingClient._try_next_ip" class="py-name" href="#" onclick="return doclink('link-13', '_try_next_ip', 'link-13');">_try_next_ip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnecting</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-14', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Disconnecting NBClient: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'NonBlockingRoster'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class nbxmpp.roster_nb.NonBlockingRoster=nbxmpp.roster_nb.NonBlockingRoster-class.html"><a title="nbxmpp.roster_nb.NonBlockingRoster" class="py-name" href="#" onclick="return doclink('link-15', 'NonBlockingRoster', 'link-15');">NonBlockingRoster</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method nbxmpp.plugin.PlugIn.PlugOut()=nbxmpp.plugin.PlugIn-class.html#PlugOut"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-16', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'NonBlockingBind'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class nbxmpp.auth_nb.NonBlockingBind=nbxmpp.auth_nb.NonBlockingBind-class.html,Method nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind()=nbxmpp.auth_nb.NonBlockingBind-class.html#NonBlockingBind"><a title="nbxmpp.auth_nb.NonBlockingBind
+nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind" class="py-name" href="#" onclick="return doclink('link-17', 'NonBlockingBind', 'link-17');">NonBlockingBind</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-18', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'NonBlockingNonSASL'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Class nbxmpp.auth_nb.NonBlockingNonSASL=nbxmpp.auth_nb.NonBlockingNonSASL-class.html"><a title="nbxmpp.auth_nb.NonBlockingNonSASL" class="py-name" href="#" onclick="return doclink('link-19', 'NonBlockingNonSASL', 'link-19');">NonBlockingNonSASL</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-20', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'SASL'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Class nbxmpp.auth_nb.SASL=nbxmpp.auth_nb.SASL-class.html"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-21', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-22', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'NonBlockingTCP'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Class nbxmpp.transports_nb.NonBlockingTCP=nbxmpp.transports_nb.NonBlockingTCP-class.html"><a title="nbxmpp.transports_nb.NonBlockingTCP" class="py-name" href="#" onclick="return doclink('link-23', 'NonBlockingTCP', 'link-23');">NonBlockingTCP</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-24', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'NonBlockingHTTP'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Class nbxmpp.transports_nb.NonBlockingHTTP=nbxmpp.transports_nb.NonBlockingHTTP-class.html"><a title="nbxmpp.transports_nb.NonBlockingHTTP" class="py-name" href="#" onclick="return doclink('link-25', 'NonBlockingHTTP', 'link-25');">NonBlockingHTTP</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-26', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'NonBlockingBOSH'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Class nbxmpp.bosh.NonBlockingBOSH=nbxmpp.bosh.NonBlockingBOSH-class.html"><a title="nbxmpp.bosh.NonBlockingBOSH" class="py-name" href="#" onclick="return doclink('link-27', 'NonBlockingBOSH', 'link-27');">NonBlockingBOSH</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-28', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: we never unplug dispatcher, only on next connect</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-comment"># See _xmpp_connect_machine and SASLHandler</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">stream_started</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stream_started</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stream_started</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnecting</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-29', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Client disconnected..'</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">connected</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-comment"># if we're disconnecting before connection to XMPP sever is opened,</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-comment"># we don't call disconnect handlers but on_connect_failure callback</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-comment"># with proxy, we have different failure callback</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-30', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'calling on_proxy_failure cb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_proxy_failure</tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-31', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'calling on_connect_failure cb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect_failure</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-comment"># we are connected to XMPP server</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">stream_started</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-comment"># if error occur before XML stream was opened, e.g. no response on</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-comment"># init request, we call the on_connect_failure callback because</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-comment"># proper connection is not established yet and it's not a proxy</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-comment"># issue</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-32', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'calling on_connect_failure cb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">streamError</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect_failure</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-comment"># with open connection, we are calling the disconnect handlers</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">reversed</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_handlers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-33', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Calling disconnect handler %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">i</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnecting</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.connect"></a><div id="NonBlockingClient.connect-def"><a name="L140"></a><tt class="py-lineno">140</tt> <a class="py-toggle" href="#" id="NonBlockingClient.connect-toggle" onclick="return toggle('NonBlockingClient.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect_failure</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">=</tt><tt class="py-number">5222</tt><tt class="py-op">,</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-param">on_proxy_failure</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">proxy</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">secure_tuple</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'plain'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.connect-expanded"><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> Open XMPP connection (open XML streams in both directions)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> :param on_connect: called after stream is successfully opened</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> :param on_connect_failure: called when error occures during connection</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> :param hostname: hostname of XMPP server from SRV request</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> :param port: port number of XMPP server</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> :param on_proxy_failure: called if error occurres during TCP connection to</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> proxy server or during proxy connecting process</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"> :param proxy: dictionary with proxy data. It should contain at least</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> values for keys 'host' and 'port' - connection details for proxy serve</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> and optionally keys 'user' and 'pass' as proxy credentials</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> :param secure_tuple: tuple of (desired connection type, cacerts, mycerts)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> connection type can be 'ssl' - TLS established after TCP connection,</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> 'tls' - TLS established after negotiation with starttls, or 'plain'.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> cacerts, mycerts - see tls_nb.NonBlockingTLS constructor for more</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> details</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect</tt> <tt class="py-op">=</tt> <tt class="py-name">on_connect</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect_failure</tt><tt class="py-op">=</tt><tt class="py-name">on_connect_failure</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_proxy_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">on_proxy_failure</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">desired_security</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cacerts</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mycerts</tt> <tt class="py-op">=</tt> <tt class="py-name">secure_tuple</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Port</tt> <tt class="py-op">=</tt> <tt class="py-name">port</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hostname</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">hostname</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-comment"># We only check for SSL here as for TLS we will first have to start a</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-comment"># PLAIN connection and negotiate TLS afterwards.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-comment"># establish_tls will instruct transport to start secure connection</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-comment"># directly</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">establish_tls</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">desired_security</tt> <tt class="py-op">==</tt> <tt class="py-string">'ssl'</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">certs</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cacerts</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mycerts</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">proxy_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">tcp_host</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_hostname</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">tcp_port</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Port</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">proxy</tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-comment"># with proxies, client connects to proxy instead of directly to</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-comment"># XMPP server ((hostname, port))</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-comment"># tcp_host is hostname of machine used for socket connection</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-comment"># (DNS request will be done for proxy or BOSH CM hostname)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">tcp_host</tt><tt class="py-op">,</tt> <tt class="py-name">tcp_port</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_pass</tt> <tt class="py-op">=</tt> \ </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt id="link-34" class="py-name"><a title="nbxmpp.transports_nb" class="py-name" href="#" onclick="return doclink('link-34', 'transports_nb', 'link-0');">transports_nb</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Function nbxmpp.transports_nb.get_proxy_data_from_dict()=nbxmpp.transports_nb-module.html#get_proxy_data_from_dict"><a title="nbxmpp.transports_nb.get_proxy_data_from_dict" class="py-name" href="#" onclick="return doclink('link-35', 'get_proxy_data_from_dict', 'link-35');">get_proxy_data_from_dict</a></tt><tt class="py-op">(</tt><tt class="py-name">proxy</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'bosh'</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-comment"># Setup BOSH transport</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="nbxmpp.bosh" class="py-name" href="#" onclick="return doclink('link-36', 'bosh', 'link-5');">bosh</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH" class="py-name" href="#" onclick="return doclink('link-37', 'NonBlockingBOSH', 'link-27');">NonBlockingBOSH</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Class Method nbxmpp.dispatcher_nb.Dispatcher.get_instance()=nbxmpp.dispatcher_nb.Dispatcher-class.html#get_instance,Class Method nbxmpp.plugin.PlugIn.get_instance()=nbxmpp.plugin.PlugIn-class.html#get_instance,Class Method nbxmpp.proxy_connectors.ProxyConnector.get_instance()=nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-38', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">on_disconnect</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.disconnect()=nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect,Method nbxmpp.client_nb.NonBlockingClient.disconnect()=nbxmpp.client_nb.NonBlockingClient-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTCP.disconnect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTransport.disconnect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-39', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt id="link-40" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient.raise_event()=nbxmpp.client_nb.NonBlockingClient-class.html#raise_event"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-40', 'raise_event', 'link-40');">raise_event</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-41', 'raise_event', 'link-40');">raise_event</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt id="link-42" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-42', 'idlequeue', 'link-11');">idlequeue</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-43', 'idlequeue', 'link-11');">idlequeue</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">estabilish_tls</tt><tt class="py-op">=</tt><tt class="py-name">establish_tls</tt><tt class="py-op">,</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">certs</tt><tt class="py-op">=</tt><tt class="py-name">certs</tt><tt class="py-op">,</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">proxy_creds</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_pass</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">xmpp_server</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_hostname</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">domain</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">,</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">bosh_dict</tt><tt class="py-op">=</tt><tt class="py-name">proxy</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">protocol_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'BOSH'</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wait_for_restart_response</tt> <tt class="py-op">=</tt> \ </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_wait_for_restart_response'</tt><tt class="py-op">]</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-comment"># http proxy</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'xmpp_server'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_hostname</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Port</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'credentials'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_pass</tt><tt class="py-op">)</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">proxy</tt> <tt class="py-keyword">or</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'bosh'</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-comment"># Setup ordinary TCP transport</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="nbxmpp.transports_nb" class="py-name" href="#" onclick="return doclink('link-44', 'transports_nb', 'link-0');">transports_nb</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP" class="py-name" href="#" onclick="return doclink('link-45', 'NonBlockingTCP', 'link-23');">NonBlockingTCP</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-46', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">on_disconnect</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-47', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt id="link-48" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-48', 'raise_event', 'link-40');">raise_event</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-49', 'raise_event', 'link-40');">raise_event</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt id="link-50" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-50', 'idlequeue', 'link-11');">idlequeue</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-51', 'idlequeue', 'link-11');">idlequeue</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">estabilish_tls</tt><tt class="py-op">=</tt><tt class="py-name">establish_tls</tt><tt class="py-op">,</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">certs</tt><tt class="py-op">=</tt><tt class="py-name">certs</tt><tt class="py-op">,</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">proxy_dict</tt><tt class="py-op">=</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-comment"># plug transport into client as self.Connection</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn,Method nbxmpp.dispatcher_nb.Dispatcher.PlugIn()=nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn,Class nbxmpp.plugin.PlugIn=nbxmpp.plugin.PlugIn-class.html,Method nbxmpp.plugin.PlugIn.PlugIn()=nbxmpp.plugin.PlugIn-class.html#PlugIn"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-52', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._resolve_hostname()=nbxmpp.client_nb.NonBlockingClient-class.html#_resolve_hostname"><a title="nbxmpp.client_nb.NonBlockingClient._resolve_hostname" class="py-name" href="#" onclick="return doclink('link-53', '_resolve_hostname', 'link-53');">_resolve_hostname</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">hostname</tt><tt class="py-op">=</tt><tt class="py-name">tcp_host</tt><tt class="py-op">,</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">port</tt><tt class="py-op">=</tt><tt class="py-name">tcp_port</tt><tt class="py-op">,</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">on_success</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._try_next_ip" class="py-name" href="#" onclick="return doclink('link-54', '_try_next_ip', 'link-13');">_try_next_ip</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._resolve_hostname"></a><div id="NonBlockingClient._resolve_hostname-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="NonBlockingClient._resolve_hostname-toggle" onclick="return toggle('NonBlockingClient._resolve_hostname');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_resolve_hostname">_resolve_hostname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">,</tt> <tt class="py-param">on_success</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._resolve_hostname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._resolve_hostname-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> Wrapper for getaddinfo call</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> FIXME: getaddinfo blocks</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ip_addresses</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getaddrinfo</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">,</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_UNSPEC</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">gaierror</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-55', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-string">'Lookup failure for %s:%s, hostname: %s - %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Port</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">on_success</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._try_next_ip"></a><div id="NonBlockingClient._try_next_ip-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="NonBlockingClient._try_next_ip-toggle" onclick="return toggle('NonBlockingClient._try_next_ip');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_try_next_ip">_try_next_ip</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">err_message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._try_next_ip-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._try_next_ip-expanded"><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"> Iterate over IP addresses tries to connect to it</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">err_message</tt><tt class="py-op">:</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt id="link-56" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-56', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'While looping over DNS A records: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">err_message</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ip_addresses</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Run out of hosts for name %s:%s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Port</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt> <tt class="py-op">+</tt> <tt class="py-string">' Error for last IP: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">err_message</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-57', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_ip</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ip_addresses</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.connect()=nbxmpp.bosh.NonBlockingBOSH-class.html#connect,Method nbxmpp.client_nb.NonBlockingClient.connect()=nbxmpp.client_nb.NonBlockingClient-class.html#connect,Method nbxmpp.transports_nb.NonBlockingTCP.connect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#connect,Method nbxmpp.transports_nb.NonBlockingTransport.connect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#connect"><a title="nbxmpp.bosh.NonBlockingBOSH.connect
+nbxmpp.client_nb.NonBlockingClient.connect
+nbxmpp.transports_nb.NonBlockingTCP.connect
+nbxmpp.transports_nb.NonBlockingTransport.connect" class="py-name" href="#" onclick="return doclink('link-58', 'connect', 'link-58');">connect</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-name">conn_5tuple</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">current_ip</tt><tt class="py-op">,</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">on_connect</tt><tt class="py-op">=</tt><tt class="py-keyword">lambda</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._xmpp_connect()=nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect" class="py-name" href="#" onclick="return doclink('link-59', '_xmpp_connect', 'link-59');">_xmpp_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-name">on_connect_failure</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._try_next_ip" class="py-name" href="#" onclick="return doclink('link-60', '_try_next_ip', 'link-13');">_try_next_ip</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.incoming_stream_version"></a><div id="NonBlockingClient.incoming_stream_version-def"><a name="L264"></a><tt class="py-lineno">264</tt> <a class="py-toggle" href="#" id="NonBlockingClient.incoming_stream_version-toggle" onclick="return toggle('NonBlockingClient.incoming_stream_version');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#incoming_stream_version">incoming_stream_version</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.incoming_stream_version-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.incoming_stream_version-expanded"><a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-docstring"> Get version of xml stream</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'version'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Class nbxmpp.dispatcher_nb.Dispatcher=nbxmpp.dispatcher_nb.Dispatcher-class.html"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-61', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-62', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'version'</tt><tt class="py-op">]</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._xmpp_connect"></a><div id="NonBlockingClient._xmpp_connect-def"><a name="L273"></a><tt class="py-lineno">273</tt> <a class="py-toggle" href="#" id="NonBlockingClient._xmpp_connect-toggle" onclick="return toggle('NonBlockingClient._xmpp_connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect">_xmpp_connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">socket_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._xmpp_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._xmpp_connect-expanded"><a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> Start XMPP connecting process - open the XML stream. Is called after TCP</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> connection is established or after switch to TLS when successfully</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> negotiated with &lt;starttls&gt;.</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-comment"># socket_type contains info which transport connection was established</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">socket_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt><tt class="py-op">:</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-comment"># When ssl_lib is set we connected via SSL</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">socket_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'ssl'</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-comment"># PLAIN is default</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">socket_type</tt> <tt class="py-op">=</tt> <tt class="py-string">'plain'</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-name">socket_type</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine()=nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect_machine"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine" class="py-name" href="#" onclick="return doclink('link-63', '_xmpp_connect_machine', 'link-63');">_xmpp_connect_machine</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._xmpp_connect_machine"></a><div id="NonBlockingClient._xmpp_connect_machine-def"><a name="L290"></a><tt class="py-lineno">290</tt> <a class="py-toggle" href="#" id="NonBlockingClient._xmpp_connect_machine-toggle" onclick="return toggle('NonBlockingClient._xmpp_connect_machine');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect_machine">_xmpp_connect_machine</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._xmpp_connect_machine-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._xmpp_connect_machine-expanded"><a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> Finite automaton taking care of stream opening and features tag handling.</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> Calls _on_stream_start when stream is started, and disconnect() on</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> failure.</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt id="link-64" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-64', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-------------xmpp_connect_machine() &gt;&gt; mode: %s, data: %s...'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">20</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">on_next_receive</tt><tt class="py-op">(</tt><tt class="py-param">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"><tt class="py-docstring"> Set desired on_receive callback on transport based on the state of</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"><tt class="py-docstring"> connect_machine.</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt id="link-65" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-65', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'setting %s on next receive'</tt> <tt class="py-op">%</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">mode</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-66', 'onreceive', 'link-66');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-comment"># switch to Dispatcher.ProcessNonBlocking</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-67', 'onreceive', 'link-66');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">_data</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine" class="py-name" href="#" onclick="return doclink('link-68', '_xmpp_connect_machine', 'link-63');">_xmpp_connect_machine</a></tt><tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">_data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mode</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-comment"># starting state</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'Dispatcher'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-69', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-70', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">got_features</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt id="link-71" class="py-name"><a title="nbxmpp.dispatcher_nb" class="py-name" href="#" onclick="return doclink('link-71', 'dispatcher_nb', 'link-1');">dispatcher_nb</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-72', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-73', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-74', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">on_next_receive</tt><tt class="py-op">(</tt><tt class="py-string">'RECEIVE_DOCUMENT_ATTRIBUTES'</tt><tt class="py-op">)</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'FAILURE'</tt><tt class="py-op">:</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-75', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-string">'During XMPP connect: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'RECEIVE_DOCUMENT_ATTRIBUTES'</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-76', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking,Method nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-77', 'ProcessNonBlocking', 'link-77');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ip_addresses</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'Dispatcher'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> \ </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-78', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine" class="py-name" href="#" onclick="return doclink('link-79', '_xmpp_connect_machine', 'link-63');">_xmpp_connect_machine</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-name">mode</tt><tt class="py-op">=</tt><tt class="py-string">'FAILURE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-string">'Error on stream open'</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-comment"># if terminating stanza was received after init request then client gets</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-comment"># disconnected from bosh transport plugin and we have to end the stream</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-comment"># negotiating process straight away.</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-comment"># fixes #4657</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient.incoming_stream_version()=nbxmpp.client_nb.NonBlockingClient-class.html#incoming_stream_version"><a title="nbxmpp.client_nb.NonBlockingClient.incoming_stream_version" class="py-name" href="#" onclick="return doclink('link-80', 'incoming_stream_version', 'link-80');">incoming_stream_version</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'1.0'</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">got_features</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-name">on_next_receive</tt><tt class="py-op">(</tt><tt class="py-string">'RECEIVE_STREAM_FEATURES'</tt><tt class="py-op">)</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt id="link-81" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-81', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'got STREAM FEATURES in first recv'</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine" class="py-name" href="#" onclick="return doclink('link-82', '_xmpp_connect_machine', 'link-63');">_xmpp_connect_machine</a></tt><tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">=</tt><tt class="py-string">'STREAM_STARTED'</tt><tt class="py-op">)</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt id="link-83" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-83', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'incoming stream version less than 1.0'</tt><tt class="py-op">)</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine" class="py-name" href="#" onclick="return doclink('link-84', '_xmpp_connect_machine', 'link-63');">_xmpp_connect_machine</a></tt><tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">=</tt><tt class="py-string">'STREAM_STARTED'</tt><tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'RECEIVE_STREAM_FEATURES'</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-comment"># sometimes &lt;features&gt; are received together with document</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-comment"># attributes and sometimes on next receive...</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-85', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-86', 'ProcessNonBlocking', 'link-77');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">got_features</tt><tt class="py-op">:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine" class="py-name" href="#" onclick="return doclink('link-87', '_xmpp_connect_machine', 'link-63');">_xmpp_connect_machine</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">mode</tt><tt class="py-op">=</tt><tt class="py-string">'FAILURE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-string">'Missing &lt;features&gt; in 1.0 stream'</tt><tt class="py-op">)</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt id="link-88" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-88', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'got STREAM FEATURES in second recv'</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect_machine" class="py-name" href="#" onclick="return doclink('link-89', '_xmpp_connect_machine', 'link-63');">_xmpp_connect_machine</a></tt><tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">=</tt><tt class="py-string">'STREAM_STARTED'</tt><tt class="py-op">)</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'STREAM_STARTED'</tt><tt class="py-op">:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._on_stream_start()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_stream_start"><a title="nbxmpp.client_nb.NonBlockingClient._on_stream_start" class="py-name" href="#" onclick="return doclink('link-90', '_on_stream_start', 'link-90');">_on_stream_start</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._on_stream_start"></a><div id="NonBlockingClient._on_stream_start-def"><a name="L364"></a><tt class="py-lineno">364</tt> <a class="py-toggle" href="#" id="NonBlockingClient._on_stream_start-toggle" onclick="return toggle('NonBlockingClient._on_stream_start');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_stream_start">_on_stream_start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._on_stream_start-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._on_stream_start-expanded"><a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> Called after XMPP stream is opened. TLS negotiation may follow if</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> supported and desired.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stream_started</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'onreceive'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-comment"># we may already have been disconnected</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-91', 'onreceive', 'link-66');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">==</tt> <tt class="py-string">'plain'</tt><tt class="py-op">:</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">desired_security</tt> <tt class="py-op">==</tt> <tt class="py-string">'plain'</tt><tt class="py-op">:</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-comment"># if we want and have plain connection, we're done now</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH._on_connect()=nbxmpp.bosh.NonBlockingBOSH-class.html#_on_connect,Method nbxmpp.client_nb.NonBlockingClient._on_connect()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_connect,Method nbxmpp.transports_nb.NonBlockingTCP._on_connect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect,Method nbxmpp.transports_nb.NonBlockingTransport._on_connect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-92', '_on_connect', 'link-92');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-comment"># try to negotiate TLS</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.incoming_stream_version" class="py-name" href="#" onclick="return doclink('link-93', 'incoming_stream_version', 'link-80');">incoming_stream_version</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'1.0'</tt><tt class="py-op">:</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-comment"># if stream version is less than 1.0, we can't do more</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt id="link-94" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-94', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'While connecting with type = "tls": stream version '</tt> <tt class="py-op">+</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-string">'is less than 1.0'</tt><tt class="py-op">)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-95', '_on_connect', 'link-92');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-96', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-97', 'getTag', 'link-97');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'starttls'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-comment"># Server advertises TLS support, start negotiation</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stream_started</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt id="link-98" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-98', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'TLS supported by remote server. Requesting TLS start.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._tls_negotiation_handler()=nbxmpp.client_nb.NonBlockingClient-class.html#_tls_negotiation_handler"><a title="nbxmpp.client_nb.NonBlockingClient._tls_negotiation_handler" class="py-name" href="#" onclick="return doclink('link-99', '_tls_negotiation_handler', 'link-99');">_tls_negotiation_handler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt id="link-100" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-100', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'While connecting with type = "tls": TLS unsupported '</tt> <tt class="py-op">+</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-string">'by remote server'</tt><tt class="py-op">)</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-101', '_on_connect', 'link-92');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'ssl'</tt><tt class="py-op">,</tt> <tt class="py-string">'tls'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-102', '_on_connect', 'link-92');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-string">'Stream opened for unsupported connection'</tt> </tt>
+</div><a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._tls_negotiation_handler"></a><div id="NonBlockingClient._tls_negotiation_handler-def"><a name="L402"></a><tt class="py-lineno">402</tt> <a class="py-toggle" href="#" id="NonBlockingClient._tls_negotiation_handler-toggle" onclick="return toggle('NonBlockingClient._tls_negotiation_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_tls_negotiation_handler">_tls_negotiation_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">con</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._tls_negotiation_handler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._tls_negotiation_handler-expanded"><a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"><tt class="py-docstring"> Take care of TLS negotioation with &lt;starttls&gt;</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt id="link-103" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-103', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-------------tls_negotiaton_handler() &gt;&gt; tag: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">tag</tt><tt class="py-op">)</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">con</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-comment"># starting state when we send the &lt;starttls&gt;</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandlerOnce()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandlerOnce" class="py-name" href="#" onclick="return doclink('link-104', 'RegisterHandlerOnce', 'link-104');">RegisterHandlerOnce</a></tt><tt class="py-op">(</tt><tt class="py-string">'proceed'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._tls_negotiation_handler" class="py-name" href="#" onclick="return doclink('link-105', '_tls_negotiation_handler', 'link-99');">_tls_negotiation_handler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-106" class="py-name"><a title="nbxmpp.protocol.NS_TLS" class="py-name" href="#" onclick="return doclink('link-106', 'NS_TLS', 'link-7');">NS_TLS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandlerOnce" class="py-name" href="#" onclick="return doclink('link-107', 'RegisterHandlerOnce', 'link-104');">RegisterHandlerOnce</a></tt><tt class="py-op">(</tt><tt class="py-string">'failure'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._tls_negotiation_handler" class="py-name" href="#" onclick="return doclink('link-108', '_tls_negotiation_handler', 'link-99');">_tls_negotiation_handler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-109" class="py-name"><a title="nbxmpp.protocol.NS_TLS" class="py-name" href="#" onclick="return doclink('link-109', 'NS_TLS', 'link-7');">NS_TLS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-110', 'send', 'link-110');">send</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;starttls xmlns="%s"/&gt;'</tt> <tt class="py-op">%</tt> <tt id="link-111" class="py-name"><a title="nbxmpp.protocol.NS_TLS" class="py-name" href="#" onclick="return doclink('link-111', 'NS_TLS', 'link-7');">NS_TLS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-comment"># we got &lt;proceed&gt; or &lt;failure&gt;</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-112', 'getNamespace', 'link-112');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt id="link-113" class="py-name"><a title="nbxmpp.protocol.NS_TLS" class="py-name" href="#" onclick="return doclink('link-113', 'NS_TLS', 'link-7');">NS_TLS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-114', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown namespace: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-115', 'getNamespace', 'link-112');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">tagname</tt> <tt class="py-op">=</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-116', 'getName', 'link-116');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tagname</tt> <tt class="py-op">==</tt> <tt class="py-string">'failure'</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-117', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-string">'TLS &lt;failure&gt; received: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">tag</tt><tt class="py-op">)</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt id="link-118" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-118', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Got starttls proceed response. Switching to TLS/SSL...'</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-comment"># following call wouldn't work for BOSH transport but it doesn't matter</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-comment"># because &lt;starttls&gt; negotiation with BOSH is forbidden</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTCP.tls_init()=nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init"><a title="nbxmpp.transports_nb.NonBlockingTCP.tls_init" class="py-name" href="#" onclick="return doclink('link-119', 'tls_init', 'link-119');">tls_init</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">on_succ</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._xmpp_connect" class="py-name" href="#" onclick="return doclink('link-120', '_xmpp_connect', 'link-59');">_xmpp_connect</a></tt><tt class="py-op">(</tt><tt class="py-name">socket_type</tt><tt class="py-op">=</tt><tt class="py-string">'tls'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">on_fail</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-121', 'disconnect', 'link-39');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-string">'error while etabilishing TLS'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._on_connect"></a><div id="NonBlockingClient._on_connect-def"><a name="L430"></a><tt class="py-lineno">430</tt> <a class="py-toggle" href="#" id="NonBlockingClient._on_connect-toggle" onclick="return toggle('NonBlockingClient._on_connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_connect">_on_connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._on_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._on_connect-expanded"><a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"><tt class="py-docstring"> Preceed call of on_connect callback</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-122', 'onreceive', 'link-66');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.raise_event"></a><div id="NonBlockingClient.raise_event-def"><a name="L437"></a><tt class="py-lineno">437</tt> <a class="py-toggle" href="#" id="NonBlockingClient.raise_event-toggle" onclick="return toggle('NonBlockingClient.raise_event');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#raise_event">raise_event</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">event_type</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.raise_event-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.raise_event-expanded"><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"><tt class="py-docstring"> Raise event to connection instance. DATA_SENT and DATA_RECIVED events</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"><tt class="py-docstring"> are used in XML console to show XMPP traffic</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt id="link-123" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-123', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'raising event from transport: :::::%s::::\n_____________\n%s\n_____________\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">event_type</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'Dispatcher'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-124', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.Event()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-125', 'Event', 'link-125');">Event</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">event_type</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"><tt class="py-comment">### follows code for authentication, resource bind, session and roster download</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.auth"></a><div id="NonBlockingClient.auth-def"><a name="L450"></a><tt class="py-lineno">450</tt> <a class="py-toggle" href="#" id="NonBlockingClient.auth-toggle" onclick="return toggle('NonBlockingClient.auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#auth">auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">resource</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">sasl</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">on_auth</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.auth-expanded"><a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"><tt class="py-docstring"> Authenticate connnection and bind resource. If resource is not provided</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"><tt class="py-docstring"> random one or library name used</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"><tt class="py-docstring"> :param user: XMPP username</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"><tt class="py-docstring"> :param password: XMPP password</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"><tt class="py-docstring"> :param resource: resource that shall be used for auth/connecting</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-docstring"> :param sasl: Boolean indicating if SASL shall be used. (default: True)</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"><tt class="py-docstring"> :param on_auth: Callback, called after auth. On auth failure, argument</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"><tt class="py-docstring"> is None.</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_User</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Password</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Resource</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sasl</tt> <tt class="py-op">=</tt> <tt class="py-name">resource</tt><tt class="py-op">,</tt> <tt class="py-name">sasl</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt> <tt class="py-op">=</tt> <tt class="py-name">on_auth</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._on_doc_attrs()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_doc_attrs"><a title="nbxmpp.client_nb.NonBlockingClient._on_doc_attrs" class="py-name" href="#" onclick="return doclink('link-126', '_on_doc_attrs', 'link-126');">_on_doc_attrs</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+</div><a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._on_old_auth"></a><div id="NonBlockingClient._on_old_auth-def"><a name="L468"></a><tt class="py-lineno">468</tt> <a class="py-toggle" href="#" id="NonBlockingClient._on_old_auth-toggle" onclick="return toggle('NonBlockingClient._on_old_auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_old_auth">_on_old_auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">res</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._on_old_auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._on_old_auth-expanded"><a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"><tt class="py-docstring"> Callback used by NON-SASL auth. On auth failure, res is None</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">res</tt><tt class="py-op">:</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">+=</tt> <tt class="py-string">'+old_auth'</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'old_auth'</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._on_sasl_auth"></a><div id="NonBlockingClient._on_sasl_auth-def"><a name="L478"></a><tt class="py-lineno">478</tt> <a class="py-toggle" href="#" id="NonBlockingClient._on_sasl_auth-toggle" onclick="return toggle('NonBlockingClient._on_sasl_auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_sasl_auth">_on_sasl_auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">res</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._on_sasl_auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._on_sasl_auth-expanded"><a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"><tt class="py-docstring"> Used internally. On auth failure, res is None</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-127', 'onreceive', 'link-66');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">res</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">+=</tt> <tt class="py-string">'+sasl'</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'sasl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._on_doc_attrs"></a><div id="NonBlockingClient._on_doc_attrs-def"><a name="L489"></a><tt class="py-lineno">489</tt> <a class="py-toggle" href="#" id="NonBlockingClient._on_doc_attrs-toggle" onclick="return toggle('NonBlockingClient._on_doc_attrs');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_doc_attrs">_on_doc_attrs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._on_doc_attrs-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._on_doc_attrs-expanded"><a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"><tt class="py-docstring"> Plug authentication objects and start auth</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sasl</tt><tt class="py-op">:</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt id="link-128" class="py-name"><a title="nbxmpp.auth_nb" class="py-name" href="#" onclick="return doclink('link-128', 'auth_nb', 'link-2');">auth_nb</a></tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-129', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-130', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_User</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Password</tt><tt class="py-op">,</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._on_start_sasl()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_start_sasl"><a title="nbxmpp.client_nb.NonBlockingClient._on_start_sasl" class="py-name" href="#" onclick="return doclink('link-131', '_on_start_sasl', 'link-131');">_on_start_sasl</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-132', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'SASL'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sasl</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-133', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">==</tt> <tt class="py-string">'not-supported'</tt><tt class="py-op">:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Resource</tt><tt class="py-op">:</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Resource</tt> <tt class="py-op">=</tt> <tt class="py-string">'xmpppy'</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt id="link-134" class="py-name"><a title="nbxmpp.auth_nb" class="py-name" href="#" onclick="return doclink('link-134', 'auth_nb', 'link-2');">auth_nb</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingNonSASL" class="py-name" href="#" onclick="return doclink('link-135', 'NonBlockingNonSASL', 'link-19');">NonBlockingNonSASL</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-136', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_User</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Password</tt><tt class="py-op">,</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Resource</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._on_old_auth()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_old_auth"><a title="nbxmpp.client_nb.NonBlockingClient._on_old_auth" class="py-name" href="#" onclick="return doclink('link-137', '_on_old_auth', 'link-137');">_on_old_auth</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-138', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-139', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method nbxmpp.auth_nb.SASL.auth()=nbxmpp.auth_nb.SASL-class.html#auth,Method nbxmpp.client_nb.NonBlockingClient.auth()=nbxmpp.client_nb.NonBlockingClient-class.html#auth"><a title="nbxmpp.auth_nb.SASL.auth
+nbxmpp.client_nb.NonBlockingClient.auth" class="py-name" href="#" onclick="return doclink('link-140', 'auth', 'link-140');">auth</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._on_start_sasl"></a><div id="NonBlockingClient._on_start_sasl-def"><a name="L507"></a><tt class="py-lineno">507</tt> <a class="py-toggle" href="#" id="NonBlockingClient._on_start_sasl-toggle" onclick="return toggle('NonBlockingClient._on_start_sasl');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_start_sasl">_on_start_sasl</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._on_start_sasl-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._on_start_sasl-expanded"><a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"><tt class="py-docstring"> Callback used by SASL, called on each auth step</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-141', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-142', 'ProcessNonBlocking', 'link-77');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'SASL'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-comment"># SASL is pluged out, possible disconnect</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-143', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">==</tt> <tt class="py-string">'in-process'</tt><tt class="py-op">:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-144', 'onreceive', 'link-66');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-145', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">==</tt> <tt class="py-string">'failure'</tt><tt class="py-op">:</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-comment"># wrong user/pass, stop auth</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'SASL'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-146', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-147', 'PlugOut', 'link-16');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># FIXME: is this intended? We use ''elsewhere</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._on_sasl_auth()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_sasl_auth"><a title="nbxmpp.client_nb.NonBlockingClient._on_sasl_auth" class="py-name" href="#" onclick="return doclink('link-148', '_on_sasl_auth', 'link-148');">_on_sasl_auth</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="nbxmpp.auth_nb.SASL" class="py-name" href="#" onclick="return doclink('link-149', 'SASL', 'link-21');">SASL</a></tt><tt class="py-op">.</tt><tt class="py-name">startsasl</tt> <tt class="py-op">==</tt> <tt class="py-string">'success'</tt><tt class="py-op">:</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-name">nb_bind</tt> <tt class="py-op">=</tt> <tt id="link-150" class="py-name"><a title="nbxmpp.auth_nb" class="py-name" href="#" onclick="return doclink('link-150', 'auth_nb', 'link-2');">auth_nb</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind
+nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind" class="py-name" href="#" onclick="return doclink('link-151', 'NonBlockingBind', 'link-17');">NonBlockingBind</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-152', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-name">sm</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">resumption</tt><tt class="py-op">:</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-name">nb_bind</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-name">sm</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method nbxmpp.smacks.Smacks.set_owner()=nbxmpp.smacks.Smacks-class.html#set_owner"><a title="nbxmpp.smacks.Smacks.set_owner" class="py-name" href="#" onclick="return doclink('link-153', 'set_owner', 'link-153');">set_owner</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-154', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-op">=</tt> <tt class="py-name">sm</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">nb_bind</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-155', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_auth</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'sasl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">nb_bind</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-156', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-157', 'onreceive', 'link-66');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._on_auth_bind()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_auth_bind"><a title="nbxmpp.client_nb.NonBlockingClient._on_auth_bind" class="py-name" href="#" onclick="return doclink('link-158', '_on_auth_bind', 'link-158');">_on_auth_bind</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient._on_auth_bind"></a><div id="NonBlockingClient._on_auth_bind-def"><a name="L540"></a><tt class="py-lineno">540</tt> <a class="py-toggle" href="#" id="NonBlockingClient._on_auth_bind-toggle" onclick="return toggle('NonBlockingClient._on_auth_bind');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_auth_bind">_on_auth_bind</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient._on_auth_bind-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient._on_auth_bind-expanded"><a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: Why use this callback and not bind directly?</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-159', 'Dispatcher', 'link-61');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-160', 'ProcessNonBlocking', 'link-77');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind
+nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind" class="py-name" href="#" onclick="return doclink('link-161', 'NonBlockingBind', 'link-17');">NonBlockingBind</a></tt><tt class="py-op">.</tt><tt class="py-name">bound</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind
+nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind" class="py-name" href="#" onclick="return doclink('link-162', 'NonBlockingBind', 'link-17');">NonBlockingBind</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind
+nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind" class="py-name" href="#" onclick="return doclink('link-163', 'NonBlockingBind', 'link-17');">NonBlockingBind</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_Resource</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient._on_sasl_auth" class="py-name" href="#" onclick="return doclink('link-164', '_on_sasl_auth', 'link-148');">_on_sasl_auth</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.initRoster"></a><div id="NonBlockingClient.initRoster-def"><a name="L549"></a><tt class="py-lineno">549</tt> <a class="py-toggle" href="#" id="NonBlockingClient.initRoster-toggle" onclick="return toggle('NonBlockingClient.initRoster');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#initRoster">initRoster</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">version</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.initRoster-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.initRoster-expanded"><a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"><tt class="py-docstring"> Plug in the roster</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'NonBlockingRoster'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-165" class="py-name"><a title="nbxmpp.roster_nb" class="py-name" href="#" onclick="return doclink('link-165', 'roster_nb', 'link-3');">roster_nb</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster" class="py-name" href="#" onclick="return doclink('link-166', 'NonBlockingRoster', 'link-15');">NonBlockingRoster</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-167', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-name">version</tt><tt class="py-op">=</tt><tt class="py-name">version</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-168', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.getRoster"></a><div id="NonBlockingClient.getRoster-def"><a name="L556"></a><tt class="py-lineno">556</tt> <a class="py-toggle" href="#" id="NonBlockingClient.getRoster-toggle" onclick="return toggle('NonBlockingClient.getRoster');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#getRoster">getRoster</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">on_ready</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">force</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.getRoster-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.getRoster-expanded"><a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"><tt class="py-docstring"> Return the Roster instance, previously plugging it in and requesting</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"><tt class="py-docstring"> roster from server if needed</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'NonBlockingRoster'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster" class="py-name" href="#" onclick="return doclink('link-169', 'NonBlockingRoster', 'link-15');">NonBlockingRoster</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient.getRoster()=nbxmpp.client_nb.NonBlockingClient-class.html#getRoster,Method nbxmpp.roster_nb.NonBlockingRoster.getRoster()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getRoster"><a title="nbxmpp.client_nb.NonBlockingClient.getRoster
+nbxmpp.roster_nb.NonBlockingRoster.getRoster" class="py-name" href="#" onclick="return doclink('link-170', 'getRoster', 'link-170');">getRoster</a></tt><tt class="py-op">(</tt><tt class="py-name">on_ready</tt><tt class="py-op">,</tt> <tt class="py-name">force</tt><tt class="py-op">)</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.sendPresence"></a><div id="NonBlockingClient.sendPresence-def"><a name="L565"></a><tt class="py-lineno">565</tt> <a class="py-toggle" href="#" id="NonBlockingClient.sendPresence-toggle" onclick="return toggle('NonBlockingClient.sendPresence');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#sendPresence">sendPresence</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">requestRoster</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.sendPresence-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.sendPresence-expanded"><a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"><tt class="py-docstring"> Send some specific presence state. Can also request roster from server if</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"><tt class="py-docstring"> according agrument is set</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">requestRoster</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: used somewhere?</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt id="link-171" class="py-name"><a title="nbxmpp.roster_nb" class="py-name" href="#" onclick="return doclink('link-171', 'roster_nb', 'link-3');">roster_nb</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster" class="py-name" href="#" onclick="return doclink('link-172', 'NonBlockingRoster', 'link-15');">NonBlockingRoster</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-173', 'get_instance', 'link-38');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-174', 'PlugIn', 'link-52');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-175', 'send', 'link-110');">send</a></tt><tt class="py-op">(</tt><tt id="link-176" class="py-name"><a title="nbxmpp.dispatcher_nb" class="py-name" href="#" onclick="return doclink('link-176', 'dispatcher_nb', 'link-1');">dispatcher_nb</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Class nbxmpp.protocol.Presence=nbxmpp.protocol.Presence-class.html"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-177', 'Presence', 'link-177');">Presence</a></tt><tt class="py-op">(</tt><tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-name">typ</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"><tt class="py-comment">### following methods are moved from blocking client class of xmpppy</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.RegisterDisconnectHandler"></a><div id="NonBlockingClient.RegisterDisconnectHandler-def"><a name="L579"></a><tt class="py-lineno">579</tt> <a class="py-toggle" href="#" id="NonBlockingClient.RegisterDisconnectHandler-toggle" onclick="return toggle('NonBlockingClient.RegisterDisconnectHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#RegisterDisconnectHandler">RegisterDisconnectHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.RegisterDisconnectHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.RegisterDisconnectHandler-expanded"><a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-docstring"> Register handler that will be called on disconnect</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_handlers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.UnregisterDisconnectHandler"></a><div id="NonBlockingClient.UnregisterDisconnectHandler-def"><a name="L585"></a><tt class="py-lineno">585</tt> <a class="py-toggle" href="#" id="NonBlockingClient.UnregisterDisconnectHandler-toggle" onclick="return toggle('NonBlockingClient.UnregisterDisconnectHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#UnregisterDisconnectHandler">UnregisterDisconnectHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.UnregisterDisconnectHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.UnregisterDisconnectHandler-expanded"><a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"><tt class="py-docstring"> Unregister handler that is called on disconnect</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_handlers</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.DisconnectHandler"></a><div id="NonBlockingClient.DisconnectHandler-def"><a name="L591"></a><tt class="py-lineno">591</tt> <a class="py-toggle" href="#" id="NonBlockingClient.DisconnectHandler-toggle" onclick="return toggle('NonBlockingClient.DisconnectHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#DisconnectHandler">DisconnectHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.DisconnectHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.DisconnectHandler-expanded"><a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"><tt class="py-docstring"> Default disconnect handler. Just raises an IOError. If you choosed to use</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"><tt class="py-docstring"> this class in your production client, override this method or at least</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"><tt class="py-docstring"> unregister it.</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'Disconnected from server.'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.get_connect_type"></a><div id="NonBlockingClient.get_connect_type-def"><a name="L599"></a><tt class="py-lineno">599</tt> <a class="py-toggle" href="#" id="NonBlockingClient.get_connect_type-toggle" onclick="return toggle('NonBlockingClient.get_connect_type');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#get_connect_type">get_connect_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.get_connect_type-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.get_connect_type-expanded"><a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"><tt class="py-docstring"> Return connection state. F.e.: None / 'tls' / 'plain+non_sasl'</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> </tt>
+</div><a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingClient.get_peerhost"></a><div id="NonBlockingClient.get_peerhost-def"><a name="L605"></a><tt class="py-lineno">605</tt> <a class="py-toggle" href="#" id="NonBlockingClient.get_peerhost-toggle" onclick="return toggle('NonBlockingClient.get_peerhost');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.client_nb.NonBlockingClient-class.html#get_peerhost">get_peerhost</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingClient.get_peerhost-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingClient.get_peerhost-expanded"><a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"><tt class="py-docstring"> Gets the ip address of the account, from which is made connection to the</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"><tt class="py-docstring"> server (e.g. IP and port of socket)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"><tt class="py-docstring"> We will create listening socket on the same ip</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: tuple (ip, port) is expected (and checked for) but port num is</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-comment"># useless</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">peerhost</tt> </tt>
+</div></div><a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.client_nb.NonBlockingClient-class.html b/doc/apidocs/nbxmpp.client_nb.NonBlockingClient-class.html
new file mode 100644
index 0000000..68c164b
--- /dev/null
+++ b/doc/apidocs/nbxmpp.client_nb.NonBlockingClient-class.html
@@ -0,0 +1,1232 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.client_nb.NonBlockingClient</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.client_nb-module.html">Module&nbsp;client_nb</a> ::
+ Class&nbsp;NonBlockingClient
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.client_nb.NonBlockingClient-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingClient</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient">source&nbsp;code</a></span></p>
+Client class is XMPP connection mountpoint. Objects for authentication,
+network communication, roster, xml parsing ... are plugged to client object.
+Client implements the abstract behavior - mostly negotioation and callbacks
+handling, whereas underlying modules take care of feature-specific logic
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">domain</span>,
+ <span class="summary-sig-arg">idlequeue</span>,
+ <span class="summary-sig-arg">caller</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Caches connection data</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#disconnect" class="summary-sig-name">disconnect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+ Called on disconnection - disconnect callback is picked based on state of
+the client.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.disconnect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#connect" class="summary-sig-name">connect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">on_connect</span>,
+ <span class="summary-sig-arg">on_connect_failure</span>,
+ <span class="summary-sig-arg">hostname</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">5222</span>,
+ <span class="summary-sig-arg">on_proxy_failure</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">proxy</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">secure_tuple</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">plain</code><code class="variable-quote">'</code><code class="variable-op">, </code>None<code class="variable-op">, </code>None<code class="variable-group">)</code></span>)</span><br />
+ Open XMPP connection (open XML streams in both directions)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_resolve_hostname" class="summary-sig-name" onclick="show_private();">_resolve_hostname</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">hostname</span>,
+ <span class="summary-sig-arg">port</span>,
+ <span class="summary-sig-arg">on_success</span>)</span><br />
+ Wrapper for getaddinfo call</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._resolve_hostname">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_try_next_ip" class="summary-sig-name" onclick="show_private();">_try_next_ip</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">err_message</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Iterate over IP addresses tries to connect to it</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._try_next_ip">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#incoming_stream_version" class="summary-sig-name">incoming_stream_version</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Get version of xml stream</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.incoming_stream_version">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect" class="summary-sig-name" onclick="show_private();">_xmpp_connect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">socket_type</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Start XMPP connecting process - open the XML stream. Is called after TCP
+connection is established or after switch to TLS when successfully
+negotiated with &lt;starttls&gt;.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._xmpp_connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_xmpp_connect_machine" class="summary-sig-name" onclick="show_private();">_xmpp_connect_machine</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">mode</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Finite automaton taking care of stream opening and features tag handling.
+Calls _on_stream_start when stream is started, and disconnect() on
+failure.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._xmpp_connect_machine">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_stream_start" class="summary-sig-name" onclick="show_private();">_on_stream_start</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called after XMPP stream is opened. TLS negotiation may follow if
+supported and desired.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_stream_start">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_tls_negotiation_handler" class="summary-sig-name" onclick="show_private();">_tls_negotiation_handler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">con</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">tag</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Take care of TLS negotioation with &lt;starttls&gt;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._tls_negotiation_handler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_connect" class="summary-sig-name" onclick="show_private();">_on_connect</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Preceed call of on_connect callback</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#raise_event" class="summary-sig-name">raise_event</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">event_type</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Raise event to connection instance. DATA_SENT and DATA_RECIVED events
+are used in XML console to show XMPP traffic</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.raise_event">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#auth" class="summary-sig-name">auth</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">user</span>,
+ <span class="summary-sig-arg">password</span>,
+ <span class="summary-sig-arg">resource</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">sasl</span>=<span class="summary-sig-default">True</span>,
+ <span class="summary-sig-arg">on_auth</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Authenticate connnection and bind resource. If resource is not provided
+random one or library name used</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.auth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_old_auth" class="summary-sig-name" onclick="show_private();">_on_old_auth</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">res</span>)</span><br />
+ Callback used by NON-SASL auth. On auth failure, res is None</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_old_auth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_sasl_auth" class="summary-sig-name" onclick="show_private();">_on_sasl_auth</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">res</span>)</span><br />
+ Used internally. On auth failure, res is None</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_sasl_auth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_doc_attrs" class="summary-sig-name" onclick="show_private();">_on_doc_attrs</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Plug authentication objects and start auth</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_doc_attrs">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_start_sasl" class="summary-sig-name" onclick="show_private();">_on_start_sasl</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Callback used by SASL, called on each auth step</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_start_sasl">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#_on_auth_bind" class="summary-sig-name" onclick="show_private();">_on_auth_bind</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_auth_bind">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#initRoster" class="summary-sig-name">initRoster</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">version</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+ Plug in the roster</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.initRoster">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#getRoster" class="summary-sig-name">getRoster</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">on_ready</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">force</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Return the Roster instance, previously plugging it in and requesting
+roster from server if needed</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.getRoster">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#sendPresence" class="summary-sig-name">sendPresence</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">requestRoster</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Send some specific presence state. Can also request roster from server if
+according agrument is set</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.sendPresence">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#RegisterDisconnectHandler" class="summary-sig-name">RegisterDisconnectHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handler</span>)</span><br />
+ Register handler that will be called on disconnect</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.RegisterDisconnectHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#UnregisterDisconnectHandler" class="summary-sig-name">UnregisterDisconnectHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handler</span>)</span><br />
+ Unregister handler that is called on disconnect</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.UnregisterDisconnectHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#DisconnectHandler" class="summary-sig-name">DisconnectHandler</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Default disconnect handler. Just raises an IOError. If you choosed to use
+this class in your production client, override this method or at least
+unregister it.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.DisconnectHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#get_connect_type" class="summary-sig-name">get_connect_type</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return connection state. F.e.: None / 'tls' / 'plain+non_sasl'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.get_connect_type">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.client_nb.NonBlockingClient-class.html#get_peerhost" class="summary-sig-name">get_peerhost</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Gets the ip address of the account, from which is made connection to the
+server (e.g. IP and port of socket)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.get_peerhost">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">domain</span>,
+ <span class="sig-arg">idlequeue</span>,
+ <span class="sig-arg">caller</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Caches connection data
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>domain</code></strong> - domain - for to: attribute (from account info)</li>
+ <li><strong class="pname"><code>idlequeue</code></strong> - processing idlequeue</li>
+ <li><strong class="pname"><code>caller</code></strong> - calling object - it has to implement methods
+_event_dispatcher which is called from dispatcher instance</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="disconnect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">disconnect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.disconnect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called on disconnection - disconnect callback is picked based on state of
+the client.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="connect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">connect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">on_connect</span>,
+ <span class="sig-arg">on_connect_failure</span>,
+ <span class="sig-arg">hostname</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">port</span>=<span class="sig-default">5222</span>,
+ <span class="sig-arg">on_proxy_failure</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">proxy</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">secure_tuple</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">plain</code><code class="variable-quote">'</code><code class="variable-op">, </code>None<code class="variable-op">, </code>None<code class="variable-group">)</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Open XMPP connection (open XML streams in both directions)
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>on_connect</code></strong> - called after stream is successfully opened</li>
+ <li><strong class="pname"><code>on_connect_failure</code></strong> - called when error occures during connection</li>
+ <li><strong class="pname"><code>hostname</code></strong> - hostname of XMPP server from SRV request</li>
+ <li><strong class="pname"><code>port</code></strong> - port number of XMPP server</li>
+ <li><strong class="pname"><code>on_proxy_failure</code></strong> - called if error occurres during TCP connection to
+proxy server or during proxy connecting process</li>
+ <li><strong class="pname"><code>proxy</code></strong> - dictionary with proxy data. It should contain at least
+values for keys 'host' and 'port' - connection details for proxy serve
+and optionally keys 'user' and 'pass' as proxy credentials</li>
+ <li><strong class="pname"><code>secure_tuple</code></strong> - tuple of (desired connection type, cacerts, mycerts)
+connection type can be 'ssl' - TLS established after TCP connection,
+'tls' - TLS established after negotiation with starttls, or 'plain'.
+cacerts, mycerts - see tls_nb.NonBlockingTLS constructor for more
+details</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_resolve_hostname"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_resolve_hostname</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">hostname</span>,
+ <span class="sig-arg">port</span>,
+ <span class="sig-arg">on_success</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._resolve_hostname">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Wrapper for getaddinfo call</p>
+<p>FIXME: getaddinfo blocks</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_try_next_ip"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_try_next_ip</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">err_message</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._try_next_ip">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Iterate over IP addresses tries to connect to it
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="incoming_stream_version"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">incoming_stream_version</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.incoming_stream_version">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get version of xml stream
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_xmpp_connect"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_xmpp_connect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">socket_type</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._xmpp_connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Start XMPP connecting process - open the XML stream. Is called after TCP
+connection is established or after switch to TLS when successfully
+negotiated with &lt;starttls&gt;.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_xmpp_connect_machine"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_xmpp_connect_machine</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">mode</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">data</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._xmpp_connect_machine">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Finite automaton taking care of stream opening and features tag handling.
+Calls _on_stream_start when stream is started, and disconnect() on
+failure.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_stream_start"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_stream_start</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_stream_start">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called after XMPP stream is opened. TLS negotiation may follow if
+supported and desired.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_tls_negotiation_handler"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_tls_negotiation_handler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">con</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">tag</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._tls_negotiation_handler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Take care of TLS negotioation with &lt;starttls&gt;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_connect"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_connect</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Preceed call of on_connect callback
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="raise_event"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">raise_event</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">event_type</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.raise_event">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Raise event to connection instance. DATA_SENT and DATA_RECIVED events
+are used in XML console to show XMPP traffic
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="auth"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">auth</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">user</span>,
+ <span class="sig-arg">password</span>,
+ <span class="sig-arg">resource</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">sasl</span>=<span class="sig-default">True</span>,
+ <span class="sig-arg">on_auth</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.auth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Authenticate connnection and bind resource. If resource is not provided
+random one or library name used
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>user</code></strong> - XMPP username</li>
+ <li><strong class="pname"><code>password</code></strong> - XMPP password</li>
+ <li><strong class="pname"><code>resource</code></strong> - resource that shall be used for auth/connecting</li>
+ <li><strong class="pname"><code>sasl</code></strong> - Boolean indicating if SASL shall be used. (default: True)</li>
+ <li><strong class="pname"><code>on_auth</code></strong> - Callback, called after auth. On auth failure, argument
+is None.</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_old_auth"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_old_auth</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">res</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_old_auth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Callback used by NON-SASL auth. On auth failure, res is None
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_sasl_auth"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_sasl_auth</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">res</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_sasl_auth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Used internally. On auth failure, res is None
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_doc_attrs"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_doc_attrs</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_doc_attrs">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Plug authentication objects and start auth
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_start_sasl"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_start_sasl</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_start_sasl">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Callback used by SASL, called on each auth step
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_auth_bind"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_auth_bind</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient._on_auth_bind">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="initRoster"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">initRoster</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">version</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.initRoster">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Plug in the roster
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getRoster"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getRoster</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">on_ready</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">force</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.getRoster">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the Roster instance, previously plugging it in and requesting
+roster from server if needed
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="sendPresence"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">sendPresence</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">requestRoster</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.sendPresence">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send some specific presence state. Can also request roster from server if
+according agrument is set
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterDisconnectHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterDisconnectHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.RegisterDisconnectHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Register handler that will be called on disconnect
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="UnregisterDisconnectHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">UnregisterDisconnectHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.UnregisterDisconnectHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Unregister handler that is called on disconnect
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="DisconnectHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">DisconnectHandler</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.DisconnectHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Default disconnect handler. Just raises an IOError. If you choosed to use
+this class in your production client, override this method or at least
+unregister it.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_connect_type"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_connect_type</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.get_connect_type">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return connection state. F.e.: None / 'tls' / 'plain+non_sasl'
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_peerhost"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_peerhost</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.client_nb-pysrc.html#NonBlockingClient.get_peerhost">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Gets the ip address of the account, from which is made connection to the
+server (e.g. IP and port of socket)</p>
+<p>We will create listening socket on the same ip</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.dispatcher_nb-module.html b/doc/apidocs/nbxmpp.dispatcher_nb-module.html
new file mode 100644
index 0000000..27347c9
--- /dev/null
+++ b/doc/apidocs/nbxmpp.dispatcher_nb-module.html
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.dispatcher_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;dispatcher_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.dispatcher_nb-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module dispatcher_nb</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html">source&nbsp;code</a></span></p>
+Main xmpp decision making logic. Provides library with methods to assign
+different handlers to different XMPP stanzas and namespaces
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb.Dispatcher-class.html" class="summary-name">Dispatcher</a><br />
+ Why is this here - I needed to redefine Dispatcher for BOSH and easiest way
+was to inherit original Dispatcher (now renamed to XMPPDispatcher). Trouble
+is that reference used to access dispatcher instance is in Client attribute
+named by __class__.__name__ of the dispatcher instance .. long story short:
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html" class="summary-name">XMPPDispatcher</a><br />
+ Handles XMPP stream and is the first who takes control over a fresh stanza
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html" class="summary-name">BOSHDispatcher</a>
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.dispatcher_nb')">logging.getLogger('nbxmpp.dispatcher_nb')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb-module.html#DEFAULT_TIMEOUT_SECONDS" class="summary-name">DEFAULT_TIMEOUT_SECONDS</a> = <code title="25">25</code><br />
+ default timeout to wait for response for our id
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb-module.html#outgoingID" class="summary-name">outgoingID</a> = <code title="0">0</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb-module.html#XML_DECLARATION" class="summary-name">XML_DECLARATION</a> = <code title="'&lt;?xml version=\'1.0\'?&gt;'"><code class="variable-quote">'</code><code class="variable-string">&lt;?xml version=\'1.0\'?&gt;</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.dispatcher_nb-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <a href="nbxmpp.simplexml-module.html" title="nbxmpp.simplexml">simplexml</a>,
+ <span title="sys">sys</span>,
+ <span title="locale">locale</span>,
+ <span title="re">re</span>,
+ <span title="xml.parsers.expat.ExpatError">ExpatError</span>,
+ <a href="nbxmpp.plugin.PlugIn-class.html" title="nbxmpp.plugin.PlugIn">PlugIn</a>,
+ <span title="nbxmpp.protocol.NS_STREAMS">NS_STREAMS</span>,
+ <span title="nbxmpp.protocol.NS_XMPP_STREAMS">NS_XMPP_STREAMS</span>,
+ <span title="nbxmpp.protocol.NS_HTTP_BIND">NS_HTTP_BIND</span>,
+ <a href="nbxmpp.protocol.Iq-class.html" title="nbxmpp.protocol.Iq">Iq</a>,
+ <a href="nbxmpp.protocol.Presence-class.html" title="nbxmpp.protocol.Presence">Presence</a>,
+ <a href="nbxmpp.protocol.Message-class.html" title="nbxmpp.protocol.Message">Message</a>,
+ <a href="nbxmpp.protocol.Protocol-class.html" title="nbxmpp.protocol.Protocol">Protocol</a>,
+ <a href="nbxmpp.simplexml.Node-class.html" title="nbxmpp.protocol.Node">Node</a>,
+ <a href="nbxmpp.protocol.Error-class.html" title="nbxmpp.protocol.Error">Error</a>,
+ <span title="nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED">ERR_FEATURE_NOT_IMPLEMENTED</span>,
+ <a href="nbxmpp.protocol.StreamError-class.html" title="nbxmpp.protocol.StreamError">StreamError</a>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.dispatcher_nb')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="DEFAULT_TIMEOUT_SECONDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">DEFAULT_TIMEOUT_SECONDS</h3>
+ default timeout to wait for response for our id
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+25
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="outgoingID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">outgoingID</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+0
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="XML_DECLARATION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">XML_DECLARATION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">&lt;?xml version=\'1.0\'?&gt;</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html b/doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html
new file mode 100644
index 0000000..ef16fa2
--- /dev/null
+++ b/doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html
@@ -0,0 +1,1063 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.dispatcher_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;dispatcher_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.dispatcher_nb-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.dispatcher_nb-module.html">Module nbxmpp.dispatcher_nb</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## dispatcher_nb.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## based on dispatcher.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2005 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## modified by Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">Main xmpp decision making logic. Provides library with methods to assign</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">different handlers to different XMPP stanzas and namespaces</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.simplexml=nbxmpp.simplexml-module.html"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-0', 'simplexml', 'link-0');">simplexml</a></tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">locale</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">parsers</tt><tt class="py-op">.</tt><tt class="py-name">expat</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ExpatError</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugin()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugin,Method nbxmpp.auth_nb.NonBlockingNonSASL.plugin()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin,Method nbxmpp.auth_nb.SASL.plugin()=nbxmpp.auth_nb.SASL-class.html#plugin,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugin()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin,Module nbxmpp.plugin=nbxmpp.plugin-module.html,Method nbxmpp.roster_nb.NonBlockingRoster.plugin()=nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin,Method nbxmpp.tls_nb.NonBlockingTLS.plugin()=nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin,Method nbxmpp.transports_nb.NonBlockingTransport.plugin()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin"><a title="nbxmpp.auth_nb.NonBlockingBind.plugin
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin
+nbxmpp.auth_nb.SASL.plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin
+nbxmpp.plugin
+nbxmpp.roster_nb.NonBlockingRoster.plugin
+nbxmpp.tls_nb.NonBlockingTLS.plugin
+nbxmpp.transports_nb.NonBlockingTransport.plugin" class="py-name" href="#" onclick="return doclink('link-1', 'plugin', 'link-1');">plugin</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn,Method nbxmpp.dispatcher_nb.Dispatcher.PlugIn()=nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn,Class nbxmpp.plugin.PlugIn=nbxmpp.plugin.PlugIn-class.html,Method nbxmpp.plugin.PlugIn.PlugIn()=nbxmpp.plugin.PlugIn-class.html#PlugIn"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-2', 'PlugIn', 'link-2');">PlugIn</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-3', 'protocol', 'link-3');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">(</tt><tt id="link-4" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAMS=nbxmpp.protocol-module.html#NS_STREAMS"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-4', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Variable nbxmpp.protocol.NS_XMPP_STREAMS=nbxmpp.protocol-module.html#NS_XMPP_STREAMS"><a title="nbxmpp.protocol.NS_XMPP_STREAMS" class="py-name" href="#" onclick="return doclink('link-5', 'NS_XMPP_STREAMS', 'link-5');">NS_XMPP_STREAMS</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Variable nbxmpp.protocol.NS_HTTP_BIND=nbxmpp.protocol-module.html#NS_HTTP_BIND"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-6', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name" targets="Class nbxmpp.protocol.Iq=nbxmpp.protocol.Iq-class.html"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-7', 'Iq', 'link-7');">Iq</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Class nbxmpp.protocol.Presence=nbxmpp.protocol.Presence-class.html"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-8', 'Presence', 'link-8');">Presence</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt id="link-9" class="py-name" targets="Class nbxmpp.protocol.Message=nbxmpp.protocol.Message-class.html"><a title="nbxmpp.protocol.Message" class="py-name" href="#" onclick="return doclink('link-9', 'Message', 'link-9');">Message</a></tt><tt class="py-op">,</tt> <tt id="link-10" class="py-name" targets="Class nbxmpp.protocol.Protocol=nbxmpp.protocol.Protocol-class.html"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-10', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-11', 'Node', 'link-11');">Node</a></tt><tt class="py-op">,</tt> <tt id="link-12" class="py-name" targets="Class nbxmpp.protocol.Error=nbxmpp.protocol.Error-class.html,Class nbxmpp.tls_nb.SSLWrapper.Error=nbxmpp.tls_nb.SSLWrapper.Error-class.html"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-12', 'Error', 'link-12');">Error</a></tt><tt class="py-op">,</tt> <tt id="link-13" class="py-name" targets="Variable nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED=nbxmpp-module.html#ERR_FEATURE_NOT_IMPLEMENTED,Variable nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED=nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED"><a title="nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED
+nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-13', 'ERR_FEATURE_NOT_IMPLEMENTED', 'link-13');">ERR_FEATURE_NOT_IMPLEMENTED</a></tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name" targets="Class nbxmpp.protocol.StreamError=nbxmpp.protocol.StreamError-class.html"><a title="nbxmpp.protocol.StreamError" class="py-name" href="#" onclick="return doclink('link-14', 'StreamError', 'link-14');">StreamError</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-15', 'log', 'link-15');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.dispatcher_nb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-comment">#: default timeout to wait for response for our id</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable nbxmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS=nbxmpp.dispatcher_nb-module.html#DEFAULT_TIMEOUT_SECONDS"><a title="nbxmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-16', 'DEFAULT_TIMEOUT_SECONDS', 'link-16');">DEFAULT_TIMEOUT_SECONDS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">25</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt id="link-17" class="py-name" targets="Variable nbxmpp.dispatcher_nb.outgoingID=nbxmpp.dispatcher_nb-module.html#outgoingID"><a title="nbxmpp.dispatcher_nb.outgoingID" class="py-name" href="#" onclick="return doclink('link-17', 'outgoingID', 'link-17');">outgoingID</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable nbxmpp.dispatcher_nb.XML_DECLARATION=nbxmpp.dispatcher_nb-module.html#XML_DECLARATION"><a title="nbxmpp.dispatcher_nb.XML_DECLARATION" class="py-name" href="#" onclick="return doclink('link-18', 'XML_DECLARATION', 'link-18');">XML_DECLARATION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'&lt;?xml version=\'1.0\'?&gt;'</tt> </tt>
+<a name="Dispatcher"></a><div id="Dispatcher-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-comment"># FIXME: ugly</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="Dispatcher-toggle" onclick="return toggle('Dispatcher');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.Dispatcher-class.html">Dispatcher</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Dispatcher-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Dispatcher-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> Why is this here - I needed to redefine Dispatcher for BOSH and easiest way</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> was to inherit original Dispatcher (now renamed to XMPPDispatcher). Trouble</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> is that reference used to access dispatcher instance is in Client attribute</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> named by __class__.__name__ of the dispatcher instance .. long story short:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> I wrote following to avoid changing each client.Dispatcher.whatever() in xmpp</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> If having two kinds of dispatcher will go well, I will rewrite the dispatcher</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> references in other scripts</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="Dispatcher.PlugIn"></a><div id="Dispatcher.PlugIn-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="Dispatcher.PlugIn-toggle" onclick="return toggle('Dispatcher.PlugIn');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn">PlugIn</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_obj</tt><tt class="py-op">,</tt> <tt class="py-param">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">old_features</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Dispatcher.PlugIn-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dispatcher.PlugIn-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">client_obj</tt><tt class="py-op">.</tt><tt class="py-name">protocol_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'XMPP'</tt><tt class="py-op">:</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt id="link-19" class="py-name" targets="Class nbxmpp.dispatcher_nb.XMPPDispatcher=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-19', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-20', 'PlugIn', 'link-2');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">client_obj</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">client_obj</tt><tt class="py-op">.</tt><tt class="py-name">protocol_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'BOSH'</tt><tt class="py-op">:</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt id="link-21" class="py-name" targets="Class nbxmpp.dispatcher_nb.BOSHDispatcher=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher" class="py-name" href="#" onclick="return doclink('link-21', 'BOSHDispatcher', 'link-21');">BOSHDispatcher</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-22', 'PlugIn', 'link-2');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">client_obj</tt><tt class="py-op">,</tt> <tt class="py-name">after_SASL</tt><tt class="py-op">,</tt> <tt class="py-name">old_features</tt><tt class="py-op">)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">False</tt> <tt class="py-comment"># should never be reached</tt> </tt>
+</div><a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="Dispatcher.get_instance"></a><div id="Dispatcher.get_instance-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="Dispatcher.get_instance-toggle" onclick="return toggle('Dispatcher.get_instance');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.Dispatcher-class.html#get_instance">get_instance</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Dispatcher.get_instance-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dispatcher.get_instance-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> Factory Method for object creation</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> Use this instead of directly initializing the class in order to make</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> unit testing much easier.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher"></a><div id="XMPPDispatcher-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="XMPPDispatcher-toggle" onclick="return toggle('XMPPDispatcher');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a><tt class="py-op">(</tt><tt class="py-base-class">PlugIn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="XMPPDispatcher-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> Handles XMPP stream and is the first who takes control over a fresh stanza</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> Is plugged into NonBlockingClient but can be replugged to restart handled</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> stream headers (used by SASL f.e.).</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.__init__"></a><div id="XMPPDispatcher.__init__-def"><a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.__init__-toggle" onclick="return toggle('XMPPDispatcher.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.__init__-expanded"><a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-23', 'PlugIn', 'link-2');">PlugIn</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-24', '__init__', 'link-24');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_eventHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cycleHandlers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exported_methods</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-25', 'RegisterHandler', 'link-25');">RegisterHandler</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterDefaultHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterDefaultHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterDefaultHandler" class="py-name" href="#" onclick="return doclink('link-26', 'RegisterDefaultHandler', 'link-26');">RegisterDefaultHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterEventHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterEventHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterEventHandler" class="py-name" href="#" onclick="return doclink('link-27', 'RegisterEventHandler', 'link-27');">RegisterEventHandler</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterCycleHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterCycleHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterCycleHandler" class="py-name" href="#" onclick="return doclink('link-28', 'UnregisterCycleHandler', 'link-28');">UnregisterCycleHandler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterCycleHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterCycleHandler" class="py-name" href="#" onclick="return doclink('link-29', 'RegisterCycleHandler', 'link-29');">RegisterCycleHandler</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandlerOnce()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandlerOnce" class="py-name" href="#" onclick="return doclink('link-30', 'RegisterHandlerOnce', 'link-30');">RegisterHandlerOnce</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.UnregisterHandler" class="py-name" href="#" onclick="return doclink('link-31', 'UnregisterHandler', 'link-31');">UnregisterHandler</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-32', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-33', 'SendAndWaitForResponse', 'link-33');">SendAndWaitForResponse</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-34', 'SendAndCallForResponse', 'link-34');">SendAndCallForResponse</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID" class="py-name" href="#" onclick="return doclink('link-35', 'getAnID', 'link-35');">getAnID</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.Event()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-36', 'Event', 'link-36');">Event</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-37', 'send', 'link-37');">send</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-comment"># Let the dispatcher know if there is support for stream management</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-comment"># \ufddo -&gt; \ufdef range</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">u'\ufdd0'</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">c</tt> <tt class="py-op">&lt;</tt> <tt class="py-string">u'\ufdef'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">+=</tt> <tt class="py-string">'|'</tt> <tt class="py-op">+</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-comment"># \ufffe-\uffff, \u1fffe-\u1ffff, ..., \u10fffe-\u10ffff</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-string">u'\ufffe'</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">+=</tt> <tt class="py-string">'|'</tt> <tt class="py-op">+</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">+=</tt> <tt class="py-string">'|'</tt> <tt class="py-op">+</tt> <tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">c</tt> <tt class="py-op">&lt;</tt> <tt class="py-string">u'\U0010fffe'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">0x10000</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">+=</tt> <tt class="py-string">'|'</tt> <tt class="py-op">+</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">+=</tt> <tt class="py-string">'|'</tt> <tt class="py-op">+</tt> <tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid_chars_re</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.getAnID"></a><div id="XMPPDispatcher.getAnID-def"><a name="L115"></a><tt class="py-lineno">115</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.getAnID-toggle" onclick="return toggle('XMPPDispatcher.getAnID');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID">getAnID</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.getAnID-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.getAnID-expanded"><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-38" class="py-name"><a title="nbxmpp.dispatcher_nb.outgoingID" class="py-name" href="#" onclick="return doclink('link-38', 'outgoingID', 'link-17');">outgoingID</a></tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="nbxmpp.dispatcher_nb.outgoingID" class="py-name" href="#" onclick="return doclink('link-39', 'outgoingID', 'link-17');">outgoingID</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt id="link-40" class="py-name"><a title="nbxmpp.dispatcher_nb.outgoingID" class="py-name" href="#" onclick="return doclink('link-40', 'outgoingID', 'link-17');">outgoingID</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.dumpHandlers"></a><div id="XMPPDispatcher.dumpHandlers-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.dumpHandlers-toggle" onclick="return toggle('XMPPDispatcher.dumpHandlers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers">dumpHandlers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.dumpHandlers-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.dumpHandlers-expanded"><a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> Return set of user-registered callbacks in it's internal format. Used</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> within the library to carry user handlers set over Dispatcher replugins</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt> </tt>
+</div><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.restoreHandlers"></a><div id="XMPPDispatcher.restoreHandlers-def"><a name="L127"></a><tt class="py-lineno">127</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.restoreHandlers-toggle" onclick="return toggle('XMPPDispatcher.restoreHandlers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers">restoreHandlers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handlers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.restoreHandlers-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.restoreHandlers-expanded"><a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> Restore user-registered callbacks structure from dump previously obtained</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> via dumpHandlers. Used within the library to carry user handlers set over</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> Dispatcher replugins.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt> <tt class="py-op">=</tt> <tt class="py-name">handlers</tt> </tt>
+</div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher._init"></a><div id="XMPPDispatcher._init-def"><a name="L135"></a><tt class="py-lineno">135</tt> <a class="py-toggle" href="#" id="XMPPDispatcher._init-toggle" onclick="return toggle('XMPPDispatcher._init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_init">_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher._init-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher._init-expanded"><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> Register default namespaces/protocols/handlers. Used internally</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: inject dependencies, do not rely that they are defined by our</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-comment"># owner</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace" class="py-name" href="#" onclick="return doclink('link-41', 'RegisterNamespace', 'link-41');">RegisterNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'unknown'</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace" class="py-name" href="#" onclick="return doclink('link-42', 'RegisterNamespace', 'link-41');">RegisterNamespace</a></tt><tt class="py-op">(</tt><tt id="link-43" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-43', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace" class="py-name" href="#" onclick="return doclink('link-44', 'RegisterNamespace', 'link-41');">RegisterNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-45', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt class="py-string">'iq'</tt><tt class="py-op">,</tt> <tt id="link-46" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-46', 'Iq', 'link-7');">Iq</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-47', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt class="py-string">'presence'</tt><tt class="py-op">,</tt> <tt id="link-48" class="py-name"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-48', 'Presence', 'link-8');">Presence</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-49', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt class="py-string">'message'</tt><tt class="py-op">,</tt> <tt id="link-50" class="py-name"><a title="nbxmpp.protocol.Message" class="py-name" href="#" onclick="return doclink('link-50', 'Message', 'link-9');">Message</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterDefaultHandler" class="py-name" href="#" onclick="return doclink('link-51', 'RegisterDefaultHandler', 'link-26');">RegisterDefaultHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.returnStanzaHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#returnStanzaHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.returnStanzaHandler" class="py-name" href="#" onclick="return doclink('link-52', 'returnStanzaHandler', 'link-52');">returnStanzaHandler</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterEventHandler" class="py-name" href="#" onclick="return doclink('link-53', 'RegisterEventHandler', 'link-27');">RegisterEventHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">_event_dispatcher</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.plugin"></a><div id="XMPPDispatcher.plugin-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.plugin-toggle" onclick="return toggle('XMPPDispatcher.plugin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin">plugin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.plugin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.plugin-expanded"><a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> Plug the Dispatcher instance into Client class instance and send initial</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> stream header. Used internally</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher._init()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_init"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._init" class="py-name" href="#" onclick="return doclink('link-54', '_init', 'link-54');">_init</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">lastErrNode</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">lastErr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">lastErrCode</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> <tt class="py-string">'StreamInit'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.StreamInit()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit,Method nbxmpp.dispatcher_nb.XMPPDispatcher.StreamInit()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#StreamInit"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.StreamInit
+nbxmpp.dispatcher_nb.XMPPDispatcher.StreamInit" class="py-name" href="#" onclick="return doclink('link-55', 'StreamInit', 'link-55');">StreamInit</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.StreamInit
+nbxmpp.dispatcher_nb.XMPPDispatcher.StreamInit" class="py-name" href="#" onclick="return doclink('link-56', 'StreamInit', 'link-55');">StreamInit</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.plugout"></a><div id="XMPPDispatcher.plugout-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.plugout-toggle" onclick="return toggle('XMPPDispatcher.plugout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout">plugout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.plugout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.plugout-expanded"><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> Prepare instance to be destructed</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch,Method nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch,Method nbxmpp.simplexml.NodeBuilder.dispatch()=nbxmpp.simplexml.NodeBuilder-class.html#dispatch"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-57', 'dispatch', 'link-57');">dispatch</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.destroy()=nbxmpp.simplexml.NodeBuilder-class.html#destroy"><a title="nbxmpp.simplexml.NodeBuilder.destroy" class="py-name" href="#" onclick="return doclink('link-58', 'destroy', 'link-58');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.StreamInit"></a><div id="XMPPDispatcher.StreamInit-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.StreamInit-toggle" onclick="return toggle('XMPPDispatcher.StreamInit');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#StreamInit">StreamInit</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.StreamInit-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.StreamInit-expanded"><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"> Send an initial stream header</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt class="py-name">sendqueue</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-59', 'simplexml', 'link-0');">simplexml</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Class nbxmpp.simplexml.NodeBuilder=nbxmpp.simplexml.NodeBuilder-class.html"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-60', 'NodeBuilder', 'link-60');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-61', 'dispatch', 'link-57');">dispatch</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-62', 'dispatch', 'link-57');">dispatch</a></tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.stream_header_received()=nbxmpp.simplexml.NodeBuilder-class.html#stream_header_received"><a title="nbxmpp.simplexml.NodeBuilder.stream_header_received" class="py-name" href="#" onclick="return doclink('link-63', 'stream_header_received', 'link-63');">stream_header_received</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher._check_stream_start()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_check_stream_start"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._check_stream_start" class="py-name" href="#" onclick="return doclink('link-64', '_check_stream_start', 'link-64');">_check_stream_start</a></tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-65', 'Node', 'link-11');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'stream:stream'</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method nbxmpp.simplexml.Node.setNamespace()=nbxmpp.simplexml.Node-class.html#setNamespace"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-66', 'setNamespace', 'link-66');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Namespace</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method nbxmpp.simplexml.Node.setAttr()=nbxmpp.simplexml.Node-class.html#setAttr"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-67', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'version'</tt><tt class="py-op">,</tt> <tt class="py-string">'1.0'</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-68', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xmlns:stream'</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-69', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-70', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-71', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xml:lang'</tt><tt class="py-op">,</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-72', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s%s&gt;"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-73" class="py-name"><a title="nbxmpp.dispatcher_nb.XML_DECLARATION" class="py-name" href="#" onclick="return doclink('link-73', 'XML_DECLARATION', 'link-18');">XML_DECLARATION</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher._check_stream_start"></a><div id="XMPPDispatcher._check_stream_start-def"><a name="L195"></a><tt class="py-lineno">195</tt> <a class="py-toggle" href="#" id="XMPPDispatcher._check_stream_start-toggle" onclick="return toggle('XMPPDispatcher._check_stream_start');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_check_stream_start">_check_stream_start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher._check_stream_start-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher._check_stream_start-expanded"><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ns</tt> <tt class="py-op">!=</tt> <tt id="link-74" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-74', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">tag</tt><tt class="py-op">!=</tt><tt class="py-string">'stream'</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Incorrect stream start: (%s,%s). Terminating.'</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.replace_non_character"></a><div id="XMPPDispatcher.replace_non_character-def"><a name="L200"></a><tt class="py-lineno">200</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.replace_non_character-toggle" onclick="return toggle('XMPPDispatcher.replace_non_character');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character">replace_non_character</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.replace_non_character-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.replace_non_character-expanded"><a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid_chars_re</tt><tt class="py-op">,</tt> <tt class="py-string">u'\ufffd'</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.ProcessNonBlocking"></a><div id="XMPPDispatcher.ProcessNonBlocking-def"><a name="L203"></a><tt class="py-lineno">203</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.ProcessNonBlocking-toggle" onclick="return toggle('XMPPDispatcher.ProcessNonBlocking');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking">ProcessNonBlocking</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.ProcessNonBlocking-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.ProcessNonBlocking-expanded"><a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-docstring"> Check incoming stream for data waiting</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"> :param data: data received from transports/IO sockets</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt class="py-docstring"> :return:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-docstring"> 1) length of processed data if some data were processed;</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-docstring"> 2) '0' string if no data were processed but link is alive;</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"> 3) 0 (zero) if underlying connection is closed.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-comment"># FIXME:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-comment"># When an error occurs we disconnect the transport directly. Client's</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-comment"># disconnect method will never be called.</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-comment"># Is this intended?</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-comment"># also look at transports start_disconnect()</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.replace_non_character()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.replace_non_character" class="py-name" href="#" onclick="return doclink('link-75', 'replace_non_character', 'link-75');">replace_non_character</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cycleHandlers</tt><tt class="py-op">:</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">_pendingException</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">_pendingException</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">_pendingException</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">_pendingException</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">Parse</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-comment"># end stream:stream tag received</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.has_received_endtag()=nbxmpp.simplexml.NodeBuilder-class.html#has_received_endtag"><a title="nbxmpp.simplexml.NodeBuilder.has_received_endtag" class="py-name" href="#" onclick="return doclink('link-76', 'has_received_endtag', 'link-76');">has_received_endtag</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.disconnect()=nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect,Method nbxmpp.client_nb.NonBlockingClient.disconnect()=nbxmpp.client_nb.NonBlockingClient-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTCP.disconnect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTransport.disconnect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-77', 'disconnect', 'link-77');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">streamError</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ExpatError</tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-78', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid XML received from server. Forcing disconnect.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-79', 'disconnect', 'link-77');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-80', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'ValueError: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.pollend()=nbxmpp.idlequeue.IdleCommand-class.html#pollend,Method nbxmpp.idlequeue.IdleObject.pollend()=nbxmpp.idlequeue.IdleObject-class.html#pollend,Method nbxmpp.transports_nb.NonBlockingTCP.pollend()=nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend"><a title="nbxmpp.idlequeue.IdleCommand.pollend
+nbxmpp.idlequeue.IdleObject.pollend
+nbxmpp.transports_nb.NonBlockingTCP.pollend" class="py-name" href="#" onclick="return doclink('link-81', 'pollend', 'link-81');">pollend</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">_pendingException</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">_pendingException</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">_pendingException</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">_pendingException</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'0'</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterNamespace"></a><div id="XMPPDispatcher.RegisterNamespace-def"><a name="L245"></a><tt class="py-lineno">245</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterNamespace-toggle" onclick="return toggle('XMPPDispatcher.RegisterNamespace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace">RegisterNamespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">=</tt><tt class="py-string">'info'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterNamespace-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterNamespace-expanded"><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"> Create internal structures for newly registered namespace</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"> You can register handlers for this namespace afterwards. By default</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> one namespace is already registered</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-docstring"> (jabber:client or jabber:component:accept depending on context.</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt id="link-82" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-82', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Registering namespace "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-83', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt class="py-string">'unknown'</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-84', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">xmlns</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-85', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt class="py-string">'default'</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-86', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">xmlns</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterProtocol"></a><div id="XMPPDispatcher.RegisterProtocol-def"><a name="L258"></a><tt class="py-lineno">258</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterProtocol-toggle" onclick="return toggle('XMPPDispatcher.RegisterProtocol');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol">RegisterProtocol</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag_name</tt><tt class="py-op">,</tt> <tt class="py-param">Proto</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">=</tt><tt class="py-string">'info'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterProtocol-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterProtocol-expanded"><a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> Used to declare some top-level stanza name to dispatcher</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"> Needed to start registering handlers for such stanzas. Iq, message and</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> presence protocols are registered by default.</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">xmlns</tt><tt class="py-op">:</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt id="link-87" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-87', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Registering protocol "%s" as %s(%s)'</tt> <tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">tag_name</tt><tt class="py-op">,</tt> <tt class="py-name">Proto</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">tag_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-name">type</tt><tt class="py-op">:</tt><tt class="py-name">Proto</tt><tt class="py-op">,</tt> <tt class="py-string">'default'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterNamespaceHandler"></a><div id="XMPPDispatcher.RegisterNamespaceHandler-def"><a name="L270"></a><tt class="py-lineno">270</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterNamespaceHandler-toggle" onclick="return toggle('XMPPDispatcher.RegisterNamespaceHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler">RegisterNamespaceHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-param">makefirst</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">system</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterNamespaceHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterNamespaceHandler-expanded"><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> Register handler for processing all stanzas for specified namespace</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-88', 'RegisterHandler', 'link-25');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'default'</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">makefirst</tt><tt class="py-op">,</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">system</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterHandler"></a><div id="XMPPDispatcher.RegisterHandler-def"><a name="L278"></a><tt class="py-lineno">278</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterHandler-toggle" onclick="return toggle('XMPPDispatcher.RegisterHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler">RegisterHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-param">makefirst</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">system</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterHandler-expanded"><a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"><tt class="py-docstring"> Register user callback as stanzas handler of declared type</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"><tt class="py-docstring"> Callback arguments:</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"><tt class="py-docstring"> dispatcher instance (for replying), incoming return of previous handlers.</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"><tt class="py-docstring"> The callback must raise xmpp.NodeProcessed just before return if it wants</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"><tt class="py-docstring"> to prevent other callbacks to be called with the same stanza as argument</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"><tt class="py-docstring"> _and_, more importantly library from returning stanza to sender with error set.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt class="py-docstring"> :param name: name of stanza. F.e. "iq".</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> :param handler: user callback.</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"> :param typ: value of stanza's "type" attribute. If not specified any</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> value will match</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> :param ns: namespace of child that stanza must contain.</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> :param makefirst: insert handler in the beginning of handlers list instead</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> of adding it to the end. Note that more common handlers i.e. w/o "typ"</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-docstring"> and " will be called first nevertheless.</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> :param system: call handler even if NodeProcessed Exception were raised</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> already.</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">xmlns</tt><tt class="py-op">:</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt id="link-89" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-89', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Registering handler %s for "%s" type-&gt;%s ns-&gt;%s(%s)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt id="link-90" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-90', 'name', 'link-90');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ns</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'default'</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmlns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">:</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace" class="py-name" href="#" onclick="return doclink('link-91', 'RegisterNamespace', 'link-41');">RegisterNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-string">'warn'</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-92" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-92', 'name', 'link-90');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-93', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt id="link-94" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-94', 'name', 'link-90');">name</a></tt><tt class="py-op">,</tt> <tt id="link-95" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-95', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-string">'warn'</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-96" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-96', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-97" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-97', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">makefirst</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-98" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-98', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'func'</tt><tt class="py-op">:</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-string">'system'</tt><tt class="py-op">:</tt><tt class="py-name">system</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-99" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-99', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'func'</tt><tt class="py-op">:</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-string">'system'</tt><tt class="py-op">:</tt><tt class="py-name">system</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterHandlerOnce"></a><div id="XMPPDispatcher.RegisterHandlerOnce-def"><a name="L319"></a><tt class="py-lineno">319</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterHandlerOnce-toggle" onclick="return toggle('XMPPDispatcher.RegisterHandlerOnce');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce">RegisterHandlerOnce</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-param">makefirst</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">system</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterHandlerOnce-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterHandlerOnce-expanded"><a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"> Unregister handler after first call (not implemented yet)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-comment"># FIXME Drop or implement</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">xmlns</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-100', 'RegisterHandler', 'link-25');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-101', 'name', 'link-90');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">makefirst</tt><tt class="py-op">,</tt> <tt class="py-name">system</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.UnregisterHandler"></a><div id="XMPPDispatcher.UnregisterHandler-def"><a name="L329"></a><tt class="py-lineno">329</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.UnregisterHandler-toggle" onclick="return toggle('XMPPDispatcher.UnregisterHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler">UnregisterHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.UnregisterHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.UnregisterHandler-expanded"><a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> Unregister handler. "typ" and "ns" must be specified exactly the same as</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> with registering.</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">xmlns</tt><tt class="py-op">:</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ns</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'default'</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmlns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-102" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-102', 'name', 'link-90');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-103" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-103', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">pack</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-104" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-104', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pack</tt><tt class="py-op">[</tt><tt class="py-string">'func'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">handler</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-105" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-105', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">pack</tt><tt class="py-op">)</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterDefaultHandler"></a><div id="XMPPDispatcher.RegisterDefaultHandler-def"><a name="L351"></a><tt class="py-lineno">351</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterDefaultHandler-toggle" onclick="return toggle('XMPPDispatcher.RegisterDefaultHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterDefaultHandler">RegisterDefaultHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterDefaultHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterDefaultHandler-expanded"><a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> Specify the handler that will be used if no NodeProcessed exception were</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-docstring"> raised. This is returnStanzaHandler by default.</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt> </tt>
+</div><a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterEventHandler"></a><div id="XMPPDispatcher.RegisterEventHandler-def"><a name="L358"></a><tt class="py-lineno">358</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterEventHandler-toggle" onclick="return toggle('XMPPDispatcher.RegisterEventHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterEventHandler">RegisterEventHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterEventHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterEventHandler-expanded"><a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> Register handler that will process events. F.e. "FILERECEIVED" event. See</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> common/connection: _event_dispatcher()</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_eventHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt> </tt>
+</div><a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.returnStanzaHandler"></a><div id="XMPPDispatcher.returnStanzaHandler-def"><a name="L365"></a><tt class="py-lineno">365</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.returnStanzaHandler-toggle" onclick="return toggle('XMPPDispatcher.returnStanzaHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#returnStanzaHandler">returnStanzaHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">conn</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.returnStanzaHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.returnStanzaHandler-expanded"><a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> Return stanza back to the sender with &lt;feature-not-implemented/&gt; error</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> set</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method nbxmpp.protocol.DataField.getType()=nbxmpp.protocol.DataField-class.html#getType,Method nbxmpp.protocol.DataForm.getType()=nbxmpp.protocol.DataForm-class.html#getType,Method nbxmpp.protocol.Protocol.getType()=nbxmpp.protocol.Protocol-class.html#getType"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-106', 'getType', 'link-106');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt class="py-string">'set'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-107', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt id="link-108" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-108', 'Error', 'link-12');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt id="link-109" class="py-name"><a title="nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED
+nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-109', 'ERR_FEATURE_NOT_IMPLEMENTED', 'link-13');">ERR_FEATURE_NOT_IMPLEMENTED</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.RegisterCycleHandler"></a><div id="XMPPDispatcher.RegisterCycleHandler-def"><a name="L373"></a><tt class="py-lineno">373</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterCycleHandler-toggle" onclick="return toggle('XMPPDispatcher.RegisterCycleHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler">RegisterCycleHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.RegisterCycleHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterCycleHandler-expanded"><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> Register handler that will be called on every Dispatcher.Process() call</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cycleHandlers</tt><tt class="py-op">:</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cycleHandlers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.UnregisterCycleHandler"></a><div id="XMPPDispatcher.UnregisterCycleHandler-def"><a name="L380"></a><tt class="py-lineno">380</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.UnregisterCycleHandler-toggle" onclick="return toggle('XMPPDispatcher.UnregisterCycleHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterCycleHandler">UnregisterCycleHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.UnregisterCycleHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.UnregisterCycleHandler-expanded"><a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"> Unregister handler that will is called on every Dispatcher.Process() call</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cycleHandlers</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cycleHandlers</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.Event"></a><div id="XMPPDispatcher.Event-def"><a name="L387"></a><tt class="py-lineno">387</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.Event-toggle" onclick="return toggle('XMPPDispatcher.Event');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event">Event</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">realm</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.Event-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.Event-expanded"><a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"><tt class="py-docstring"> Raise some event</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"><tt class="py-docstring"> :param realm: scope of event. Usually a namespace.</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"><tt class="py-docstring"> :param event: the event itself. F.e. "SUCCESSFUL SEND".</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"><tt class="py-docstring"> :param data: data that comes along with event. Depends on event.</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_eventHandler</tt><tt class="py-op">:</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_eventHandler</tt><tt class="py-op">(</tt><tt class="py-name">realm</tt><tt class="py-op">,</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt id="link-110" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-110', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Received unhandled event: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.dispatch"></a><div id="XMPPDispatcher.dispatch-def"><a name="L400"></a><tt class="py-lineno">400</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.dispatch-toggle" onclick="return toggle('XMPPDispatcher.dispatch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch">dispatch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">session</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">direct</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.dispatch-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.dispatch-expanded"><a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"><tt class="py-docstring"> Main procedure that performs XMPP stanza recognition and calling</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-docstring"> apppropriate handlers for it. Called by simplexml</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: Where do we set session and direct. Why? What are those intended</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-comment"># to do?</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-comment">#log.info('dispatch called: stanza = %s, session = %s, direct= %s'</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-comment"># % (stanza, session, direct))</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">session</tt><tt class="py-op">:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">session</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt id="link-111" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-111', 'name', 'link-90');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-112', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-113" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-113', 'name', 'link-90');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'features'</tt><tt class="py-op">:</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">got_features</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-114', 'getNamespace', 'link-114');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-comment"># log.info('in dispatch, getting ns for %s, and the ns is %s'</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-comment"># % (stanza, xmlns))</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmlns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">:</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt id="link-115" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-115', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown namespace: "</tt> <tt class="py-op">+</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-string">'unknown'</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-comment"># features stanza has been handled before</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-116" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-116', 'name', 'link-90');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-117" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-117', 'name', 'link-90');">name</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'features'</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt id="link-118" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-118', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown stanza: "</tt> <tt class="py-op">+</tt> <tt id="link-119" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-119', 'name', 'link-90');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt id="link-120" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-120', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Got %s/%s stanza"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt id="link-121" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-121', 'name', 'link-90');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt id="link-122" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-122', 'name', 'link-90');">name</a></tt><tt class="py-op">=</tt><tt class="py-string">'unknown'</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt id="link-123" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-123', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Got %s/%s stanza"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt id="link-124" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-124', 'name', 'link-90');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'Node'</tt><tt class="py-op">:</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: this cannot work</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-125" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-125', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">type</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-126', 'getType', 'link-106');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">props</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Method nbxmpp.protocol.Protocol.getProperties()=nbxmpp.protocol.Protocol-class.html#getProperties"><a title="nbxmpp.protocol.Protocol.getProperties" class="py-name" href="#" onclick="return doclink('link-127', 'getProperties', 'link-127');">getProperties</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method nbxmpp.protocol.Protocol.getID()=nbxmpp.protocol.Protocol-class.html#getID"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-128', 'getID', 'link-128');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-comment"># If server supports stream management</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-129', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'r'</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-130', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'a'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-131', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'enabled'</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-132', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'resumed'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-comment"># increments the number of stanzas that has been handled</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">list_</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt> <tt class="py-comment"># we will use all handlers:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-133" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-133', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">)</tt> <tt class="py-comment"># from very common...</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">props</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-134" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-134', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">prop</tt><tt class="py-op">)</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">and</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-135" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-135', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">prop</tt><tt class="py-op">)</tt> <tt class="py-comment"># ...to very particular</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">chain</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list_</tt><tt class="py-op">:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">chain</tt> <tt class="py-op">=</tt> <tt class="py-name">chain</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-136" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-136', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ID</tt> <tt class="py-keyword">in</tt> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt id="link-137" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-137', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Expected stanza arrived. Callback %s(%s) found!"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">cb</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">!=</tt> <tt class="py-string">'NodeProcessed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt id="link-138" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-138', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Expected stanza arrived!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chain</tt><tt class="py-op">:</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-keyword">or</tt> <tt class="py-name">handler</tt><tt class="py-op">[</tt><tt class="py-string">'system'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">[</tt><tt class="py-string">'func'</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">!=</tt> <tt class="py-string">'NodeProcessed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-name">user</tt><tt class="py-op">=</tt><tt class="py-number">0</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt><tt class="py-op">:</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher._WaitForData"></a><div id="XMPPDispatcher._WaitForData-def"><a name="L494"></a><tt class="py-lineno">494</tt> <a class="py-toggle" href="#" id="XMPPDispatcher._WaitForData-toggle" onclick="return toggle('XMPPDispatcher._WaitForData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData">_WaitForData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher._WaitForData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher._WaitForData-expanded"><a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"><tt class="py-docstring"> Internal wrapper around ProcessNonBlocking. Will check for</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking,Method nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-139', 'ProcessNonBlocking', 'link-139');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-comment"># 0 result indicates that we have closed the connection, e.g.</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-comment"># we have released dispatcher, so self._owner has no methods</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">res</tt><tt class="py-op">:</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">_id</tt><tt class="py-op">,</tt> <tt class="py-name">_iq</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_iq</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-comment"># If the expected Stanza would have arrived, ProcessNonBlocking</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-comment"># would have placed the reply stanza in there</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">:</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-140', 'onreceive', 'link-140');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">(</tt><tt class="py-name">_iq</tt><tt class="py-op">)</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> <tt class="py-name">_iq</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.SendAndWaitForResponse"></a><div id="XMPPDispatcher.SendAndWaitForResponse-def"><a name="L521"></a><tt class="py-lineno">521</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.SendAndWaitForResponse-toggle" onclick="return toggle('XMPPDispatcher.SendAndWaitForResponse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse">SendAndWaitForResponse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.SendAndWaitForResponse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.SendAndWaitForResponse-expanded"><a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"><tt class="py-docstring"> Send stanza and wait for recipient's response to it. Will call transports</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"><tt class="py-docstring"> on_timeout callback if response is not retrieved in time</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> Be aware: Only timeout of latest call of SendAndWait is active.</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name"><a title="nbxmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-141', 'DEFAULT_TIMEOUT_SECONDS', 'link-16');">DEFAULT_TIMEOUT_SECONDS</a></tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-name">_waitid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-142', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">func</tt><tt class="py-op">:</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_waitid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.set_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.set_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.set_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout" class="py-name" href="#" onclick="return doclink('link-143', 'set_timeout', 'link-143');">set_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-144', 'onreceive', 'link-140');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData" class="py-name" href="#" onclick="return doclink('link-145', '_WaitForData', 'link-145');">_WaitForData</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">_waitid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_waitid</tt> </tt>
+</div><a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.SendAndCallForResponse"></a><div id="XMPPDispatcher.SendAndCallForResponse-def"><a name="L539"></a><tt class="py-lineno">539</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.SendAndCallForResponse-toggle" onclick="return toggle('XMPPDispatcher.SendAndCallForResponse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse">SendAndCallForResponse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.SendAndCallForResponse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.SendAndCallForResponse-expanded"><a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"><tt class="py-docstring"> Put stanza on the wire and call back when recipient replies. Additional</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"><tt class="py-docstring"> callback arguments can be specified in args</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-146', 'SendAndWaitForResponse', 'link-33');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.send"></a><div id="XMPPDispatcher.send-def"><a name="L546"></a><tt class="py-lineno">546</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.send-toggle" onclick="return toggle('XMPPDispatcher.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.send-expanded"><a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"><tt class="py-docstring"> Wrap transports send method when plugged into NonBlockingClient. Makes</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"><tt class="py-docstring"> sure stanzas get ID and from tag.</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt id="link-147" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-147', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-148', 'getID', 'link-128');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ID</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Method nbxmpp.protocol.Protocol.setID()=nbxmpp.protocol.Protocol-class.html#setID"><a title="nbxmpp.protocol.Protocol.setID" class="py-name" href="#" onclick="return doclink('link-149', 'setID', 'link-149');">setID</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID" class="py-name" href="#" onclick="return doclink('link-150', 'getAnID', 'link-35');">getAnID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-151', 'getID', 'link-128');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-152', 'getAttr', 'link-152');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-153', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-comment"># If no ID then it is a whitespace</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ID</tt><tt class="py-op">:</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">max_queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method nbxmpp.smacks.Smacks.request_ack()=nbxmpp.smacks.Smacks-class.html#request_ack"><a title="nbxmpp.smacks.Smacks.request_ack" class="py-name" href="#" onclick="return doclink('link-154', 'request_ack', 'link-154');">request_ack</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-155', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">now</tt><tt class="py-op">)</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ID</tt> </tt>
+</div></div><a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher"></a><div id="BOSHDispatcher-def"><a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt> <a class="py-toggle" href="#" id="BOSHDispatcher-toggle" onclick="return toggle('BOSHDispatcher');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a><tt class="py-op">(</tt><tt class="py-base-class">XMPPDispatcher</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BOSHDispatcher-expanded"><a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.PlugIn"></a><div id="BOSHDispatcher.PlugIn-def"><a name="L574"></a><tt class="py-lineno">574</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.PlugIn-toggle" onclick="return toggle('BOSHDispatcher.PlugIn');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn">PlugIn</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">,</tt> <tt class="py-param">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">old_features</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.PlugIn-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.PlugIn-expanded"><a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_features</tt> <tt class="py-op">=</tt> <tt class="py-name">old_features</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_SASL</tt> <tt class="py-op">=</tt> <tt class="py-name">after_SASL</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt id="link-156" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-156', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-157', 'PlugIn', 'link-2');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">owner</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.StreamInit"></a><div id="BOSHDispatcher.StreamInit-def"><a name="L579"></a><tt class="py-lineno">579</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.StreamInit-toggle" onclick="return toggle('BOSHDispatcher.StreamInit');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit">StreamInit</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.StreamInit-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.StreamInit-expanded"><a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-docstring"> Send an initial stream header</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-158', 'simplexml', 'link-0');">simplexml</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-159', 'NodeBuilder', 'link-60');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-160', 'dispatch', 'link-57');">dispatch</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-161', 'dispatch', 'link-57');">dispatch</a></tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.stream_header_received" class="py-name" href="#" onclick="return doclink('link-162', 'stream_header_received', 'link-63');">stream_header_received</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._check_stream_start" class="py-name" href="#" onclick="return doclink('link-163', '_check_stream_start', 'link-64');">_check_stream_start</a></tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_features</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-164', 'Node', 'link-11');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'stream:stream'</tt><tt class="py-op">)</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-165', 'setNamespace', 'link-66');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Namespace</tt><tt class="py-op">)</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-166', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'version'</tt><tt class="py-op">,</tt> <tt class="py-string">'1.0'</tt><tt class="py-op">)</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-167', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xmlns:stream'</tt><tt class="py-op">,</tt> <tt id="link-168" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-168', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-169', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">)</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-170', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xml:lang'</tt><tt class="py-op">,</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send_init()=nbxmpp.bosh.NonBlockingBOSH-class.html#send_init"><a title="nbxmpp.bosh.NonBlockingBOSH.send_init" class="py-name" href="#" onclick="return doclink('link-171', 'send_init', 'link-171');">send_init</a></tt><tt class="py-op">(</tt><tt class="py-name">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_SASL</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.StreamTerminate"></a><div id="BOSHDispatcher.StreamTerminate-def"><a name="L601"></a><tt class="py-lineno">601</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.StreamTerminate-toggle" onclick="return toggle('BOSHDispatcher.StreamTerminate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamTerminate">StreamTerminate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.StreamTerminate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.StreamTerminate-expanded"><a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"><tt class="py-docstring"> Send a stream terminator</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt class="py-name">send_terminator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.ProcessNonBlocking"></a><div id="BOSHDispatcher.ProcessNonBlocking-def"><a name="L607"></a><tt class="py-lineno">607</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.ProcessNonBlocking-toggle" onclick="return toggle('BOSHDispatcher.ProcessNonBlocking');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking">ProcessNonBlocking</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.ProcessNonBlocking-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.ProcessNonBlocking-expanded"><a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt><tt class="py-op">:</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-172', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">,</tt> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-173', 'getAttr', 'link-152');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Method nbxmpp.simplexml.Node.delAttr()=nbxmpp.simplexml.Node-class.html#delAttr"><a title="nbxmpp.simplexml.Node.delAttr" class="py-name" href="#" onclick="return doclink('link-174', 'delAttr', 'link-174');">delAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">)</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%s&gt;%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-175" class="py-name"><a title="nbxmpp.dispatcher_nb.XML_DECLARATION" class="py-name" href="#" onclick="return doclink('link-175', 'XML_DECLARATION', 'link-18');">XML_DECLARATION</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">fromstream</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-176" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-176', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-177', 'ProcessNonBlocking', 'link-139');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.dispatch"></a><div id="BOSHDispatcher.dispatch-def"><a name="L616"></a><tt class="py-lineno">616</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.dispatch-toggle" onclick="return toggle('BOSHDispatcher.dispatch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch">dispatch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">session</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">direct</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.dispatch-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.dispatch-expanded"><a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-178', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-179', 'getNamespace', 'link-114');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-180" class="py-name"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-180', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-name">stanza_attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttrs()=nbxmpp.simplexml.Node-class.html#getAttrs"><a title="nbxmpp.simplexml.Node.getAttrs" class="py-name" href="#" onclick="return doclink('link-181', 'getAttrs', 'link-181');">getAttrs</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'authid'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-comment"># should be only in init response</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-comment"># auth module expects id of stream in document attributes</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'authid'</tt><tt class="py-op">]</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.handle_body_attrs()=nbxmpp.bosh.NonBlockingBOSH-class.html#handle_body_attrs"><a title="nbxmpp.bosh.NonBlockingBOSH.handle_body_attrs" class="py-name" href="#" onclick="return doclink('link-182', 'handle_body_attrs', 'link-182');">handle_body_attrs</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza_attrs</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" targets="Method nbxmpp.simplexml.Node.getChildren()=nbxmpp.simplexml.Node-class.html#getChildren"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-183', 'getChildren', 'link-183');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-comment"># if child doesn't have any ns specified, simplexml (or expat)</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-comment"># thinks it's of parent's (BOSH body) namespace, so we have to</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-comment"># rewrite it to jabber:client</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-184', 'getNamespace', 'link-114');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-185" class="py-name"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-185', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-186', 'setNamespace', 'link-66');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt><tt class="py-op">)</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt id="link-187" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-187', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-188', 'dispatch', 'link-57');">dispatch</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">direct</tt><tt class="py-op">)</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt id="link-189" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-189', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-190', 'dispatch', 'link-57');">dispatch</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">direct</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.dispatcher_nb.BOSHDispatcher-class.html b/doc/apidocs/nbxmpp.dispatcher_nb.BOSHDispatcher-class.html
new file mode 100644
index 0000000..f10a26f
--- /dev/null
+++ b/doc/apidocs/nbxmpp.dispatcher_nb.BOSHDispatcher-class.html
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.dispatcher_nb.BOSHDispatcher</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.dispatcher_nb-module.html">Module&nbsp;dispatcher_nb</a> ::
+ Class&nbsp;BOSHDispatcher
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BOSHDispatcher</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_d" name="uml_class_diagram_for_nbxmpp_d">
+<area shape="rect" id="node9" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="141,473,519,492"/>
+<area shape="rect" id="node9" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit" title="Send an initial stream header" alt="" coords="141,492,519,511"/>
+<area shape="rect" id="node9" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamTerminate" title="Send a stream terminator" alt="" coords="141,511,519,529"/>
+<area shape="rect" id="node9" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking" title="Check incoming stream for data waiting" alt="" coords="141,529,519,548"/>
+<area shape="rect" id="node9" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch" title="Main procedure that performs XMPP stanza recognition and calling apppropriate handlers for it. Called by simplexml" alt="" coords="141,548,519,567"/>
+<area shape="rect" id="node1" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html" title="nbxmpp.dispatcher_nb.BOSHDispatcher" alt="" coords="129,441,529,573"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__" title="nbxmpp.dispatcher_nb.XMPPDispatcher.__init__" alt="" coords="17,135,644,153"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID" title="nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID" alt="" coords="17,153,644,172"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers" title="Return set of user&#45;registered callbacks in it&#39;s internal format. Used within the library to carry user handlers set over Dispatcher replugins" alt="" coords="17,172,644,191"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers" title="Restore user&#45;registered callbacks structure from dump previously obtained via dumpHandlers. Used within the library to carry user handlers set over Dispatcher replugins." alt="" coords="17,191,644,209"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin" title="Plug the Dispatcher instance into Client class instance and send initial stream header. Used internally" alt="" coords="17,209,644,228"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout" title="Prepare instance to be destructed" alt="" coords="17,228,644,247"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character" title="nbxmpp.dispatcher_nb.XMPPDispatcher.replace_non_character" alt="" coords="17,247,644,265"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace" title="Create internal structures for newly registered namespace" alt="" coords="17,265,644,284"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol" title="Used to declare some top&#45;level stanza name to dispatcher" alt="" coords="17,284,644,303"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler" title="Register handler for processing all stanzas for specified namespace" alt="" coords="17,303,644,321"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler" title="Register user callback as stanzas handler of declared type" alt="" coords="17,321,644,340"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce" title="Unregister handler after first call (not implemented yet)" alt="" coords="17,340,644,359"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler" title="Unregister handler. &quot;typ&quot; and &quot;ns&quot; must be specified exactly the same as with registering." alt="" coords="17,359,644,377"/>
+<area shape="rect" id="node10" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send" title="Wrap transports send method when plugged into NonBlockingClient. Makes sure stanzas get ID and from tag." alt="" coords="17,396,644,415"/>
+<area shape="rect" id="node2" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html" title="Handles XMPP stream and is the first who takes control over a fresh stanza" alt="" coords="5,102,656,421"/>
+<area shape="rect" id="node11" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="217,39,443,57"/>
+<area shape="rect" id="node11" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="217,57,443,76"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="205,6,453,82"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_d.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_d" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn" class="summary-sig-name">PlugIn</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>,
+ <span class="summary-sig-arg">after_SASL</span>=<span class="summary-sig-default">False</span>,
+ <span class="summary-sig-arg">old_features</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Attach to owner and register ourself and our _exported_methods in it.
+If defined by a subclass, call self.plugin(owner) to execute hook
+code after plugging</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.PlugIn">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit" class="summary-sig-name">StreamInit</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Send an initial stream header</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.StreamInit">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamTerminate" class="summary-sig-name">StreamTerminate</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Send a stream terminator</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.StreamTerminate">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking" class="summary-sig-name">ProcessNonBlocking</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Check incoming stream for data waiting</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.ProcessNonBlocking">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch" class="summary-sig-name">dispatch</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>,
+ <span class="summary-sig-arg">session</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">direct</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Main procedure that performs XMPP stanza recognition and calling
+apppropriate handlers for it. Called by simplexml</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.dispatch">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a></code></b>:
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event">Event</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler">RegisterCycleHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterDefaultHandler">RegisterDefaultHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterEventHandler">RegisterEventHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler">RegisterHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce">RegisterHandlerOnce</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace">RegisterNamespace</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler">RegisterNamespaceHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol">RegisterProtocol</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse">SendAndCallForResponse</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse">SendAndWaitForResponse</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterCycleHandler">UnregisterCycleHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler">UnregisterHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__">__init__</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers">dumpHandlers</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID">getAnID</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin">plugin</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout">plugout</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character">replace_non_character</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers">restoreHandlers</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#returnStanzaHandler">returnStanzaHandler</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send">send</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html">XMPPDispatcher</a></code></b> (private):
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData" onclick="show_private();">_WaitForData</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_check_stream_start" onclick="show_private();">_check_stream_start</a></code>,
+ <code><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_init" onclick="show_private();">_init</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="PlugIn"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">PlugIn</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>,
+ <span class="sig-arg">after_SASL</span>=<span class="sig-default">False</span>,
+ <span class="sig-arg">old_features</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.PlugIn">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Attach to owner and register ourself and our _exported_methods in it.
+If defined by a subclass, call self.plugin(owner) to execute hook
+code after plugging
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">plugin.PlugIn.PlugIn</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="StreamInit"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">StreamInit</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.StreamInit">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send an initial stream header
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#StreamInit">XMPPDispatcher.StreamInit</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="StreamTerminate"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">StreamTerminate</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.StreamTerminate">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send a stream terminator
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="ProcessNonBlocking"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">ProcessNonBlocking</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.ProcessNonBlocking">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Check incoming stream for data waiting
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>data</code></strong> - data received from transports/IO sockets</li>
+ </ul></dd>
+ <dt>Returns:</dt>
+ <dd><ol class="rst-arabic simple">
+<li>length of processed data if some data were processed;</li>
+<li>'0' string if no data were processed but link is alive;</li>
+<li>0 (zero) if underlying connection is closed.</li>
+</ol></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking">XMPPDispatcher.ProcessNonBlocking</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="dispatch"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">dispatch</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>,
+ <span class="sig-arg">session</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">direct</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#BOSHDispatcher.dispatch">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Main procedure that performs XMPP stanza recognition and calling
+apppropriate handlers for it. Called by simplexml
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch">XMPPDispatcher.dispatch</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.dispatcher_nb.Dispatcher-class.html b/doc/apidocs/nbxmpp.dispatcher_nb.Dispatcher-class.html
new file mode 100644
index 0000000..7a66738
--- /dev/null
+++ b/doc/apidocs/nbxmpp.dispatcher_nb.Dispatcher-class.html
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.dispatcher_nb.Dispatcher</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.dispatcher_nb-module.html">Module&nbsp;dispatcher_nb</a> ::
+ Class&nbsp;Dispatcher
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.dispatcher_nb.Dispatcher-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Dispatcher</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#Dispatcher">source&nbsp;code</a></span></p>
+<p>Why is this here - I needed to redefine Dispatcher for BOSH and easiest way
+was to inherit original Dispatcher (now renamed to XMPPDispatcher). Trouble
+is that reference used to access dispatcher instance is in Client attribute
+named by __class__.__name__ of the dispatcher instance .. long story short:</p>
+<p>I wrote following to avoid changing each client.Dispatcher.whatever() in xmpp</p>
+<p>If having two kinds of dispatcher will go well, I will rewrite the dispatcher
+references in other scripts</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn" class="summary-sig-name">PlugIn</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">client_obj</span>,
+ <span class="summary-sig-arg">after_SASL</span>=<span class="summary-sig-default">False</span>,
+ <span class="summary-sig-arg">old_features</span>=<span class="summary-sig-default">None</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#Dispatcher.PlugIn">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.Dispatcher-class.html#get_instance" class="summary-sig-name">get_instance</a>(<span class="summary-sig-arg">cls</span>,
+ <span class="summary-sig-arg">*args</span>,
+ <span class="summary-sig-arg">**kwargs</span>)</span><br />
+ Factory Method for object creation</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#Dispatcher.get_instance">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="PlugIn"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">PlugIn</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">client_obj</span>,
+ <span class="sig-arg">after_SASL</span>=<span class="sig-default">False</span>,
+ <span class="sig-arg">old_features</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#Dispatcher.PlugIn">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_instance"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_instance</span>(<span class="sig-arg">cls</span>,
+ <span class="sig-arg">*args</span>,
+ <span class="sig-arg">**kwargs</span>)</span>
+ <br /><em class="fname">Class Method</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#Dispatcher.get_instance">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Factory Method for object creation</p>
+<p>Use this instead of directly initializing the class in order to make
+unit testing much easier.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.dispatcher_nb.XMPPDispatcher-class.html b/doc/apidocs/nbxmpp.dispatcher_nb.XMPPDispatcher-class.html
new file mode 100644
index 0000000..2548942
--- /dev/null
+++ b/doc/apidocs/nbxmpp.dispatcher_nb.XMPPDispatcher-class.html
@@ -0,0 +1,1411 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.dispatcher_nb.XMPPDispatcher</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.dispatcher_nb-module.html">Module&nbsp;dispatcher_nb</a> ::
+ Class&nbsp;XMPPDispatcher
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class XMPPDispatcher</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_d_2" name="uml_class_diagram_for_nbxmpp_d_2">
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__" title="nbxmpp.dispatcher_nb.XMPPDispatcher.__init__" alt="" coords="17,153,644,172"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID" title="nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID" alt="" coords="17,172,644,191"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers" title="Return set of user&#45;registered callbacks in it&#39;s internal format. Used within the library to carry user handlers set over Dispatcher replugins" alt="" coords="17,191,644,209"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers" title="Restore user&#45;registered callbacks structure from dump previously obtained via dumpHandlers. Used within the library to carry user handlers set over Dispatcher replugins." alt="" coords="17,209,644,228"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin" title="Plug the Dispatcher instance into Client class instance and send initial stream header. Used internally" alt="" coords="17,228,644,247"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout" title="Prepare instance to be destructed" alt="" coords="17,247,644,265"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#StreamInit" title="Send an initial stream header" alt="" coords="17,265,644,284"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character" title="nbxmpp.dispatcher_nb.XMPPDispatcher.replace_non_character" alt="" coords="17,284,644,303"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking" title="Check incoming stream for data waiting" alt="" coords="17,303,644,321"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace" title="Create internal structures for newly registered namespace" alt="" coords="17,321,644,340"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol" title="Used to declare some top&#45;level stanza name to dispatcher" alt="" coords="17,340,644,359"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler" title="Register handler for processing all stanzas for specified namespace" alt="" coords="17,359,644,377"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler" title="Register user callback as stanzas handler of declared type" alt="" coords="17,377,644,396"/>
+<area shape="rect" id="node12" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send" title="Wrap transports send method when plugged into NonBlockingClient. Makes sure stanzas get ID and from tag." alt="" coords="17,415,644,433"/>
+<area shape="rect" id="node1" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html" title="Handles XMPP stream and is the first who takes control over a fresh stanza" alt="" coords="5,121,656,439"/>
+<area shape="rect" id="node3" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html" title="nbxmpp.dispatcher_nb.BOSHDispatcher" alt="" coords="259,459,403,498"/>
+<area shape="rect" id="node13" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="217,39,443,57"/>
+<area shape="rect" id="node13" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="217,57,443,76"/>
+<area shape="rect" id="node13" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="217,76,443,95"/>
+<area shape="rect" id="node2" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="205,6,453,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_d_2.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_d_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Handles XMPP stream and is the first who takes control over a fresh stanza</p>
+<p>Is plugged into NonBlockingClient but can be replugged to restart handled
+stream headers (used by SASL f.e.).</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID" class="summary-sig-name">getAnID</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.getAnID">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dumpHandlers" class="summary-sig-name">dumpHandlers</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return set of user-registered callbacks in it's internal format. Used
+within the library to carry user handlers set over Dispatcher replugins</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.dumpHandlers">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#restoreHandlers" class="summary-sig-name">restoreHandlers</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handlers</span>)</span><br />
+ Restore user-registered callbacks structure from dump previously obtained
+via dumpHandlers. Used within the library to carry user handlers set over
+Dispatcher replugins.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.restoreHandlers">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_init" class="summary-sig-name" onclick="show_private();">_init</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Register default namespaces/protocols/handlers. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher._init">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin" class="summary-sig-name">plugin</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span><br />
+ Plug the Dispatcher instance into Client class instance and send initial
+stream header. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.plugin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout" class="summary-sig-name">plugout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Prepare instance to be destructed</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.plugout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#StreamInit" class="summary-sig-name">StreamInit</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Send an initial stream header</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.StreamInit">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_check_stream_start" class="summary-sig-name" onclick="show_private();">_check_stream_start</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">ns</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">attrs</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher._check_stream_start">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#replace_non_character" class="summary-sig-name">replace_non_character</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.replace_non_character">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking" class="summary-sig-name">ProcessNonBlocking</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Check incoming stream for data waiting</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.ProcessNonBlocking">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace" class="summary-sig-name">RegisterNamespace</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">xmlns</span>,
+ <span class="summary-sig-arg">order</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">info</code><code class="variable-quote">'</code></span>)</span><br />
+ Create internal structures for newly registered namespace</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterNamespace">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterProtocol" class="summary-sig-name">RegisterProtocol</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag_name</span>,
+ <span class="summary-sig-arg">Proto</span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">order</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">info</code><code class="variable-quote">'</code></span>)</span><br />
+ Used to declare some top-level stanza name to dispatcher</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterProtocol">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespaceHandler" class="summary-sig-name">RegisterNamespaceHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">xmlns</span>,
+ <span class="summary-sig-arg">handler</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">ns</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">makefirst</span>=<span class="summary-sig-default">0</span>,
+ <span class="summary-sig-arg">system</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Register handler for processing all stanzas for specified namespace</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterNamespaceHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler" class="summary-sig-name">RegisterHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">handler</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">ns</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">makefirst</span>=<span class="summary-sig-default">False</span>,
+ <span class="summary-sig-arg">system</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Register user callback as stanzas handler of declared type</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce" class="summary-sig-name">RegisterHandlerOnce</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">handler</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">ns</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">makefirst</span>=<span class="summary-sig-default">0</span>,
+ <span class="summary-sig-arg">system</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Unregister handler after first call (not implemented yet)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterHandlerOnce">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler" class="summary-sig-name">UnregisterHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">handler</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">ns</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Unregister handler. &quot;typ&quot; and &quot;ns&quot; must be specified exactly the same as
+with registering.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.UnregisterHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterDefaultHandler" class="summary-sig-name">RegisterDefaultHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handler</span>)</span><br />
+ Specify the handler that will be used if no NodeProcessed exception were
+raised. This is returnStanzaHandler by default.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterDefaultHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterEventHandler" class="summary-sig-name">RegisterEventHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handler</span>)</span><br />
+ Register handler that will process events. F.e. &quot;FILERECEIVED&quot; event. See
+common/connection: _event_dispatcher()</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterEventHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#returnStanzaHandler" class="summary-sig-name">returnStanzaHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">conn</span>,
+ <span class="summary-sig-arg">stanza</span>)</span><br />
+ Return stanza back to the sender with &lt;feature-not-implemented/&gt; error
+set</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.returnStanzaHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler" class="summary-sig-name">RegisterCycleHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handler</span>)</span><br />
+ Register handler that will be called on every Dispatcher.Process() call</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterCycleHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterCycleHandler" class="summary-sig-name">UnregisterCycleHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handler</span>)</span><br />
+ Unregister handler that will is called on every Dispatcher.Process() call</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.UnregisterCycleHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event" class="summary-sig-name">Event</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">realm</span>,
+ <span class="summary-sig-arg">event</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Raise some event</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.Event">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch" class="summary-sig-name">dispatch</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>,
+ <span class="summary-sig-arg">session</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">direct</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Main procedure that performs XMPP stanza recognition and calling
+apppropriate handlers for it. Called by simplexml</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.dispatch">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData" class="summary-sig-name" onclick="show_private();">_WaitForData</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Internal wrapper around ProcessNonBlocking. Will check for</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher._WaitForData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse" class="summary-sig-name">SendAndWaitForResponse</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>,
+ <span class="summary-sig-arg">timeout</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">func</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">args</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Send stanza and wait for recipient's response to it. Will call transports
+on_timeout callback if response is not retrieved in time</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.SendAndWaitForResponse">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse" class="summary-sig-name">SendAndCallForResponse</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>,
+ <span class="summary-sig-arg">func</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">args</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Put stanza on the wire and call back when recipient replies. Additional
+callback arguments can be specified in args</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.SendAndCallForResponse">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Wrap transports send method when plugged into NonBlockingClient. Makes
+sure stanzas get ID and from tag.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="getAnID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getAnID</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.getAnID">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="dumpHandlers"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">dumpHandlers</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.dumpHandlers">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return set of user-registered callbacks in it's internal format. Used
+within the library to carry user handlers set over Dispatcher replugins
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="restoreHandlers"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">restoreHandlers</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handlers</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.restoreHandlers">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Restore user-registered callbacks structure from dump previously obtained
+via dumpHandlers. Used within the library to carry user handlers set over
+Dispatcher replugins.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_init"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_init</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher._init">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Register default namespaces/protocols/handlers. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugin</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.plugin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Plug the Dispatcher instance into Client class instance and send initial
+stream header. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.plugout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Prepare instance to be destructed
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="StreamInit"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">StreamInit</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.StreamInit">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send an initial stream header
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_check_stream_start"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_stream_start</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">ns</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">attrs</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher._check_stream_start">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="replace_non_character"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">replace_non_character</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.replace_non_character">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="ProcessNonBlocking"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">ProcessNonBlocking</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.ProcessNonBlocking">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Check incoming stream for data waiting
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>data</code></strong> - data received from transports/IO sockets</li>
+ </ul></dd>
+ <dt>Returns:</dt>
+ <dd><ol class="rst-rst-arabic simple rst-arabic simple">
+<li><p class="rst-first rst-first">length of processed data if some data were processed;</p>
+</li>
+<li><p class="rst-first rst-first">'0' string if no data were processed but link is alive;</p>
+</li>
+<li><p class="rst-first rst-first">0 (zero) if underlying connection is closed.</p>
+</li>
+</ol></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterNamespace"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterNamespace</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">xmlns</span>,
+ <span class="sig-arg">order</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">info</code><code class="variable-quote">'</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterNamespace">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Create internal structures for newly registered namespace</p>
+<p>You can register handlers for this namespace afterwards. By default
+one namespace is already registered
+(jabber:client or jabber:component:accept depending on context.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterProtocol"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterProtocol</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag_name</span>,
+ <span class="sig-arg">Proto</span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">order</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">info</code><code class="variable-quote">'</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterProtocol">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Used to declare some top-level stanza name to dispatcher</p>
+<p>Needed to start registering handlers for such stanzas. Iq, message and
+presence protocols are registered by default.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterNamespaceHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterNamespaceHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">xmlns</span>,
+ <span class="sig-arg">handler</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">ns</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">makefirst</span>=<span class="sig-default">0</span>,
+ <span class="sig-arg">system</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterNamespaceHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Register handler for processing all stanzas for specified namespace
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">handler</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">ns</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">makefirst</span>=<span class="sig-default">False</span>,
+ <span class="sig-arg">system</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Register user callback as stanzas handler of declared type</p>
+<p>Callback arguments:
+dispatcher instance (for replying), incoming return of previous handlers.
+The callback must raise xmpp.NodeProcessed just before return if it wants
+to prevent other callbacks to be called with the same stanza as argument
+_and_, more importantly library from returning stanza to sender with error set.</p>
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>name</code></strong> - name of stanza. F.e. &quot;iq&quot;.</li>
+ <li><strong class="pname"><code>handler</code></strong> - user callback.</li>
+ <li><strong class="pname"><code>typ</code></strong> - value of stanza's &quot;type&quot; attribute. If not specified any
+value will match</li>
+ <li><strong class="pname"><code>ns</code></strong> - namespace of child that stanza must contain.</li>
+ <li><strong class="pname"><code>makefirst</code></strong> - insert handler in the beginning of handlers list instead
+of adding it to the end. Note that more common handlers i.e. w/o &quot;typ&quot;
+and &quot; will be called first nevertheless.</li>
+ <li><strong class="pname"><code>system</code></strong> - call handler even if NodeProcessed Exception were raised
+already.</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterHandlerOnce"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterHandlerOnce</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">handler</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">ns</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">makefirst</span>=<span class="sig-default">0</span>,
+ <span class="sig-arg">system</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterHandlerOnce">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Unregister handler after first call (not implemented yet)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="UnregisterHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">UnregisterHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">handler</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">ns</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.UnregisterHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Unregister handler. &quot;typ&quot; and &quot;ns&quot; must be specified exactly the same as
+with registering.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterDefaultHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterDefaultHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterDefaultHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Specify the handler that will be used if no NodeProcessed exception were
+raised. This is returnStanzaHandler by default.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterEventHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterEventHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterEventHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Register handler that will process events. F.e. &quot;FILERECEIVED&quot; event. See
+common/connection: _event_dispatcher()
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="returnStanzaHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">returnStanzaHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">conn</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.returnStanzaHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return stanza back to the sender with &lt;feature-not-implemented/&gt; error
+set
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RegisterCycleHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RegisterCycleHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.RegisterCycleHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Register handler that will be called on every Dispatcher.Process() call
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="UnregisterCycleHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">UnregisterCycleHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.UnregisterCycleHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Unregister handler that will is called on every Dispatcher.Process() call
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="Event"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">Event</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">realm</span>,
+ <span class="sig-arg">event</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.Event">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Raise some event
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>realm</code></strong> - scope of event. Usually a namespace.</li>
+ <li><strong class="pname"><code>event</code></strong> - the event itself. F.e. &quot;SUCCESSFUL SEND&quot;.</li>
+ <li><strong class="pname"><code>data</code></strong> - data that comes along with event. Depends on event.</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="dispatch"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">dispatch</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>,
+ <span class="sig-arg">session</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">direct</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.dispatch">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Main procedure that performs XMPP stanza recognition and calling
+apppropriate handlers for it. Called by simplexml
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_WaitForData"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_WaitForData</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher._WaitForData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Internal wrapper around ProcessNonBlocking. Will check for
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="SendAndWaitForResponse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">SendAndWaitForResponse</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>,
+ <span class="sig-arg">timeout</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">func</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">args</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.SendAndWaitForResponse">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Send stanza and wait for recipient's response to it. Will call transports
+on_timeout callback if response is not retrieved in time</p>
+<p>Be aware: Only timeout of latest call of SendAndWait is active.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="SendAndCallForResponse"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">SendAndCallForResponse</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>,
+ <span class="sig-arg">func</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">args</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.SendAndCallForResponse">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Put stanza on the wire and call back when recipient replies. Additional
+callback arguments can be specified in args
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.dispatcher_nb-pysrc.html#XMPPDispatcher.send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Wrap transports send method when plugged into NonBlockingClient. Makes
+sure stanzas get ID and from tag.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.features_nb-module.html b/doc/apidocs/nbxmpp.features_nb-module.html
new file mode 100644
index 0000000..9995c64
--- /dev/null
+++ b/doc/apidocs/nbxmpp.features_nb-module.html
@@ -0,0 +1,982 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.features_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;features_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.features_nb-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module features_nb</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html">source&nbsp;code</a></span></p>
+Different stuff that wasn't worth separating it into modules
+(Registration, Privacy Lists, ...)
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#_on_default_response" class="summary-sig-name" onclick="show_private();">_on_default_response</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">iq</span>,
+ <span class="summary-sig-arg">cb</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#_on_default_response">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#getRegInfo" class="summary-sig-name">getRegInfo</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">host</span>,
+ <span class="summary-sig-arg">info</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">sync</span>=<span class="summary-sig-default">True</span>)</span><br />
+ Get registration form from remote host. Info dict can be prefilled
+:param disp: plugged dispatcher instance
+:param info: dict, like {'username':'joey'}.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getRegInfo">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#_ReceivedRegInfo" class="summary-sig-name" onclick="show_private();">_ReceivedRegInfo</a>(<span class="summary-sig-arg">con</span>,
+ <span class="summary-sig-arg">resp</span>,
+ <span class="summary-sig-arg">agent</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#_ReceivedRegInfo">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#register" class="summary-sig-name">register</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">host</span>,
+ <span class="summary-sig-arg">info</span>,
+ <span class="summary-sig-arg">cb</span>,
+ <span class="summary-sig-arg">args</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Perform registration on remote server with provided info</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#register">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#unregister" class="summary-sig-name">unregister</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">host</span>,
+ <span class="summary-sig-arg">cb</span>)</span><br />
+ Unregisters with host (permanently removes account). Returns true on success</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#unregister">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#changePasswordTo" class="summary-sig-name">changePasswordTo</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">newpassword</span>,
+ <span class="summary-sig-arg">host</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">cb</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Changes password on specified or current (if not specified) server. Returns
+true on success.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#changePasswordTo">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#getPrivacyLists" class="summary-sig-name">getPrivacyLists</a>(<span class="summary-sig-arg">disp</span>)</span><br />
+ Request privacy lists from connected server. Returns dictionary of existing
+lists on success.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getPrivacyLists">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#getActiveAndDefaultPrivacyLists" class="summary-sig-name">getActiveAndDefaultPrivacyLists</a>(<span class="summary-sig-arg">disp</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getActiveAndDefaultPrivacyLists">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#getPrivacyList" class="summary-sig-name">getPrivacyList</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">listname</span>)</span><br />
+ Request specific privacy list listname. Returns list of XML nodes (rules)
+taken from the server responce.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getPrivacyList">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#setActivePrivacyList" class="summary-sig-name">setActivePrivacyList</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">listname</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">active</code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">cb</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Switch privacy list 'listname' to specified type. By default the type is
+'active'. Returns true on success.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#setActivePrivacyList">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#setDefaultPrivacyList" class="summary-sig-name">setDefaultPrivacyList</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">listname</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Set the default privacy list as 'listname'. Returns true on success</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#setDefaultPrivacyList">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#setPrivacyList" class="summary-sig-name">setPrivacyList</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">listname</span>,
+ <span class="summary-sig-arg">tags</span>)</span><br />
+ Set the ruleset</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#setPrivacyList">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.features_nb-module.html#delPrivacyList" class="summary-sig-name">delPrivacyList</a>(<span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">listname</span>,
+ <span class="summary-sig-arg">cb</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Deletes privacy list 'listname'. Returns true on success.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#delPrivacyList">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#REGISTER_DATA_RECEIVED" class="summary-name">REGISTER_DATA_RECEIVED</a> = <code title="'REGISTER DATA RECEIVED'"><code class="variable-quote">'</code><code class="variable-string">REGISTER DATA RECEIVED</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PL_TYPE_JID" class="summary-name">PL_TYPE_JID</a> = <code title="'jid'"><code class="variable-quote">'</code><code class="variable-string">jid</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PL_TYPE_GROUP" class="summary-name">PL_TYPE_GROUP</a> = <code title="'group'"><code class="variable-quote">'</code><code class="variable-string">group</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PL_TYPE_SUBC" class="summary-name">PL_TYPE_SUBC</a> = <code title="'subscription'"><code class="variable-quote">'</code><code class="variable-string">subscription</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PL_ACT_ALLOW" class="summary-name">PL_ACT_ALLOW</a> = <code title="'allow'"><code class="variable-quote">'</code><code class="variable-string">allow</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PL_ACT_DENY" class="summary-name">PL_ACT_DENY</a> = <code title="'deny'"><code class="variable-quote">'</code><code class="variable-string">deny</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_RECEIVED" class="summary-name">PRIVACY_LISTS_RECEIVED</a> = <code title="'PRIVACY LISTS RECEIVED'"><code class="variable-quote">'</code><code class="variable-string">PRIVACY LISTS RECEIVED</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PRIVACY_LIST_RECEIVED" class="summary-name">PRIVACY_LIST_RECEIVED</a> = <code title="'PRIVACY LIST RECEIVED'"><code class="variable-quote">'</code><code class="variable-string">PRIVACY LIST RECEIVED</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_ACTIVE_DEFAULT" class="summary-name">PRIVACY_LISTS_ACTIVE_DEFAULT</a> = <code title="'PRIVACY LISTS ACTIVE DEFAULT'"><code class="variable-quote">'</code><code class="variable-string">PRIVACY LISTS ACTIVE DEFAULT</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.features_nb-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="nbxmpp.protocol.NS_REGISTER">NS_REGISTER</span>,
+ <span title="nbxmpp.protocol.NS_PRIVACY">NS_PRIVACY</span>,
+ <span title="nbxmpp.protocol.NS_DATA">NS_DATA</span>,
+ <a href="nbxmpp.protocol.Iq-class.html" title="nbxmpp.protocol.Iq">Iq</a>,
+ <a href="nbxmpp.protocol-module.html#isResultNode" title="nbxmpp.protocol.isResultNode">isResultNode</a>,
+ <a href="nbxmpp.simplexml.Node-class.html" title="nbxmpp.protocol.Node">Node</a>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="_on_default_response"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_default_response</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">iq</span>,
+ <span class="sig-arg">cb</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#_on_default_response">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getRegInfo"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getRegInfo</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">host</span>,
+ <span class="sig-arg">info</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">sync</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getRegInfo">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Get registration form from remote host. Info dict can be prefilled
+:param disp: plugged dispatcher instance
+:param info: dict, like {'username':'joey'}.</p>
+<p>See JEP-0077 for details.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_ReceivedRegInfo"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_ReceivedRegInfo</span>(<span class="sig-arg">con</span>,
+ <span class="sig-arg">resp</span>,
+ <span class="sig-arg">agent</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#_ReceivedRegInfo">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="register"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">register</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">host</span>,
+ <span class="sig-arg">info</span>,
+ <span class="sig-arg">cb</span>,
+ <span class="sig-arg">args</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#register">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Perform registration on remote server with provided info</p>
+<p>If registration fails you can get additional info from the dispatcher's
+owner attributes lastErrNode, lastErr and lastErrCode.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="unregister"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">unregister</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">host</span>,
+ <span class="sig-arg">cb</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#unregister">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Unregisters with host (permanently removes account). Returns true on success
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="changePasswordTo"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">changePasswordTo</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">newpassword</span>,
+ <span class="sig-arg">host</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">cb</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#changePasswordTo">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Changes password on specified or current (if not specified) server. Returns
+true on success.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getPrivacyLists"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getPrivacyLists</span>(<span class="sig-arg">disp</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getPrivacyLists">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Request privacy lists from connected server. Returns dictionary of existing
+lists on success.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getActiveAndDefaultPrivacyLists"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getActiveAndDefaultPrivacyLists</span>(<span class="sig-arg">disp</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getActiveAndDefaultPrivacyLists">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getPrivacyList"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getPrivacyList</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">listname</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#getPrivacyList">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Request specific privacy list listname. Returns list of XML nodes (rules)
+taken from the server responce.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setActivePrivacyList"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setActivePrivacyList</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">listname</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">active</code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">cb</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#setActivePrivacyList">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Switch privacy list 'listname' to specified type. By default the type is
+'active'. Returns true on success.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setDefaultPrivacyList"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setDefaultPrivacyList</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">listname</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#setDefaultPrivacyList">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the default privacy list as 'listname'. Returns true on success
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setPrivacyList"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setPrivacyList</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">listname</span>,
+ <span class="sig-arg">tags</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#setPrivacyList">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Set the ruleset</p>
+<p>'list' should be the simpleXML node formatted according to RFC 3921
+(XMPP-IM) I.e. Node('list',{'name':listname},payload=[...]).</p>
+<p>Returns true on success.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="delPrivacyList"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">delPrivacyList</span>(<span class="sig-arg">disp</span>,
+ <span class="sig-arg">listname</span>,
+ <span class="sig-arg">cb</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.features_nb-pysrc.html#delPrivacyList">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Deletes privacy list 'listname'. Returns true on success.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="REGISTER_DATA_RECEIVED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">REGISTER_DATA_RECEIVED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">REGISTER DATA RECEIVED</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PL_TYPE_JID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PL_TYPE_JID</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jid</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PL_TYPE_GROUP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PL_TYPE_GROUP</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">group</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PL_TYPE_SUBC"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PL_TYPE_SUBC</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">subscription</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PL_ACT_ALLOW"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PL_ACT_ALLOW</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">allow</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PL_ACT_DENY"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PL_ACT_DENY</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">deny</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PRIVACY_LISTS_RECEIVED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PRIVACY_LISTS_RECEIVED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">PRIVACY LISTS RECEIVED</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PRIVACY_LIST_RECEIVED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PRIVACY_LIST_RECEIVED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">PRIVACY LIST RECEIVED</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PRIVACY_LISTS_ACTIVE_DEFAULT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PRIVACY_LISTS_ACTIVE_DEFAULT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">PRIVACY LISTS ACTIVE DEFAULT</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.features_nb-pysrc.html b/doc/apidocs/nbxmpp.features_nb-pysrc.html
new file mode 100644
index 0000000..0ecc944
--- /dev/null
+++ b/doc/apidocs/nbxmpp.features_nb-pysrc.html
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.features_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;features_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.features_nb-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.features_nb-module.html">Module nbxmpp.features_nb</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## features.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2004 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2007 Julien Pivotto &lt;roidelapluie@gmail.com&gt;</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># $Id: features.py,v 1.22 2005/09/30 20:13:04 mikealbon Exp $</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">Different stuff that wasn't worth separating it into modules</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">(Registration, Privacy Lists, ...)</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-0', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Variable nbxmpp.protocol.NS_REGISTER=nbxmpp.protocol-module.html#NS_REGISTER"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-1', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name" targets="Variable nbxmpp.protocol.NS_PRIVACY=nbxmpp.protocol-module.html#NS_PRIVACY"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-2', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Variable nbxmpp.protocol.NS_DATA=nbxmpp.protocol-module.html#NS_DATA"><a title="nbxmpp.protocol.NS_DATA" class="py-name" href="#" onclick="return doclink('link-3', 'NS_DATA', 'link-3');">NS_DATA</a></tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Class nbxmpp.protocol.Iq=nbxmpp.protocol.Iq-class.html"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-4', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Function nbxmpp.protocol.isResultNode()=nbxmpp.protocol-module.html#isResultNode"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-5', 'isResultNode', 'link-5');">isResultNode</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-6', 'Node', 'link-6');">Node</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt>
+<a name="_on_default_response"></a><div id="_on_default_response-def"><a name="L25"></a><tt class="py-lineno"> 25</tt> <a class="py-toggle" href="#" id="_on_default_response-toggle" onclick="return toggle('_on_default_response');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#_on_default_response">_on_default_response</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">iq</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_on_default_response-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_on_default_response-expanded"><a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">_on_response</tt><tt class="py-op">(</tt><tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-7" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-7', 'isResultNode', 'link-5');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">cb</tt><tt class="py-op">:</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">cb</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-8', 'SendAndCallForResponse', 'link-8');">SendAndCallForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">_on_response</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment">### Registration</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable nbxmpp.features_nb.REGISTER_DATA_RECEIVED=nbxmpp.features_nb-module.html#REGISTER_DATA_RECEIVED"><a title="nbxmpp.features_nb.REGISTER_DATA_RECEIVED" class="py-name" href="#" onclick="return doclink('link-9', 'REGISTER_DATA_RECEIVED', 'link-9');">REGISTER_DATA_RECEIVED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'REGISTER DATA RECEIVED'</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
+<a name="getRegInfo"></a><div id="getRegInfo-def"><a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="getRegInfo-toggle" onclick="return toggle('getRegInfo');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#getRegInfo">getRegInfo</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">,</tt> <tt class="py-param">info</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">sync</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="getRegInfo-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getRegInfo-expanded"><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> Get registration form from remote host. Info dict can be prefilled</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> :param disp: plugged dispatcher instance</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> :param info: dict, like {'username':'joey'}.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> See JEP-0077 for details.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">=</tt><tt id="link-10" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-10', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-11', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">host</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">info</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.keys()=nbxmpp.roster_nb.NonBlockingRoster-class.html#keys"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-12', 'keys', 'link-12');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method nbxmpp.simplexml.Node.setTagData()=nbxmpp.simplexml.Node-class.html#setTagData"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-13', 'setTagData', 'link-13');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">info</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">sync</tt><tt class="py-op">:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-14', 'SendAndCallForResponse', 'link-8');">SendAndCallForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt id="link-15" class="py-name" targets="Function nbxmpp.features_nb._ReceivedRegInfo()=nbxmpp.features_nb-module.html#_ReceivedRegInfo"><a title="nbxmpp.features_nb._ReceivedRegInfo" class="py-name" href="#" onclick="return doclink('link-15', '_ReceivedRegInfo', 'link-15');">_ReceivedRegInfo</a></tt><tt class="py-op">(</tt><tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Class nbxmpp.dispatcher_nb.Dispatcher=nbxmpp.dispatcher_nb.Dispatcher-class.html"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-16', 'Dispatcher', 'link-16');">Dispatcher</a></tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">host</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-17', 'SendAndCallForResponse', 'link-8');">SendAndCallForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt id="link-18" class="py-name"><a title="nbxmpp.features_nb._ReceivedRegInfo" class="py-name" href="#" onclick="return doclink('link-18', '_ReceivedRegInfo', 'link-15');">_ReceivedRegInfo</a></tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'agent'</tt><tt class="py-op">:</tt> <tt class="py-name">host</tt> <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
+<a name="_ReceivedRegInfo"></a><div id="_ReceivedRegInfo-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="_ReceivedRegInfo-toggle" onclick="return toggle('_ReceivedRegInfo');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#_ReceivedRegInfo">_ReceivedRegInfo</a><tt class="py-op">(</tt><tt class="py-param">con</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ReceivedRegInfo-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_ReceivedRegInfo-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt id="link-19" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-19', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-20', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">agent</tt><tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-21" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-21', 'isResultNode', 'link-5');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method nbxmpp.protocol.Protocol.getErrorMsg()=nbxmpp.protocol.Protocol-class.html#getErrorMsg"><a title="nbxmpp.protocol.Protocol.getErrorMsg" class="py-name" href="#" onclick="return doclink('link-22', 'getErrorMsg', 'link-22');">getErrorMsg</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">con</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.Event()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#Event"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-23', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-24', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt id="link-25" class="py-name"><a title="nbxmpp.features_nb.REGISTER_DATA_RECEIVED" class="py-name" href="#" onclick="return doclink('link-25', 'REGISTER_DATA_RECEIVED', 'link-9');">REGISTER_DATA_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">agent</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">error_msg</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">tag</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-26', 'getTag', 'link-26');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-27" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-27', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="nbxmpp.protocol.Protocol.getErrorMsg" class="py-name" href="#" onclick="return doclink('link-28', 'getErrorMsg', 'link-22');">getErrorMsg</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">con</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-29', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-30" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-30', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt id="link-31" class="py-name"><a title="nbxmpp.features_nb.REGISTER_DATA_RECEIVED" class="py-name" href="#" onclick="return doclink('link-31', 'REGISTER_DATA_RECEIVED', 'link-9');">REGISTER_DATA_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">agent</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">error_msg</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">df</tt><tt class="py-op">=</tt><tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-32', 'getTag', 'link-26');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-33" class="py-name"><a title="nbxmpp.protocol.NS_DATA" class="py-name" href="#" onclick="return doclink('link-33', 'NS_DATA', 'link-3');">NS_DATA</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">df</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">con</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-34', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-35', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt id="link-36" class="py-name"><a title="nbxmpp.features_nb.REGISTER_DATA_RECEIVED" class="py-name" href="#" onclick="return doclink('link-36', 'REGISTER_DATA_RECEIVED', 'link-9');">REGISTER_DATA_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">agent</tt><tt class="py-op">,</tt> <tt class="py-name">df</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">tag</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">df</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method nbxmpp.protocol.Iq.getQueryPayload()=nbxmpp.protocol.Iq-class.html#getQueryPayload"><a title="nbxmpp.protocol.Iq.getQueryPayload" class="py-name" href="#" onclick="return doclink('link-37', 'getQueryPayload', 'link-37');">getQueryPayload</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-38" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-38', 'Node', 'link-6');">Node</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-39', 'getName', 'link-39');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method nbxmpp.simplexml.Node.getData()=nbxmpp.simplexml.Node-class.html#getData"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-40', 'getData', 'link-40');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">con</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-41', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-42" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-42', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name"><a title="nbxmpp.features_nb.REGISTER_DATA_RECEIVED" class="py-name" href="#" onclick="return doclink('link-43', 'REGISTER_DATA_RECEIVED', 'link-9');">REGISTER_DATA_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">agent</tt><tt class="py-op">,</tt> <tt class="py-name">df</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt>
+<a name="register"></a><div id="register-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="register-toggle" onclick="return toggle('register');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#register">register</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">,</tt> <tt class="py-param">info</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="register-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="register-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> Perform registration on remote server with provided info</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> If registration fails you can get additional info from the dispatcher's</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> owner attributes lastErrNode, lastErr and lastErrCode.</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">=</tt><tt id="link-44" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-44', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-45" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-45', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">host</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">info</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">info</tt><tt class="py-op">=</tt><tt class="py-name">info</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method nbxmpp.protocol.DataForm.asDict()=nbxmpp.protocol.DataForm-class.html#asDict"><a title="nbxmpp.protocol.DataForm.asDict" class="py-name" href="#" onclick="return doclink('link-46', 'asDict', 'link-46');">asDict</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">info</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-47', 'keys', 'link-12');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method nbxmpp.simplexml.Node.setTag()=nbxmpp.simplexml.Node-class.html#setTag"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-48', 'setTag', 'link-48');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-49', 'setTagData', 'link-13');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">info</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-50', 'SendAndCallForResponse', 'link-8');">SendAndCallForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">cb</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt>
+<a name="unregister"></a><div id="unregister-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="unregister-toggle" onclick="return toggle('unregister');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#unregister">unregister</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="unregister-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="unregister-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> Unregisters with host (permanently removes account). Returns true on success</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-51', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-52" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-52', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-53" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-53', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'remove'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt id="link-54" class="py-name" targets="Function nbxmpp.features_nb._on_default_response()=nbxmpp.features_nb-module.html#_on_default_response"><a title="nbxmpp.features_nb._on_default_response" class="py-name" href="#" onclick="return doclink('link-54', '_on_default_response', 'link-54');">_on_default_response</a></tt><tt class="py-op">(</tt><tt class="py-name">disp</tt><tt class="py-op">,</tt> <tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">cb</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt>
+<a name="changePasswordTo"></a><div id="changePasswordTo-def"><a name="L101"></a><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="changePasswordTo-toggle" onclick="return toggle('changePasswordTo');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#changePasswordTo">changePasswordTo</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">newpassword</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="changePasswordTo-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="changePasswordTo-expanded"><a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> Changes password on specified or current (if not specified) server. Returns</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> true on success.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">host</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-55', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-56" class="py-name"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-56', 'NS_REGISTER', 'link-1');">NS_REGISTER</a></tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-57" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-57', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'username'</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">disp</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-58', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'password'</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">newpassword</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt id="link-59" class="py-name"><a title="nbxmpp.features_nb._on_default_response" class="py-name" href="#" onclick="return doclink('link-59', '_on_default_response', 'link-54');">_on_default_response</a></tt><tt class="py-op">(</tt><tt class="py-name">disp</tt><tt class="py-op">,</tt> <tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">cb</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-comment">### Privacy List</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-comment">###############################################################################</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt id="link-60" class="py-name" targets="Variable nbxmpp.features_nb.PL_TYPE_JID=nbxmpp.features_nb-module.html#PL_TYPE_JID"><a title="nbxmpp.features_nb.PL_TYPE_JID" class="py-name" href="#" onclick="return doclink('link-60', 'PL_TYPE_JID', 'link-60');">PL_TYPE_JID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jid'</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt id="link-61" class="py-name" targets="Variable nbxmpp.features_nb.PL_TYPE_GROUP=nbxmpp.features_nb-module.html#PL_TYPE_GROUP"><a title="nbxmpp.features_nb.PL_TYPE_GROUP" class="py-name" href="#" onclick="return doclink('link-61', 'PL_TYPE_GROUP', 'link-61');">PL_TYPE_GROUP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'group'</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt id="link-62" class="py-name" targets="Variable nbxmpp.features_nb.PL_TYPE_SUBC=nbxmpp.features_nb-module.html#PL_TYPE_SUBC"><a title="nbxmpp.features_nb.PL_TYPE_SUBC" class="py-name" href="#" onclick="return doclink('link-62', 'PL_TYPE_SUBC', 'link-62');">PL_TYPE_SUBC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'subscription'</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt id="link-63" class="py-name" targets="Variable nbxmpp.features_nb.PL_ACT_ALLOW=nbxmpp.features_nb-module.html#PL_ACT_ALLOW"><a title="nbxmpp.features_nb.PL_ACT_ALLOW" class="py-name" href="#" onclick="return doclink('link-63', 'PL_ACT_ALLOW', 'link-63');">PL_ACT_ALLOW</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'allow'</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt id="link-64" class="py-name" targets="Variable nbxmpp.features_nb.PL_ACT_DENY=nbxmpp.features_nb-module.html#PL_ACT_DENY"><a title="nbxmpp.features_nb.PL_ACT_DENY" class="py-name" href="#" onclick="return doclink('link-64', 'PL_ACT_DENY', 'link-64');">PL_ACT_DENY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'deny'</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt id="link-65" class="py-name" targets="Variable nbxmpp.features_nb.PRIVACY_LISTS_RECEIVED=nbxmpp.features_nb-module.html#PRIVACY_LISTS_RECEIVED"><a title="nbxmpp.features_nb.PRIVACY_LISTS_RECEIVED" class="py-name" href="#" onclick="return doclink('link-65', 'PRIVACY_LISTS_RECEIVED', 'link-65');">PRIVACY_LISTS_RECEIVED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'PRIVACY LISTS RECEIVED'</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt id="link-66" class="py-name" targets="Variable nbxmpp.features_nb.PRIVACY_LIST_RECEIVED=nbxmpp.features_nb-module.html#PRIVACY_LIST_RECEIVED"><a title="nbxmpp.features_nb.PRIVACY_LIST_RECEIVED" class="py-name" href="#" onclick="return doclink('link-66', 'PRIVACY_LIST_RECEIVED', 'link-66');">PRIVACY_LIST_RECEIVED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'PRIVACY LIST RECEIVED'</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt id="link-67" class="py-name" targets="Variable nbxmpp.features_nb.PRIVACY_LISTS_ACTIVE_DEFAULT=nbxmpp.features_nb-module.html#PRIVACY_LISTS_ACTIVE_DEFAULT"><a title="nbxmpp.features_nb.PRIVACY_LISTS_ACTIVE_DEFAULT" class="py-name" href="#" onclick="return doclink('link-67', 'PRIVACY_LISTS_ACTIVE_DEFAULT', 'link-67');">PRIVACY_LISTS_ACTIVE_DEFAULT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'PRIVACY LISTS ACTIVE DEFAULT'</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> </tt>
+<a name="getPrivacyLists"></a><div id="getPrivacyLists-def"><a name="L126"></a><tt class="py-lineno">126</tt> <a class="py-toggle" href="#" id="getPrivacyLists-toggle" onclick="return toggle('getPrivacyLists');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#getPrivacyLists">getPrivacyLists</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="getPrivacyLists-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getPrivacyLists-expanded"><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> Request privacy lists from connected server. Returns dictionary of existing</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> lists on success.</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-68', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-69', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">_on_response</tt><tt class="py-op">(</tt><tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">dict_</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'lists'</tt><tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">}</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-70" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-70', 'isResultNode', 'link-5');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-71', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-72', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt id="link-73" class="py-name"><a title="nbxmpp.features_nb.PRIVACY_LISTS_RECEIVED" class="py-name" href="#" onclick="return doclink('link-73', 'PRIVACY_LISTS_RECEIVED', 'link-65');">PRIVACY_LISTS_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">list_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="nbxmpp.protocol.Iq.getQueryPayload" class="py-name" href="#" onclick="return doclink('link-74', 'getQueryPayload', 'link-37');">getQueryPayload</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-75', 'getName', 'link-39');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-string">'list'</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">dict_</tt><tt class="py-op">[</tt><tt class="py-string">'lists'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-76', 'getAttr', 'link-76');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">dict_</tt><tt class="py-op">[</tt><tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-77', 'getName', 'link-39');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-78', 'getAttr', 'link-76');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-79', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-80" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-80', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name"><a title="nbxmpp.features_nb.PRIVACY_LISTS_RECEIVED" class="py-name" href="#" onclick="return doclink('link-81', 'PRIVACY_LISTS_RECEIVED', 'link-65');">PRIVACY_LISTS_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">dict_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-82', 'SendAndCallForResponse', 'link-8');">SendAndCallForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">_on_response</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> </tt>
+<a name="getActiveAndDefaultPrivacyLists"></a><div id="getActiveAndDefaultPrivacyLists-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="getActiveAndDefaultPrivacyLists-toggle" onclick="return toggle('getActiveAndDefaultPrivacyLists');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#getActiveAndDefaultPrivacyLists">getActiveAndDefaultPrivacyLists</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="getActiveAndDefaultPrivacyLists-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getActiveAndDefaultPrivacyLists-expanded"><a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-83', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-84', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">_on_response</tt><tt class="py-op">(</tt><tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">dict_</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'active'</tt><tt class="py-op">:</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">'default'</tt><tt class="py-op">:</tt> <tt class="py-string">''</tt><tt class="py-op">}</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-85" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-85', 'isResultNode', 'link-5');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-86', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-87" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-87', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt id="link-88" class="py-name"><a title="nbxmpp.features_nb.PRIVACY_LISTS_ACTIVE_DEFAULT" class="py-name" href="#" onclick="return doclink('link-88', 'PRIVACY_LISTS_ACTIVE_DEFAULT', 'link-67');">PRIVACY_LISTS_ACTIVE_DEFAULT</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">list_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="nbxmpp.protocol.Iq.getQueryPayload" class="py-name" href="#" onclick="return doclink('link-89', 'getQueryPayload', 'link-37');">getQueryPayload</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-90', 'getName', 'link-39');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'active'</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">dict_</tt><tt class="py-op">[</tt><tt class="py-string">'active'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-91', 'getAttr', 'link-76');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-92', 'getName', 'link-39');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'default'</tt><tt class="py-op">:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">dict_</tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-93', 'getAttr', 'link-76');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-94', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-95" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-95', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt id="link-96" class="py-name"><a title="nbxmpp.features_nb.PRIVACY_LISTS_ACTIVE_DEFAULT" class="py-name" href="#" onclick="return doclink('link-96', 'PRIVACY_LISTS_ACTIVE_DEFAULT', 'link-67');">PRIVACY_LISTS_ACTIVE_DEFAULT</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">dict_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-97', 'SendAndCallForResponse', 'link-8');">SendAndCallForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">_on_response</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt>
+<a name="getPrivacyList"></a><div id="getPrivacyList-def"><a name="L160"></a><tt class="py-lineno">160</tt> <a class="py-toggle" href="#" id="getPrivacyList-toggle" onclick="return toggle('getPrivacyList');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#getPrivacyList">getPrivacyList</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">listname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="getPrivacyList-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getPrivacyList-expanded"><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> Request specific privacy list listname. Returns list of XML nodes (rules)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> taken from the server responce.</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">_on_response</tt><tt class="py-op">(</tt><tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-98" class="py-name"><a title="nbxmpp.protocol.isResultNode" class="py-name" href="#" onclick="return doclink('link-98', 'isResultNode', 'link-5');">isResultNode</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-99', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-100" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-100', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt id="link-101" class="py-name"><a title="nbxmpp.features_nb.PRIVACY_LIST_RECEIVED" class="py-name" href="#" onclick="return doclink('link-101', 'PRIVACY_LIST_RECEIVED', 'link-66');">PRIVACY_LIST_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.Event" class="py-name" href="#" onclick="return doclink('link-102', 'Event', 'link-23');">Event</a></tt><tt class="py-op">(</tt><tt id="link-103" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-103', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt id="link-104" class="py-name"><a title="nbxmpp.features_nb.PRIVACY_LIST_RECEIVED" class="py-name" href="#" onclick="return doclink('link-104', 'PRIVACY_LIST_RECEIVED', 'link-66');">PRIVACY_LIST_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-105" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-105', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt id="link-106" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-106', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-107" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-107', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'list'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'name'</tt><tt class="py-op">:</tt> <tt class="py-name">listname</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">disp</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndCallForResponse" class="py-name" href="#" onclick="return doclink('link-108', 'SendAndCallForResponse', 'link-8');">SendAndCallForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">_on_response</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> </tt>
+<a name="setActivePrivacyList"></a><div id="setActivePrivacyList-def"><a name="L173"></a><tt class="py-lineno">173</tt> <a class="py-toggle" href="#" id="setActivePrivacyList-toggle" onclick="return toggle('setActivePrivacyList');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#setActivePrivacyList">setActivePrivacyList</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">listname</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-string">'active'</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="setActivePrivacyList-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="setActivePrivacyList-expanded"><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> Switch privacy list 'listname' to specified type. By default the type is</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-docstring"> 'active'. Returns true on success.</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">listname</tt><tt class="py-op">:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'name'</tt><tt class="py-op">:</tt><tt class="py-name">listname</tt><tt class="py-op">}</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-109', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-110" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-110', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-111" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-111', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt id="link-112" class="py-name"><a title="nbxmpp.features_nb._on_default_response" class="py-name" href="#" onclick="return doclink('link-112', '_on_default_response', 'link-54');">_on_default_response</a></tt><tt class="py-op">(</tt><tt class="py-name">disp</tt><tt class="py-op">,</tt> <tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">cb</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
+<a name="setDefaultPrivacyList"></a><div id="setDefaultPrivacyList-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="setDefaultPrivacyList-toggle" onclick="return toggle('setDefaultPrivacyList');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#setDefaultPrivacyList">setDefaultPrivacyList</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">listname</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="setDefaultPrivacyList-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="setDefaultPrivacyList-expanded"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> Set the default privacy list as 'listname'. Returns true on success</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-113" class="py-name" targets="Function nbxmpp.features_nb.setActivePrivacyList()=nbxmpp.features_nb-module.html#setActivePrivacyList"><a title="nbxmpp.features_nb.setActivePrivacyList" class="py-name" href="#" onclick="return doclink('link-113', 'setActivePrivacyList', 'link-113');">setActivePrivacyList</a></tt><tt class="py-op">(</tt><tt class="py-name">disp</tt><tt class="py-op">,</tt> <tt class="py-name">listname</tt><tt class="py-op">,</tt> <tt class="py-string">'default'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> </tt>
+<a name="setPrivacyList"></a><div id="setPrivacyList-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="setPrivacyList-toggle" onclick="return toggle('setPrivacyList');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#setPrivacyList">setPrivacyList</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">listname</tt><tt class="py-op">,</tt> <tt class="py-param">tags</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="setPrivacyList-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="setPrivacyList-expanded"><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> Set the ruleset</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> 'list' should be the simpleXML node formatted according to RFC 3921</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> (XMPP-IM) I.e. Node('list',{'name':listname},payload=[...]).</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> Returns true on success.</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-114', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-115" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-115', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">list_query</tt> <tt class="py-op">=</tt> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-116', 'getTag', 'link-26');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-117', 'setTag', 'link-48');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'list'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'name'</tt><tt class="py-op">:</tt> <tt class="py-name">listname</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tags</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'type'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'value'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">item_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">list_query</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-118', 'setTag', 'link-48');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'action'</tt><tt class="py-op">:</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'action'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-string">'order'</tt><tt class="py-op">:</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'order'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-string">'value'</tt><tt class="py-op">:</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'value'</tt><tt class="py-op">]</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">item_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">list_query</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-119', 'setTag', 'link-48');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'action'</tt><tt class="py-op">:</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'action'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-string">'order'</tt><tt class="py-op">:</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'order'</tt><tt class="py-op">]</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'child'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child_tag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'child'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">item_tag</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-120', 'setTag', 'link-48');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-name">child_tag</tt><tt class="py-op">)</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt id="link-121" class="py-name"><a title="nbxmpp.features_nb._on_default_response" class="py-name" href="#" onclick="return doclink('link-121', '_on_default_response', 'link-54');">_on_default_response</a></tt><tt class="py-op">(</tt><tt class="py-name">disp</tt><tt class="py-op">,</tt> <tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt>
+<a name="delPrivacyList"></a><div id="delPrivacyList-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="delPrivacyList-toggle" onclick="return toggle('delPrivacyList');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.features_nb-module.html#delPrivacyList">delPrivacyList</a><tt class="py-op">(</tt><tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">listname</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="delPrivacyList-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="delPrivacyList-expanded"><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-docstring">''' Deletes privacy list 'listname'. Returns true on success. '''</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-122', 'Iq', 'link-4');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-123" class="py-name"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-123', 'NS_PRIVACY', 'link-2');">NS_PRIVACY</a></tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-124" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-124', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'list'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'name'</tt><tt class="py-op">:</tt><tt class="py-name">listname</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt id="link-125" class="py-name"><a title="nbxmpp.features_nb._on_default_response" class="py-name" href="#" onclick="return doclink('link-125', '_on_default_response', 'link-54');">_on_default_response</a></tt><tt class="py-op">(</tt><tt class="py-name">disp</tt><tt class="py-op">,</tt> <tt class="py-name">iq</tt><tt class="py-op">,</tt> <tt class="py-name">cb</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.idlequeue-module.html b/doc/apidocs/nbxmpp.idlequeue-module.html
new file mode 100644
index 0000000..238bc02
--- /dev/null
+++ b/doc/apidocs/nbxmpp.idlequeue-module.html
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.idlequeue</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;idlequeue
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.idlequeue-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module idlequeue</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html">source&nbsp;code</a></span></p>
+Idlequeues are Gajim's network heartbeat. Transports can be plugged as idle
+objects and be informed about possible IO
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.IdleObject-class.html" class="summary-name">IdleObject</a><br />
+ Idle listener interface. Listed methods are called by IdleQueue.
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.IdleCommand-class.html" class="summary-name">IdleCommand</a><br />
+ Can be subclassed to execute commands asynchronously by the idlequeue.
+Result will be optained via file descriptor of created pipe
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html" class="summary-name">IdleQueue</a><br />
+ IdleQueue provide three distinct time based features. Uses select.poll()
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.SelectIdleQueue-class.html" class="summary-name">SelectIdleQueue</a><br />
+ Extends IdleQueue to use select.select() for polling
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.GlibIdleQueue-class.html" class="summary-name">GlibIdleQueue</a><br />
+ Extends IdleQueue to use glib io_add_wath, instead of select/poll In another
+'non gui' implementation of Gajim IdleQueue can be used safetly
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue-module.html#get_idlequeue" class="summary-sig-name">get_idlequeue</a>()</span><br />
+ Get an appropriate idlequeue</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#get_idlequeue">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.idlequeue')">logging.getLogger('nbxmpp.idlequeue')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#HAVE_GOBJECT" class="summary-name">HAVE_GOBJECT</a> = <code title="True">True</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#FLAG_WRITE" class="summary-name">FLAG_WRITE</a> = <code title="20">20</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#FLAG_READ" class="summary-name">FLAG_READ</a> = <code title="19">19</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#FLAG_READ_WRITE" class="summary-name">FLAG_READ_WRITE</a> = <code title="23">23</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#FLAG_CLOSE" class="summary-name">FLAG_CLOSE</a> = <code title="16">16</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#PENDING_READ" class="summary-name">PENDING_READ</a> = <code title="3">3</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#PENDING_WRITE" class="summary-name">PENDING_WRITE</a> = <code title="4">4</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#IS_CLOSED" class="summary-name">IS_CLOSED</a> = <code title="16">16</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="os">os</span>,
+ <span title="select">select</span>,
+ <span title="logging">logging</span>,
+ <span title="gobject">gobject</span>,
+ <span title="subprocess.STDOUT">STDOUT</span>,
+ <span title="subprocess.PIPE">PIPE</span>,
+ <span title="subprocess.call">call</span>,
+ <span title="subprocess.CalledProcessError">CalledProcessError</span>,
+ <span title="subprocess.Popen">Popen</span>,
+ <span title="subprocess.check_call">check_call</span>,
+ <span title="subprocess.check_output">check_output</span>,
+ <span title="fcntl">fcntl</span>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="get_idlequeue"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_idlequeue</span>()</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#get_idlequeue">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get an appropriate idlequeue
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.idlequeue')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="HAVE_GOBJECT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">HAVE_GOBJECT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+True
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="FLAG_WRITE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">FLAG_WRITE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+20
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="FLAG_READ"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">FLAG_READ</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+19
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="FLAG_READ_WRITE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">FLAG_READ_WRITE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+23
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="FLAG_CLOSE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">FLAG_CLOSE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+16
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PENDING_READ"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PENDING_READ</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+3
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PENDING_WRITE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PENDING_WRITE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+4
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="IS_CLOSED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">IS_CLOSED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+16
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.idlequeue-pysrc.html b/doc/apidocs/nbxmpp.idlequeue-pysrc.html
new file mode 100644
index 0000000..3bfc63d
--- /dev/null
+++ b/doc/apidocs/nbxmpp.idlequeue-pysrc.html
@@ -0,0 +1,812 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.idlequeue</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;idlequeue
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.idlequeue-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.idlequeue-module.html">Module nbxmpp.idlequeue</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## idlequeue.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2006 Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">Idlequeues are Gajim's network heartbeat. Transports can be plugged as idle</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">objects and be informed about possible IO</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">select</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-0', 'log', 'link-0');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.idlequeue'</tt><tt class="py-op">)</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-comment"># needed for get_idleqeue</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">gobject</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt id="link-1" class="py-name" targets="Variable nbxmpp.idlequeue.HAVE_GOBJECT=nbxmpp.idlequeue-module.html#HAVE_GOBJECT"><a title="nbxmpp.idlequeue.HAVE_GOBJECT" class="py-name" href="#" onclick="return doclink('link-1', 'HAVE_GOBJECT', 'link-1');">HAVE_GOBJECT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt id="link-2" class="py-name"><a title="nbxmpp.idlequeue.HAVE_GOBJECT" class="py-name" href="#" onclick="return doclink('link-2', 'HAVE_GOBJECT', 'link-1');">HAVE_GOBJECT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-comment"># needed for idlecommand</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-3', 'name', 'link-3');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'nt'</tt><tt class="py-op">:</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">subprocess</tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> <tt class="py-comment"># python24 only. we ask this for Windows</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">elif</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-4', 'name', 'link-3');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'posix'</tt><tt class="py-op">:</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">fcntl</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable nbxmpp.idlequeue.FLAG_WRITE=nbxmpp.idlequeue-module.html#FLAG_WRITE"><a title="nbxmpp.idlequeue.FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-5', 'FLAG_WRITE', 'link-5');">FLAG_WRITE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">20</tt> <tt class="py-comment"># write only</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable nbxmpp.idlequeue.FLAG_READ=nbxmpp.idlequeue-module.html#FLAG_READ"><a title="nbxmpp.idlequeue.FLAG_READ" class="py-name" href="#" onclick="return doclink('link-6', 'FLAG_READ', 'link-6');">FLAG_READ</a></tt> <tt class="py-op">=</tt> <tt class="py-number">19</tt> <tt class="py-comment"># read only</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable nbxmpp.idlequeue.FLAG_READ_WRITE=nbxmpp.idlequeue-module.html#FLAG_READ_WRITE"><a title="nbxmpp.idlequeue.FLAG_READ_WRITE" class="py-name" href="#" onclick="return doclink('link-7', 'FLAG_READ_WRITE', 'link-7');">FLAG_READ_WRITE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">23</tt> <tt class="py-comment"># read and write</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable nbxmpp.idlequeue.FLAG_CLOSE=nbxmpp.idlequeue-module.html#FLAG_CLOSE"><a title="nbxmpp.idlequeue.FLAG_CLOSE" class="py-name" href="#" onclick="return doclink('link-8', 'FLAG_CLOSE', 'link-8');">FLAG_CLOSE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">16</tt> <tt class="py-comment"># wait for close</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable nbxmpp.idlequeue.PENDING_READ=nbxmpp.idlequeue-module.html#PENDING_READ"><a title="nbxmpp.idlequeue.PENDING_READ" class="py-name" href="#" onclick="return doclink('link-9', 'PENDING_READ', 'link-9');">PENDING_READ</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> <tt class="py-comment"># waiting read event</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable nbxmpp.idlequeue.PENDING_WRITE=nbxmpp.idlequeue-module.html#PENDING_WRITE"><a title="nbxmpp.idlequeue.PENDING_WRITE" class="py-name" href="#" onclick="return doclink('link-10', 'PENDING_WRITE', 'link-10');">PENDING_WRITE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> <tt class="py-comment"># waiting write event</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable nbxmpp.idlequeue.IS_CLOSED=nbxmpp.idlequeue-module.html#IS_CLOSED"><a title="nbxmpp.idlequeue.IS_CLOSED" class="py-name" href="#" onclick="return doclink('link-11', 'IS_CLOSED', 'link-11');">IS_CLOSED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">16</tt> <tt class="py-comment"># channel closed</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> </tt>
+<a name="get_idlequeue"></a><div id="get_idlequeue-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="get_idlequeue-toggle" onclick="return toggle('get_idlequeue');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue-module.html#get_idlequeue">get_idlequeue</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_idlequeue-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_idlequeue-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> Get an appropriate idlequeue</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-12', 'name', 'link-3');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'nt'</tt><tt class="py-op">:</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-comment"># gobject.io_add_watch does not work on windows</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name" targets="Class nbxmpp.idlequeue.SelectIdleQueue=nbxmpp.idlequeue.SelectIdleQueue-class.html"><a title="nbxmpp.idlequeue.SelectIdleQueue" class="py-name" href="#" onclick="return doclink('link-13', 'SelectIdleQueue', 'link-13');">SelectIdleQueue</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-14" class="py-name"><a title="nbxmpp.idlequeue.HAVE_GOBJECT" class="py-name" href="#" onclick="return doclink('link-14', 'HAVE_GOBJECT', 'link-1');">HAVE_GOBJECT</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-comment"># Gajim's default Idlequeue</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-15" class="py-name" targets="Class nbxmpp.idlequeue.GlibIdleQueue=nbxmpp.idlequeue.GlibIdleQueue-class.html"><a title="nbxmpp.idlequeue.GlibIdleQueue" class="py-name" href="#" onclick="return doclink('link-15', 'GlibIdleQueue', 'link-15');">GlibIdleQueue</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-comment"># GUI less implementation</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-16" class="py-name"><a title="nbxmpp.idlequeue.SelectIdleQueue" class="py-name" href="#" onclick="return doclink('link-16', 'SelectIdleQueue', 'link-13');">SelectIdleQueue</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt>
+<a name="IdleObject"></a><div id="IdleObject-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="IdleObject-toggle" onclick="return toggle('IdleObject');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a><tt class="py-op">:</tt> </tt>
+</div><div id="IdleObject-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="IdleObject-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> Idle listener interface. Listed methods are called by IdleQueue.</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> </tt>
+<a name="IdleObject.__init__"></a><div id="IdleObject.__init__-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="IdleObject.__init__-toggle" onclick="return toggle('IdleObject.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleObject-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleObject.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleObject.__init__-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> <tt class="py-comment">#: filedescriptor, must be unique for each IdleObject</tt> </tt>
+</div><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> </tt>
+<a name="IdleObject.pollend"></a><div id="IdleObject.pollend-def"><a name="L73"></a><tt class="py-lineno"> 73</tt> <a class="py-toggle" href="#" id="IdleObject.pollend-toggle" onclick="return toggle('IdleObject.pollend');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleObject-class.html#pollend">pollend</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleObject.pollend-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleObject.pollend-expanded"><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> Called on stream failure</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt>
+<a name="IdleObject.pollin"></a><div id="IdleObject.pollin-def"><a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="IdleObject.pollin-toggle" onclick="return toggle('IdleObject.pollin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleObject-class.html#pollin">pollin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleObject.pollin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleObject.pollin-expanded"><a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> Called on new read event</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
+<a name="IdleObject.pollout"></a><div id="IdleObject.pollout-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="IdleObject.pollout-toggle" onclick="return toggle('IdleObject.pollout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleObject-class.html#pollout">pollout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleObject.pollout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleObject.pollout-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> Called on new write event (connect in sockets is a pollout)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt>
+<a name="IdleObject.read_timeout"></a><div id="IdleObject.read_timeout-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="IdleObject.read_timeout-toggle" onclick="return toggle('IdleObject.read_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleObject-class.html#read_timeout">read_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleObject.read_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleObject.read_timeout-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> Called when timeout happened</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand"></a><div id="IdleCommand-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="IdleCommand-toggle" onclick="return toggle('IdleCommand');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html">IdleCommand</a><tt class="py-op">(</tt><tt class="py-base-class">IdleObject</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="IdleCommand-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> Can be subclassed to execute commands asynchronously by the idlequeue.</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> Result will be optained via file descriptor of created pipe</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.__init__"></a><div id="IdleCommand.__init__-def"><a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="IdleCommand.__init__-toggle" onclick="return toggle('IdleCommand.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">on_result</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.__init__-expanded"><a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt id="link-17" class="py-name" targets="Class nbxmpp.idlequeue.IdleObject=nbxmpp.idlequeue.IdleObject-class.html"><a title="nbxmpp.idlequeue.IdleObject" class="py-name" href="#" onclick="return doclink('link-17', 'IdleObject', 'link-17');">IdleObject</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-18', '__init__', 'link-18');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-comment"># how long (sec.) to wait for result ( 0 - forever )</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-comment"># it is a class var, instead of a constant and we can override it.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">commandtimeout</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-comment"># when we have some kind of result (valid, ot not) we call this handler</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">on_result</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-comment"># if it is True, we can safetely execute the command</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canexecute</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Module nbxmpp.idlequeue=nbxmpp.idlequeue-module.html"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-19', 'idlequeue', 'link-19');">idlequeue</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt><tt class="py-string">''</tt> </tt>
+</div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.set_idlequeue"></a><div id="IdleCommand.set_idlequeue-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="IdleCommand.set_idlequeue-toggle" onclick="return toggle('IdleCommand.set_idlequeue');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#set_idlequeue">set_idlequeue</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">idlequeue</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.set_idlequeue-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.set_idlequeue-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-20', 'idlequeue', 'link-19');">idlequeue</a></tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-21', 'idlequeue', 'link-19');">idlequeue</a></tt> </tt>
+</div><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand._return_result"></a><div id="IdleCommand._return_result-def"><a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="IdleCommand._return_result-toggle" onclick="return toggle('IdleCommand._return_result');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#_return_result">_return_result</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand._return_result-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand._return_result-expanded"><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result_handler</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result_handler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand._compose_command_args"></a><div id="IdleCommand._compose_command_args-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="IdleCommand._compose_command_args-toggle" onclick="return toggle('IdleCommand._compose_command_args');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_args">_compose_command_args</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand._compose_command_args-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand._compose_command_args-expanded"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-string">'echo'</tt><tt class="py-op">,</tt> <tt class="py-string">'da'</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand._compose_command_line"></a><div id="IdleCommand._compose_command_line-def"><a name="L127"></a><tt class="py-lineno">127</tt> <a class="py-toggle" href="#" id="IdleCommand._compose_command_line-toggle" onclick="return toggle('IdleCommand._compose_command_line');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_line">_compose_command_line</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand._compose_command_line-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand._compose_command_line-expanded"><a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> Return one line representation of command and its arguments</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">left</tt><tt class="py-op">,</tt> <tt class="py-name">right</tt><tt class="py-op">:</tt> <tt class="py-name">left</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">right</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand._compose_command_args()=nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_args"><a title="nbxmpp.idlequeue.IdleCommand._compose_command_args" class="py-name" href="#" onclick="return doclink('link-22', '_compose_command_args', 'link-22');">_compose_command_args</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.wait_child"></a><div id="IdleCommand.wait_child-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="IdleCommand.wait_child-toggle" onclick="return toggle('IdleCommand.wait_child');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#wait_child">wait_child</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.wait_child-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.wait_child-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">poll</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-comment"># result timeout</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endtime</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-23', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.current_time()=nbxmpp.idlequeue.IdleQueue-class.html#current_time"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-24', 'current_time', 'link-24');">current_time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand._return_result()=nbxmpp.idlequeue.IdleCommand-class.html#_return_result"><a title="nbxmpp.idlequeue.IdleCommand._return_result" class="py-name" href="#" onclick="return doclink('link-25', '_return_result', 'link-25');">_return_result</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-comment"># child is still active, continue to wait</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-26', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.set_alarm()=nbxmpp.idlequeue.IdleQueue-class.html#set_alarm"><a title="nbxmpp.idlequeue.IdleQueue.set_alarm" class="py-name" href="#" onclick="return doclink('link-27', 'set_alarm', 'link-27');">set_alarm</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.wait_child()=nbxmpp.idlequeue.IdleCommand-class.html#wait_child"><a title="nbxmpp.idlequeue.IdleCommand.wait_child" class="py-name" href="#" onclick="return doclink('link-28', 'wait_child', 'link-28');">wait_child</a></tt><tt class="py-op">,</tt> <tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-comment"># child has quit</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand._return_result" class="py-name" href="#" onclick="return doclink('link-29', '_return_result', 'link-25');">_return_result</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.start"></a><div id="IdleCommand.start-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="IdleCommand.start-toggle" onclick="return toggle('IdleCommand.start');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#start">start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.start-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.start-expanded"><a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canexecute</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand._return_result" class="py-name" href="#" onclick="return doclink('link-30', '_return_result', 'link-25');">_return_result</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-31', 'name', 'link-3');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'nt'</tt><tt class="py-op">:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand._start_nt()=nbxmpp.idlequeue.IdleCommand-class.html#_start_nt"><a title="nbxmpp.idlequeue.IdleCommand._start_nt" class="py-name" href="#" onclick="return doclink('link-32', '_start_nt', 'link-32');">_start_nt</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-33', 'name', 'link-3');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'posix'</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand._start_posix()=nbxmpp.idlequeue.IdleCommand-class.html#_start_posix"><a title="nbxmpp.idlequeue.IdleCommand._start_posix" class="py-name" href="#" onclick="return doclink('link-34', '_start_posix', 'link-34');">_start_posix</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand._start_nt"></a><div id="IdleCommand._start_nt-def"><a name="L161"></a><tt class="py-lineno">161</tt> <a class="py-toggle" href="#" id="IdleCommand._start_nt-toggle" onclick="return toggle('IdleCommand._start_nt');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#_start_nt">_start_nt</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand._start_nt-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand._start_nt-expanded"><a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-comment"># if program is started from noninteraactive shells stdin is closed and</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-comment"># cannot be forwarded, so we have to keep it open</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt> <tt class="py-op">=</tt> <tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand._compose_command_args" class="py-name" href="#" onclick="return doclink('link-35', '_compose_command_args', 'link-22');">_compose_command_args</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">PIPE</tt><tt class="py-op">,</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">bufsize</tt> <tt class="py-op">=</tt> <tt class="py-number">1024</tt><tt class="py-op">,</tt> <tt class="py-name">shell</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">STDOUT</tt><tt class="py-op">,</tt> <tt class="py-name">stdin</tt> <tt class="py-op">=</tt> <tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">commandtimeout</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">endtime</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-36', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-37', 'current_time', 'link-24');">current_time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">commandtimeout</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-38', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.set_alarm" class="py-name" href="#" onclick="return doclink('link-39', 'set_alarm', 'link-27');">set_alarm</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.wait_child" class="py-name" href="#" onclick="return doclink('link-40', 'wait_child', 'link-28');">wait_child</a></tt><tt class="py-op">,</tt> <tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand._start_posix"></a><div id="IdleCommand._start_posix-def"><a name="L170"></a><tt class="py-lineno">170</tt> <a class="py-toggle" href="#" id="IdleCommand._start_posix-toggle" onclick="return toggle('IdleCommand._start_posix');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#_start_posix">_start_posix</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand._start_posix-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand._start_posix-expanded"><a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">popen</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand._compose_command_line()=nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_line"><a title="nbxmpp.idlequeue.IdleCommand._compose_command_line" class="py-name" href="#" onclick="return doclink('link-41', '_compose_command_line', 'link-41');">_compose_command_line</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">fcntl</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">F_SETFL</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_NONBLOCK</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-42', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.plug_idle()=nbxmpp.idlequeue.IdleQueue-class.html#plug_idle"><a title="nbxmpp.idlequeue.IdleQueue.plug_idle" class="py-name" href="#" onclick="return doclink('link-43', 'plug_idle', 'link-43');">plug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">commandtimeout</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-44', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.set_read_timeout()=nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout"><a title="nbxmpp.idlequeue.IdleQueue.set_read_timeout" class="py-name" href="#" onclick="return doclink('link-45', 'set_read_timeout', 'link-45');">set_read_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">commandtimeout</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.end"></a><div id="IdleCommand.end-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="IdleCommand.end-toggle" onclick="return toggle('IdleCommand.end');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#end">end</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.end-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.end-expanded"><a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-46', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.unplug_idle()=nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle"><a title="nbxmpp.idlequeue.IdleQueue.unplug_idle" class="py-name" href="#" onclick="return doclink('link-47', 'unplug_idle', 'link-47');">unplug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.pollend"></a><div id="IdleCommand.pollend-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="IdleCommand.pollend-toggle" onclick="return toggle('IdleCommand.pollend');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#pollend">pollend</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.pollend-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.pollend-expanded"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-48', 'idlequeue', 'link-19');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.remove_timeout()=nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.remove_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.remove_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-49', 'remove_timeout', 'link-49');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.end()=nbxmpp.idlequeue.IdleCommand-class.html#end"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-50', 'end', 'link-50');">end</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand._return_result" class="py-name" href="#" onclick="return doclink('link-51', '_return_result', 'link-25');">_return_result</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.pollin"></a><div id="IdleCommand.pollin-def"><a name="L190"></a><tt class="py-lineno">190</tt> <a class="py-toggle" href="#" id="IdleCommand.pollin-toggle" onclick="return toggle('IdleCommand.pollin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#pollin">pollin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.pollin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.pollin-expanded"><a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pipe</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">res</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.pollend()=nbxmpp.idlequeue.IdleCommand-class.html#pollend,Method nbxmpp.idlequeue.IdleObject.pollend()=nbxmpp.idlequeue.IdleObject-class.html#pollend,Method nbxmpp.transports_nb.NonBlockingTCP.pollend()=nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend"><a title="nbxmpp.idlequeue.IdleCommand.pollend
+nbxmpp.idlequeue.IdleObject.pollend
+nbxmpp.transports_nb.NonBlockingTCP.pollend" class="py-name" href="#" onclick="return doclink('link-52', 'pollend', 'link-52');">pollend</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">+=</tt> <tt class="py-name">res</tt> </tt>
+</div><a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> </tt>
+<a name="IdleCommand.read_timeout"></a><div id="IdleCommand.read_timeout-def"><a name="L200"></a><tt class="py-lineno">200</tt> <a class="py-toggle" href="#" id="IdleCommand.read_timeout-toggle" onclick="return toggle('IdleCommand.read_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleCommand-class.html#read_timeout">read_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleCommand.read_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleCommand.read_timeout-expanded"><a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-53', 'end', 'link-50');">end</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand._return_result" class="py-name" href="#" onclick="return doclink('link-54', '_return_result', 'link-25');">_return_result</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue"></a><div id="IdleQueue-def"><a name="L205"></a><tt class="py-lineno">205</tt> <a class="py-toggle" href="#" id="IdleQueue-toggle" onclick="return toggle('IdleQueue');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="IdleQueue-expanded"><a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"> IdleQueue provide three distinct time based features. Uses select.poll()</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-docstring"> 1. Alarm timeout: Execute a callback after foo seconds</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-docstring"> 2. Timeout event: Call read_timeout() of an plugged object if a timeout</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"> has been set, but not removed in time.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> 3. Check file descriptor of plugged objects for read, write and error</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"> events</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-comment"># (timeout, boolean)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-comment"># Boolean is True if timeout is specified in seconds, False means miliseconds</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt id="link-55" class="py-name" targets="Variable nbxmpp.idlequeue.GlibIdleQueue.PROCESS_TIMEOUT=nbxmpp.idlequeue.GlibIdleQueue-class.html#PROCESS_TIMEOUT,Variable nbxmpp.idlequeue.IdleQueue.PROCESS_TIMEOUT=nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT"><a title="nbxmpp.idlequeue.GlibIdleQueue.PROCESS_TIMEOUT
+nbxmpp.idlequeue.IdleQueue.PROCESS_TIMEOUT" class="py-name" href="#" onclick="return doclink('link-55', 'PROCESS_TIMEOUT', 'link-55');">PROCESS_TIMEOUT</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">100</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.__init__"></a><div id="IdleQueue.__init__-def"><a name="L221"></a><tt class="py-lineno">221</tt> <a class="py-toggle" href="#" id="IdleQueue.__init__-toggle" onclick="return toggle('IdleQueue.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.__init__-expanded"><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-comment"># when there is a timeout it executes obj.read_timeout()</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-comment"># timeout is not removed automatically!</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-comment"># {fd1: {timeout1: func1, timeout2: func2}}</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-comment"># timout are unique (timeout1 must be != timeout2)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-comment"># If func1 is None, read_time function is called</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-comment"># cb, which are executed after XX sec., alarms are removed automatically</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method nbxmpp.idlequeue.GlibIdleQueue._init_idle()=nbxmpp.idlequeue.GlibIdleQueue-class.html#_init_idle,Method nbxmpp.idlequeue.IdleQueue._init_idle()=nbxmpp.idlequeue.IdleQueue-class.html#_init_idle,Method nbxmpp.idlequeue.SelectIdleQueue._init_idle()=nbxmpp.idlequeue.SelectIdleQueue-class.html#_init_idle"><a title="nbxmpp.idlequeue.GlibIdleQueue._init_idle
+nbxmpp.idlequeue.IdleQueue._init_idle
+nbxmpp.idlequeue.SelectIdleQueue._init_idle" class="py-name" href="#" onclick="return doclink('link-56', '_init_idle', 'link-56');">_init_idle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue._init_idle"></a><div id="IdleQueue._init_idle-def"><a name="L235"></a><tt class="py-lineno">235</tt> <a class="py-toggle" href="#" id="IdleQueue._init_idle-toggle" onclick="return toggle('IdleQueue._init_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#_init_idle">_init_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue._init_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue._init_idle-expanded"><a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> Hook method for subclassed. Will be called by __init__</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">selector</tt> <tt class="py-op">=</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">poll</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.set_alarm"></a><div id="IdleQueue.set_alarm-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="IdleQueue.set_alarm-toggle" onclick="return toggle('IdleQueue.set_alarm');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm">set_alarm</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">alarm_cb</tt><tt class="py-op">,</tt> <tt class="py-param">seconds</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.set_alarm-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.set_alarm-expanded"><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> Set up a new alarm. alarm_cb will be called after specified seconds.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">alarm_time</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-57', 'current_time', 'link-24');">current_time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">seconds</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-comment"># almost impossible, but in case we have another alarm_cb at this time</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">alarm_time</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">alarm_cb</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">alarm_cb</tt><tt class="py-op">]</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">alarm_time</tt> </tt>
+</div><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.remove_alarm"></a><div id="IdleQueue.remove_alarm-def"><a name="L253"></a><tt class="py-lineno">253</tt> <a class="py-toggle" href="#" id="IdleQueue.remove_alarm-toggle" onclick="return toggle('IdleQueue.remove_alarm');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm">remove_alarm</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">alarm_cb</tt><tt class="py-op">,</tt> <tt class="py-param">alarm_time</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.remove_alarm-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.remove_alarm-expanded"><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> Remove alarm callback alarm_cb scheduled on alarm_time. Returns True if</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> it was removed sucessfully, otherwise False</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">alarm_time</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-comment"># let's not modify the list inside the loop</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">alarm_cb</tt><tt class="py-op">:</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.remove_timeout"></a><div id="IdleQueue.remove_timeout-def"><a name="L273"></a><tt class="py-lineno">273</tt> <a class="py-toggle" href="#" id="IdleQueue.remove_timeout-toggle" onclick="return toggle('IdleQueue.remove_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout">remove_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.remove_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.remove_timeout-expanded"><a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> Remove the read timeout</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt id="link-58" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-58', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'read timeout removed for fd %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">timeout</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.set_read_timeout"></a><div id="IdleQueue.set_read_timeout-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="IdleQueue.set_read_timeout-toggle" onclick="return toggle('IdleQueue.set_read_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout">set_read_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">seconds</tt><tt class="py-op">,</tt> <tt class="py-param">func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.set_read_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.set_read_timeout-expanded"><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt class="py-docstring"> Seta a new timeout. If it is not removed after specified seconds,</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> func or obj.read_timeout() will be called</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> A filedescriptor fd can have several timeouts.</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">log_txt</tt> <tt class="py-op">=</tt> <tt class="py-string">'read timeout set for fd %s on %s seconds'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">seconds</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">func</tt><tt class="py-op">:</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">log_txt</tt> <tt class="py-op">+=</tt> <tt class="py-string">' with function '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-59" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-59', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-name">log_txt</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-60', 'current_time', 'link-24');">current_time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">seconds</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">timeout</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">func</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-name">timeout</tt><tt class="py-op">:</tt> <tt class="py-name">func</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue._check_time_events"></a><div id="IdleQueue._check_time_events-def"><a name="L304"></a><tt class="py-lineno">304</tt> <a class="py-toggle" href="#" id="IdleQueue._check_time_events-toggle" onclick="return toggle('IdleQueue._check_time_events');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events">_check_time_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue._check_time_events-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue._check_time_events-expanded"><a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"><tt class="py-docstring"> Execute and remove alarm callbacks and execute func() or read_timeout()</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"><tt class="py-docstring"> for plugged objects if specified time has ellapsed</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt id="link-61" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-61', 'current_time', 'link-24');">current_time</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-62', 'current_time', 'link-24');">current_time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">timeouts</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_timeouts</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-63', 'remove_timeout', 'link-49');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">timeout</tt><tt class="py-op">,</tt> <tt class="py-name">func</tt> <tt class="py-keyword">in</tt> <tt class="py-name">timeouts</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">&gt;</tt> <tt id="link-64" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-64', 'current_time', 'link-24');">current_time</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">func</tt><tt class="py-op">:</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt id="link-65" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-65', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Calling %s for fd %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">fd</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-name">func</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt id="link-66" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-66', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Calling read_timeout for fd %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.read_timeout()=nbxmpp.idlequeue.IdleCommand-class.html#read_timeout,Method nbxmpp.idlequeue.IdleObject.read_timeout()=nbxmpp.idlequeue.IdleObject-class.html#read_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.read_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.read_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout"><a title="nbxmpp.idlequeue.IdleCommand.read_timeout
+nbxmpp.idlequeue.IdleObject.read_timeout
+nbxmpp.transports_nb.NonBlockingTCP.read_timeout
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout" class="py-name" href="#" onclick="return doclink('link-67', 'read_timeout', 'link-67');">read_timeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-68', 'remove_timeout', 'link-49');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">times</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.keys()=nbxmpp.roster_nb.NonBlockingRoster-class.html#keys"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-69', 'keys', 'link-69');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">alarm_time</tt> <tt class="py-keyword">in</tt> <tt class="py-name">times</tt><tt class="py-op">:</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">alarm_time</tt> <tt class="py-op">&gt;</tt> <tt id="link-70" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-70', 'current_time', 'link-24');">current_time</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">alarm_time</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">:</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">alarm_time</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">:</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alarms</tt><tt class="py-op">[</tt><tt class="py-name">alarm_time</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.plug_idle"></a><div id="IdleQueue.plug_idle-def"><a name="L336"></a><tt class="py-lineno">336</tt> <a class="py-toggle" href="#" id="IdleQueue.plug_idle-toggle" onclick="return toggle('IdleQueue.plug_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle">plug_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">,</tt> <tt class="py-param">writable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">readable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.plug_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.plug_idle-expanded"><a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"><tt class="py-docstring"> Plug an IdleObject into idlequeue. Filedescriptor fd must be set</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"><tt class="py-docstring"> :param obj: the IdleObject</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-docstring"> :param writable: True if obj has data to sent</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"><tt class="py-docstring"> :param readable: True if obj expects data to be reiceived</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.unplug_idle" class="py-name" href="#" onclick="return doclink('link-71', 'unplug_idle', 'link-47');">unplug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">[</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">writable</tt><tt class="py-op">:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">readable</tt><tt class="py-op">:</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="nbxmpp.idlequeue.FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-72', 'FLAG_WRITE', 'link-5');">FLAG_WRITE</a></tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="nbxmpp.idlequeue.FLAG_READ_WRITE" class="py-name" href="#" onclick="return doclink('link-73', 'FLAG_READ_WRITE', 'link-7');">FLAG_READ_WRITE</a></tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">readable</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="nbxmpp.idlequeue.FLAG_READ" class="py-name" href="#" onclick="return doclink('link-74', 'FLAG_READ', 'link-6');">FLAG_READ</a></tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-comment"># when we paused a FT, we expect only a close event</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="nbxmpp.idlequeue.FLAG_CLOSE" class="py-name" href="#" onclick="return doclink('link-75', 'FLAG_CLOSE', 'link-8');">FLAG_CLOSE</a></tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method nbxmpp.idlequeue.GlibIdleQueue._add_idle()=nbxmpp.idlequeue.GlibIdleQueue-class.html#_add_idle,Method nbxmpp.idlequeue.IdleQueue._add_idle()=nbxmpp.idlequeue.IdleQueue-class.html#_add_idle,Method nbxmpp.idlequeue.SelectIdleQueue._add_idle()=nbxmpp.idlequeue.SelectIdleQueue-class.html#_add_idle"><a title="nbxmpp.idlequeue.GlibIdleQueue._add_idle
+nbxmpp.idlequeue.IdleQueue._add_idle
+nbxmpp.idlequeue.SelectIdleQueue._add_idle" class="py-name" href="#" onclick="return doclink('link-76', '_add_idle', 'link-76');">_add_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue._add_idle"></a><div id="IdleQueue._add_idle-def"><a name="L362"></a><tt class="py-lineno">362</tt> <a class="py-toggle" href="#" id="IdleQueue._add_idle-toggle" onclick="return toggle('IdleQueue._add_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#_add_idle">_add_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue._add_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue._add_idle-expanded"><a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> Hook method for subclasses, called by plug_idle</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">selector</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Function nbxmpp.features_nb.register()=nbxmpp.features_nb-module.html#register"><a title="nbxmpp.features_nb.register" class="py-name" href="#" onclick="return doclink('link-77', 'register', 'link-77');">register</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.unplug_idle"></a><div id="IdleQueue.unplug_idle-def"><a name="L368"></a><tt class="py-lineno">368</tt> <a class="py-toggle" href="#" id="IdleQueue.unplug_idle-toggle" onclick="return toggle('IdleQueue.unplug_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle">unplug_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.unplug_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.unplug_idle-expanded"><a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"><tt class="py-docstring"> Remove plugged IdleObject, specified by filedescriptor fd</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method nbxmpp.idlequeue.GlibIdleQueue._remove_idle()=nbxmpp.idlequeue.GlibIdleQueue-class.html#_remove_idle,Method nbxmpp.idlequeue.IdleQueue._remove_idle()=nbxmpp.idlequeue.IdleQueue-class.html#_remove_idle,Method nbxmpp.idlequeue.SelectIdleQueue._remove_idle()=nbxmpp.idlequeue.SelectIdleQueue-class.html#_remove_idle"><a title="nbxmpp.idlequeue.GlibIdleQueue._remove_idle
+nbxmpp.idlequeue.IdleQueue._remove_idle
+nbxmpp.idlequeue.SelectIdleQueue._remove_idle" class="py-name" href="#" onclick="return doclink('link-78', '_remove_idle', 'link-78');">_remove_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.current_time"></a><div id="IdleQueue.current_time-def"><a name="L376"></a><tt class="py-lineno">376</tt> <a class="py-toggle" href="#" id="IdleQueue.current_time-toggle" onclick="return toggle('IdleQueue.current_time');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#current_time">current_time</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.current_time-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.current_time-expanded"><a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">time</tt> <tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue._remove_idle"></a><div id="IdleQueue._remove_idle-def"><a name="L380"></a><tt class="py-lineno">380</tt> <a class="py-toggle" href="#" id="IdleQueue._remove_idle-toggle" onclick="return toggle('IdleQueue._remove_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#_remove_idle">_remove_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue._remove_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue._remove_idle-expanded"><a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"> Hook method for subclassed, called by unplug_idle</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">selector</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Function nbxmpp.features_nb.unregister()=nbxmpp.features_nb-module.html#unregister"><a title="nbxmpp.features_nb.unregister" class="py-name" href="#" onclick="return doclink('link-79', 'unregister', 'link-79');">unregister</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue._process_events"></a><div id="IdleQueue._process_events-def"><a name="L386"></a><tt class="py-lineno">386</tt> <a class="py-toggle" href="#" id="IdleQueue._process_events-toggle" onclick="return toggle('IdleQueue._process_events');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#_process_events">_process_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue._process_events-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue._process_events-expanded"><a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method nbxmpp.bosh.KeyStack.get()=nbxmpp.bosh.KeyStack-class.html#get"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-80', 'get', 'link-80');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.unplug_idle" class="py-name" href="#" onclick="return doclink('link-81', 'unplug_idle', 'link-47');">unplug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-name">read_write</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flags</tt> <tt class="py-op">&amp;</tt> <tt id="link-82" class="py-name"><a title="nbxmpp.idlequeue.PENDING_READ" class="py-name" href="#" onclick="return doclink('link-82', 'PENDING_READ', 'link-9');">PENDING_READ</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-comment">#print 'waiting read on %d, flags are %d' % (fd, flags)</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.pollin()=nbxmpp.idlequeue.IdleCommand-class.html#pollin,Method nbxmpp.idlequeue.IdleObject.pollin()=nbxmpp.idlequeue.IdleObject-class.html#pollin,Method nbxmpp.transports_nb.NonBlockingTCP.pollin()=nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin"><a title="nbxmpp.idlequeue.IdleCommand.pollin
+nbxmpp.idlequeue.IdleObject.pollin
+nbxmpp.transports_nb.NonBlockingTCP.pollin" class="py-name" href="#" onclick="return doclink('link-83', 'pollin', 'link-83');">pollin</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">read_write</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">flags</tt> <tt class="py-op">&amp;</tt> <tt id="link-84" class="py-name"><a title="nbxmpp.idlequeue.PENDING_WRITE" class="py-name" href="#" onclick="return doclink('link-84', 'PENDING_WRITE', 'link-10');">PENDING_WRITE</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">flags</tt> <tt class="py-op">&amp;</tt> <tt id="link-85" class="py-name"><a title="nbxmpp.idlequeue.IS_CLOSED" class="py-name" href="#" onclick="return doclink('link-85', 'IS_CLOSED', 'link-11');">IS_CLOSED</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method nbxmpp.idlequeue.IdleObject.pollout()=nbxmpp.idlequeue.IdleObject-class.html#pollout,Method nbxmpp.transports_nb.NonBlockingTCP.pollout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout"><a title="nbxmpp.idlequeue.IdleObject.pollout
+nbxmpp.transports_nb.NonBlockingTCP.pollout" class="py-name" href="#" onclick="return doclink('link-86', 'pollout', 'link-86');">pollout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">read_write</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flags</tt> <tt class="py-op">&amp;</tt> <tt id="link-87" class="py-name"><a title="nbxmpp.idlequeue.IS_CLOSED" class="py-name" href="#" onclick="return doclink('link-87', 'IS_CLOSED', 'link-11');">IS_CLOSED</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-comment"># io error, don't expect more events</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-88', 'remove_timeout', 'link-49');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.unplug_idle" class="py-name" href="#" onclick="return doclink('link-89', 'unplug_idle', 'link-47');">unplug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.pollend
+nbxmpp.idlequeue.IdleObject.pollend
+nbxmpp.transports_nb.NonBlockingTCP.pollend" class="py-name" href="#" onclick="return doclink('link-90', 'pollend', 'link-52');">pollend</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">read_write</tt><tt class="py-op">:</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> </tt>
+<a name="IdleQueue.process"></a><div id="IdleQueue.process-def"><a name="L413"></a><tt class="py-lineno">413</tt> <a class="py-toggle" href="#" id="IdleQueue.process-toggle" onclick="return toggle('IdleQueue.process');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.IdleQueue-class.html#process">process</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IdleQueue.process-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IdleQueue.process-expanded"><a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"><tt class="py-docstring"> Process idlequeue. Check for any pending timeout or alarm events. Call</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"><tt class="py-docstring"> IdleObjects on possible and requested read, write and error events on</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"> their file descriptors</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"> Call this in regular intervals.</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-comment"># check for timeouts/alert also when there are no active fds</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue._check_time_events()=nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events"><a title="nbxmpp.idlequeue.IdleQueue._check_time_events" class="py-name" href="#" onclick="return doclink('link-91', '_check_time_events', 'link-91');">_check_time_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">waiting_descriptors</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">selector</tt><tt class="py-op">.</tt><tt class="py-name">poll</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">waiting_descriptors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> <tt class="py-comment"># interrupt</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt> <tt class="py-keyword">in</tt> <tt class="py-name">waiting_descriptors</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method nbxmpp.idlequeue.GlibIdleQueue._process_events()=nbxmpp.idlequeue.GlibIdleQueue-class.html#_process_events,Method nbxmpp.idlequeue.IdleQueue._process_events()=nbxmpp.idlequeue.IdleQueue-class.html#_process_events"><a title="nbxmpp.idlequeue.GlibIdleQueue._process_events
+nbxmpp.idlequeue.IdleQueue._process_events" class="py-name" href="#" onclick="return doclink('link-92', '_process_events', 'link-92');">_process_events</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue._check_time_events" class="py-name" href="#" onclick="return doclink('link-93', '_check_time_events', 'link-91');">_check_time_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> </tt>
+<a name="SelectIdleQueue"></a><div id="SelectIdleQueue-def"><a name="L437"></a><tt class="py-lineno">437</tt> <a class="py-toggle" href="#" id="SelectIdleQueue-toggle" onclick="return toggle('SelectIdleQueue');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.idlequeue.SelectIdleQueue-class.html">SelectIdleQueue</a><tt class="py-op">(</tt><tt class="py-base-class">IdleQueue</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SelectIdleQueue-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SelectIdleQueue-expanded"><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"><tt class="py-docstring"> Extends IdleQueue to use select.select() for polling</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"><tt class="py-docstring"> This class exisists for the sake of gtk2.8 on windows, which doesn't seem to</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"><tt class="py-docstring"> support io_add_watch properly (yet)</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> </tt>
+<a name="SelectIdleQueue._init_idle"></a><div id="SelectIdleQueue._init_idle-def"><a name="L445"></a><tt class="py-lineno">445</tt> <a class="py-toggle" href="#" id="SelectIdleQueue._init_idle-toggle" onclick="return toggle('SelectIdleQueue._init_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_init_idle">_init_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SelectIdleQueue._init_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SelectIdleQueue._init_idle-expanded"><a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"><tt class="py-docstring"> Create a dict, which maps file/pipe/sock descriptor to glib event id</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_fds</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">write_fds</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_fds</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> </tt>
+<a name="SelectIdleQueue._add_idle"></a><div id="SelectIdleQueue._add_idle-def"><a name="L453"></a><tt class="py-lineno">453</tt> <a class="py-toggle" href="#" id="SelectIdleQueue._add_idle-toggle" onclick="return toggle('SelectIdleQueue._add_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_add_idle">_add_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SelectIdleQueue._add_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SelectIdleQueue._add_idle-expanded"><a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"><tt class="py-docstring"> This method is called when we plug a new idle object. Remove descriptor</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"><tt class="py-docstring"> to read/write/error lists, according flags</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flags</tt> <tt class="py-op">&amp;</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_fds</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flags</tt> <tt class="py-op">&amp;</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">write_fds</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_fds</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt> </tt>
+</div><a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> </tt>
+<a name="SelectIdleQueue._remove_idle"></a><div id="SelectIdleQueue._remove_idle-def"><a name="L464"></a><tt class="py-lineno">464</tt> <a class="py-toggle" href="#" id="SelectIdleQueue._remove_idle-toggle" onclick="return toggle('SelectIdleQueue._remove_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_remove_idle">_remove_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SelectIdleQueue._remove_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SelectIdleQueue._remove_idle-expanded"><a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"><tt class="py-docstring"> This method is called when we unplug a new idle object. Remove descriptor</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"><tt class="py-docstring"> from read/write/error lists</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_fds</tt><tt class="py-op">:</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_fds</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">write_fds</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">write_fds</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_fds</tt><tt class="py-op">:</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_fds</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> </tt>
+<a name="SelectIdleQueue.process"></a><div id="SelectIdleQueue.process-def"><a name="L476"></a><tt class="py-lineno">476</tt> <a class="py-toggle" href="#" id="SelectIdleQueue.process-toggle" onclick="return toggle('SelectIdleQueue.process');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.SelectIdleQueue-class.html#process">process</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SelectIdleQueue.process-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SelectIdleQueue.process-expanded"><a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">write_fds</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_fds</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue._check_time_events" class="py-name" href="#" onclick="return doclink('link-94', '_check_time_events', 'link-91');">_check_time_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-name">waiting_descriptors</tt> <tt class="py-op">=</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">select</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_fds</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-95', 'keys', 'link-69');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">write_fds</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-96', 'keys', 'link-69');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_fds</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-97', 'keys', 'link-69');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">waiting_descriptors</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> <tt class="py-comment"># interrupt</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">waiting_descriptors</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-98', 'get', 'link-80');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">q</tt><tt class="py-op">:</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-name">q</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.pollin
+nbxmpp.idlequeue.IdleObject.pollin
+nbxmpp.transports_nb.NonBlockingTCP.pollin" class="py-name" href="#" onclick="return doclink('link-99', 'pollin', 'link-83');">pollin</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">waiting_descriptors</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-100', 'get', 'link-80');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">q</tt><tt class="py-op">:</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-name">q</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="nbxmpp.idlequeue.IdleObject.pollout
+nbxmpp.transports_nb.NonBlockingTCP.pollout" class="py-name" href="#" onclick="return doclink('link-101', 'pollout', 'link-86');">pollout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">waiting_descriptors</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">queue</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-102', 'get', 'link-80');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">q</tt><tt class="py-op">:</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-name">q</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.pollend
+nbxmpp.idlequeue.IdleObject.pollend
+nbxmpp.transports_nb.NonBlockingTCP.pollend" class="py-name" href="#" onclick="return doclink('link-103', 'pollend', 'link-52');">pollend</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue._check_time_events" class="py-name" href="#" onclick="return doclink('link-104', '_check_time_events', 'link-91');">_check_time_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> </tt>
+<a name="GlibIdleQueue"></a><div id="GlibIdleQueue-def"><a name="L503"></a><tt class="py-lineno">503</tt> <a class="py-toggle" href="#" id="GlibIdleQueue-toggle" onclick="return toggle('GlibIdleQueue');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.idlequeue.GlibIdleQueue-class.html">GlibIdleQueue</a><tt class="py-op">(</tt><tt class="py-base-class">IdleQueue</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GlibIdleQueue-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GlibIdleQueue-expanded"><a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"><tt class="py-docstring"> Extends IdleQueue to use glib io_add_wath, instead of select/poll In another</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"><tt class="py-docstring"> 'non gui' implementation of Gajim IdleQueue can be used safetly</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-comment"># (timeout, boolean)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-comment"># Boolean is True if timeout is specified in seconds, False means miliseconds</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt id="link-105" class="py-name"><a title="nbxmpp.idlequeue.GlibIdleQueue.PROCESS_TIMEOUT
+nbxmpp.idlequeue.IdleQueue.PROCESS_TIMEOUT" class="py-name" href="#" onclick="return doclink('link-105', 'PROCESS_TIMEOUT', 'link-55');">PROCESS_TIMEOUT</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> </tt>
+<a name="GlibIdleQueue._init_idle"></a><div id="GlibIdleQueue._init_idle-def"><a name="L513"></a><tt class="py-lineno">513</tt> <a class="py-toggle" href="#" id="GlibIdleQueue._init_idle-toggle" onclick="return toggle('GlibIdleQueue._init_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_init_idle">_init_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GlibIdleQueue._init_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GlibIdleQueue._init_idle-expanded"><a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"><tt class="py-docstring"> Creates a dict, which maps file/pipe/sock descriptor to glib event id</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-comment"># time() is already called in glib, we just get the last value</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-comment"># overrides IdleQueue.current_time()</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.current_time" class="py-name" href="#" onclick="return doclink('link-106', 'current_time', 'link-24');">current_time</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gobject</tt><tt class="py-op">.</tt><tt class="py-name">get_current_time</tt> </tt>
+</div><a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> </tt>
+<a name="GlibIdleQueue._add_idle"></a><div id="GlibIdleQueue._add_idle-def"><a name="L522"></a><tt class="py-lineno">522</tt> <a class="py-toggle" href="#" id="GlibIdleQueue._add_idle-toggle" onclick="return toggle('GlibIdleQueue._add_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_add_idle">_add_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GlibIdleQueue._add_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GlibIdleQueue._add_idle-expanded"><a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"><tt class="py-docstring"> This method is called when we plug a new idle object. Start listening for</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"><tt class="py-docstring"> events from fd</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">gobject</tt><tt class="py-op">.</tt><tt class="py-name">io_add_watch</tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="nbxmpp.idlequeue.GlibIdleQueue._process_events
+nbxmpp.idlequeue.IdleQueue._process_events" class="py-name" href="#" onclick="return doclink('link-107', '_process_events', 'link-92');">_process_events</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-name">priority</tt><tt class="py-op">=</tt><tt class="py-name">gobject</tt><tt class="py-op">.</tt><tt class="py-name">PRIORITY_LOW</tt><tt class="py-op">)</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-comment"># store the id of the watch, so that we can remove it on unplug</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">res</tt> </tt>
+</div><a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> </tt>
+<a name="GlibIdleQueue._process_events"></a><div id="GlibIdleQueue._process_events-def"><a name="L532"></a><tt class="py-lineno">532</tt> <a class="py-toggle" href="#" id="GlibIdleQueue._process_events-toggle" onclick="return toggle('GlibIdleQueue._process_events');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_process_events">_process_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GlibIdleQueue._process_events-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GlibIdleQueue._process_events-expanded"><a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-108" class="py-name" targets="Class nbxmpp.idlequeue.IdleQueue=nbxmpp.idlequeue.IdleQueue-class.html"><a title="nbxmpp.idlequeue.IdleQueue" class="py-name" href="#" onclick="return doclink('link-108', 'IdleQueue', 'link-108');">IdleQueue</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="nbxmpp.idlequeue.GlibIdleQueue._process_events
+nbxmpp.idlequeue.IdleQueue._process_events" class="py-name" href="#" onclick="return doclink('link-109', '_process_events', 'link-92');">_process_events</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="nbxmpp.idlequeue.GlibIdleQueue._remove_idle
+nbxmpp.idlequeue.IdleQueue._remove_idle
+nbxmpp.idlequeue.SelectIdleQueue._remove_idle" class="py-name" href="#" onclick="return doclink('link-110', '_remove_idle', 'link-78');">_remove_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="nbxmpp.idlequeue.GlibIdleQueue._add_idle
+nbxmpp.idlequeue.IdleQueue._add_idle
+nbxmpp.idlequeue.SelectIdleQueue._add_idle" class="py-name" href="#" onclick="return doclink('link-111', '_add_idle', 'link-76');">_add_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+</div><a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> </tt>
+<a name="GlibIdleQueue._remove_idle"></a><div id="GlibIdleQueue._remove_idle-def"><a name="L540"></a><tt class="py-lineno">540</tt> <a class="py-toggle" href="#" id="GlibIdleQueue._remove_idle-toggle" onclick="return toggle('GlibIdleQueue._remove_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_remove_idle">_remove_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GlibIdleQueue._remove_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GlibIdleQueue._remove_idle-expanded"><a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"><tt class="py-docstring"> This method is called when we unplug a new idle object. Stop listening</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"><tt class="py-docstring"> for events from fd</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">fd</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">:</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-name">gobject</tt><tt class="py-op">.</tt><tt class="py-name">source_remove</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">del</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">[</tt><tt class="py-name">fd</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> </tt>
+<a name="GlibIdleQueue.process"></a><div id="GlibIdleQueue.process-def"><a name="L550"></a><tt class="py-lineno">550</tt> <a class="py-toggle" href="#" id="GlibIdleQueue.process-toggle" onclick="return toggle('GlibIdleQueue.process');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.idlequeue.GlibIdleQueue-class.html#process">process</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GlibIdleQueue.process-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GlibIdleQueue.process-expanded"><a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue._check_time_events" class="py-name" href="#" onclick="return doclink('link-112', '_check_time_events', 'link-91');">_check_time_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.idlequeue.GlibIdleQueue-class.html b/doc/apidocs/nbxmpp.idlequeue.GlibIdleQueue-class.html
new file mode 100644
index 0000000..e5da4ba
--- /dev/null
+++ b/doc/apidocs/nbxmpp.idlequeue.GlibIdleQueue-class.html
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.idlequeue.GlibIdleQueue</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.idlequeue-module.html">Module&nbsp;idlequeue</a> ::
+ Class&nbsp;GlibIdleQueue
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.idlequeue.GlibIdleQueue-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GlibIdleQueue</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_i" name="uml_class_diagram_for_nbxmpp_i">
+<area shape="rect" id="node15" href="nbxmpp.idlequeue.GlibIdleQueue-class.html#PROCESS_TIMEOUT" title="nbxmpp.idlequeue.GlibIdleQueue.PROCESS_TIMEOUT" alt="" coords="109,239,241,257"/>
+<area shape="rect" id="node15" href="nbxmpp.idlequeue.GlibIdleQueue-class.html#process" title="Process idlequeue. Check for any pending timeout or alarm events. &#160;Call IdleObjects on possible and requested read, write and error events on their file descriptors" alt="" coords="109,260,241,279"/>
+<area shape="rect" id="node1" href="nbxmpp.idlequeue.GlibIdleQueue-class.html" title="Extends IdleQueue to use glib io_add_wath, instead of select/poll In another &#39;non gui&#39; implementation of Gajim IdleQueue can be used safetly" alt="" coords="97,214,252,285"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#__init__" title="nbxmpp.idlequeue.IdleQueue.__init__" alt="" coords="17,39,335,57"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm" title="Set up a new alarm. alarm_cb will be called after specified seconds." alt="" coords="17,57,335,76"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm" title="Remove alarm callback alarm_cb scheduled on alarm_time. Returns True if it was removed sucessfully, otherwise False" alt="" coords="17,76,335,95"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout" title="Remove the read timeout" alt="" coords="17,95,335,113"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout" title="Seta a new timeout. If it is not removed after specified seconds, func or obj.read_timeout() will be called" alt="" coords="17,113,335,132"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle" title="Plug an IdleObject into idlequeue. Filedescriptor fd must be set" alt="" coords="17,132,335,151"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle" title="Remove plugged IdleObject, specified by filedescriptor fd" alt="" coords="17,151,335,169"/>
+<area shape="rect" id="node16" href="nbxmpp.idlequeue.IdleQueue-class.html#current_time" title="nbxmpp.idlequeue.IdleQueue.current_time" alt="" coords="17,169,335,188"/>
+<area shape="rect" id="node2" href="nbxmpp.idlequeue.IdleQueue-class.html" title="IdleQueue provide three distinct time based features. Uses select.poll()" alt="" coords="5,6,347,194"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_i.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_i" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Extends IdleQueue to use glib io_add_wath, instead of select/poll In another
+'non gui' implementation of Gajim IdleQueue can be used safetly
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_init_idle" class="summary-sig-name" onclick="show_private();">_init_idle</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Creates a dict, which maps file/pipe/sock descriptor to glib event id</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._init_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_add_idle" class="summary-sig-name" onclick="show_private();">_add_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>,
+ <span class="summary-sig-arg">flags</span>)</span><br />
+ This method is called when we plug a new idle object. Start listening for
+events from fd</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._add_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_process_events" class="summary-sig-name" onclick="show_private();">_process_events</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>,
+ <span class="summary-sig-arg">flags</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._process_events">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#_remove_idle" class="summary-sig-name" onclick="show_private();">_remove_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>)</span><br />
+ This method is called when we unplug a new idle object. Stop listening
+for events from fd</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._remove_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#process" class="summary-sig-name">process</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Process idlequeue. Check for any pending timeout or alarm events. Call
+IdleObjects on possible and requested read, write and error events on
+their file descriptors</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue.process">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#__init__">__init__</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#current_time">current_time</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle">plug_idle</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm">remove_alarm</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout">remove_timeout</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm">set_alarm</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout">set_read_timeout</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle">unplug_idle</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a></code></b> (private):
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events" onclick="show_private();">_check_time_events</a></code>
+ </p></div>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.GlibIdleQueue-class.html#PROCESS_TIMEOUT" class="summary-name">PROCESS_TIMEOUT</a> = <code title="(2, True)"><code class="variable-group">(</code>2<code class="variable-op">, </code>True<code class="variable-group">)</code></code>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="_init_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_init_idle</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._init_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Creates a dict, which maps file/pipe/sock descriptor to glib event id
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#_init_idle" onclick="show_private();">IdleQueue._init_idle</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_add_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_add_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>,
+ <span class="sig-arg">flags</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._add_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ This method is called when we plug a new idle object. Start listening for
+events from fd
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#_add_idle" onclick="show_private();">IdleQueue._add_idle</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_process_events"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_process_events</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>,
+ <span class="sig-arg">flags</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._process_events">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#_process_events" onclick="show_private();">IdleQueue._process_events</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_remove_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_remove_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue._remove_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ This method is called when we unplug a new idle object. Stop listening
+for events from fd
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#_remove_idle" onclick="show_private();">IdleQueue._remove_idle</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">process</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#GlibIdleQueue.process">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Process idlequeue. Check for any pending timeout or alarm events. Call
+IdleObjects on possible and requested read, write and error events on
+their file descriptors</p>
+<p>Call this in regular intervals.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#process">IdleQueue.process</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variable Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariableDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="PROCESS_TIMEOUT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PROCESS_TIMEOUT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code>2<code class="variable-op">, </code>True<code class="variable-group">)</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.idlequeue.IdleCommand-class.html b/doc/apidocs/nbxmpp.idlequeue.IdleCommand-class.html
new file mode 100644
index 0000000..ce9dcc8
--- /dev/null
+++ b/doc/apidocs/nbxmpp.idlequeue.IdleCommand-class.html
@@ -0,0 +1,685 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.idlequeue.IdleCommand</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.idlequeue-module.html">Module&nbsp;idlequeue</a> ::
+ Class&nbsp;IdleCommand
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.idlequeue.IdleCommand-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class IdleCommand</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_i_2" name="uml_class_diagram_for_nbxmpp_i_2">
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#__init__" title="nbxmpp.idlequeue.IdleCommand.__init__" alt="" coords="17,129,216,148"/>
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#set_idlequeue" title="nbxmpp.idlequeue.IdleCommand.set_idlequeue" alt="" coords="17,148,216,167"/>
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#wait_child" title="nbxmpp.idlequeue.IdleCommand.wait_child" alt="" coords="17,167,216,185"/>
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#start" title="nbxmpp.idlequeue.IdleCommand.start" alt="" coords="17,185,216,204"/>
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#end" title="nbxmpp.idlequeue.IdleCommand.end" alt="" coords="17,204,216,223"/>
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#pollend" title="Called on stream failure" alt="" coords="17,223,216,241"/>
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#pollin" title="Called on new read event" alt="" coords="17,241,216,260"/>
+<area shape="rect" id="node17" href="nbxmpp.idlequeue.IdleCommand-class.html#read_timeout" title="Called when timeout happened" alt="" coords="17,260,216,279"/>
+<area shape="rect" id="node1" href="nbxmpp.idlequeue.IdleCommand-class.html" title="Can be subclassed to execute commands asynchronously by the idlequeue. Result will be optained via file descriptor of created pipe" alt="" coords="5,97,227,285"/>
+<area shape="rect" id="node18" href="nbxmpp.idlequeue.IdleObject-class.html#fd" title="filedescriptor, must be unique for each IdleObject" alt="" coords="76,31,159,49"/>
+<area shape="rect" id="node18" href="nbxmpp.idlequeue.IdleObject-class.html#pollout" title="Called on new write event (connect in sockets is a pollout)" alt="" coords="76,52,159,71"/>
+<area shape="rect" id="node2" href="nbxmpp.idlequeue.IdleObject-class.html" title="Idle listener interface. Listed methods are called by IdleQueue." alt="" coords="64,6,171,77"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_i_2.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_i_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Can be subclassed to execute commands asynchronously by the idlequeue.
+Result will be optained via file descriptor of created pipe
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">on_result</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#set_idlequeue" class="summary-sig-name">set_idlequeue</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">idlequeue</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.set_idlequeue">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_return_result" class="summary-sig-name" onclick="show_private();">_return_result</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._return_result">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_args" class="summary-sig-name" onclick="show_private();">_compose_command_args</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._compose_command_args">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_compose_command_line" class="summary-sig-name" onclick="show_private();">_compose_command_line</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return one line representation of command and its arguments</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._compose_command_line">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#wait_child" class="summary-sig-name">wait_child</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.wait_child">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#start" class="summary-sig-name">start</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.start">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_start_nt" class="summary-sig-name" onclick="show_private();">_start_nt</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._start_nt">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#_start_posix" class="summary-sig-name" onclick="show_private();">_start_posix</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._start_posix">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#end" class="summary-sig-name">end</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.end">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#pollend" class="summary-sig-name">pollend</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called on stream failure</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.pollend">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#pollin" class="summary-sig-name">pollin</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called on new read event</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.pollin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleCommand-class.html#read_timeout" class="summary-sig-name">read_timeout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called when timeout happened</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.read_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleObject-class.html#pollout">pollout</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleObject-class.html">IdleObject</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleObject-class.html#fd">fd</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">on_result</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#__init__">IdleObject.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_idlequeue"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_idlequeue</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">idlequeue</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.set_idlequeue">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_return_result"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_return_result</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._return_result">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_compose_command_args"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_compose_command_args</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._compose_command_args">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_compose_command_line"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_compose_command_line</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._compose_command_line">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return one line representation of command and its arguments
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="wait_child"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">wait_child</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.wait_child">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="start"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">start</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.start">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_start_nt"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_start_nt</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._start_nt">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_start_posix"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_start_posix</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand._start_posix">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="end"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">end</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.end">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollend"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollend</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.pollend">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called on stream failure
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#pollend">IdleObject.pollend</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollin</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.pollin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called on new read event
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#pollin">IdleObject.pollin</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="read_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">read_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleCommand.read_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called when timeout happened
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#read_timeout">IdleObject.read_timeout</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.idlequeue.IdleObject-class.html b/doc/apidocs/nbxmpp.idlequeue.IdleObject-class.html
new file mode 100644
index 0000000..d6a0924
--- /dev/null
+++ b/doc/apidocs/nbxmpp.idlequeue.IdleObject-class.html
@@ -0,0 +1,408 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.idlequeue.IdleObject</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.idlequeue-module.html">Module&nbsp;idlequeue</a> ::
+ Class&nbsp;IdleObject
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.idlequeue.IdleObject-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class IdleObject</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_i_3" name="uml_class_diagram_for_nbxmpp_i_3">
+<area shape="rect" id="node19" href="nbxmpp.idlequeue.IdleObject-class.html#fd" title="filedescriptor, must be unique for each IdleObject" alt="" coords="185,31,311,49"/>
+<area shape="rect" id="node19" href="nbxmpp.idlequeue.IdleObject-class.html#__init__" title="nbxmpp.idlequeue.IdleObject.__init__" alt="" coords="185,52,311,71"/>
+<area shape="rect" id="node19" href="nbxmpp.idlequeue.IdleObject-class.html#pollend" title="Called on stream failure" alt="" coords="185,71,311,89"/>
+<area shape="rect" id="node19" href="nbxmpp.idlequeue.IdleObject-class.html#pollin" title="Called on new read event" alt="" coords="185,89,311,108"/>
+<area shape="rect" id="node19" href="nbxmpp.idlequeue.IdleObject-class.html#pollout" title="Called on new write event (connect in sockets is a pollout)" alt="" coords="185,108,311,127"/>
+<area shape="rect" id="node19" href="nbxmpp.idlequeue.IdleObject-class.html#read_timeout" title="Called when timeout happened" alt="" coords="185,127,311,145"/>
+<area shape="rect" id="node1" href="nbxmpp.idlequeue.IdleObject-class.html" title="Idle listener interface. Listed methods are called by IdleQueue." alt="" coords="173,6,323,151"/>
+<area shape="rect" id="node2" href="nbxmpp.transports_nb.NonBlockingTCP-class.html" title="Non&#45;blocking TCP socket wrapper" alt="" coords="28,171,260,210"/>
+<area shape="rect" id="node3" href="nbxmpp.idlequeue.IdleCommand-class.html" title="Can be subclassed to execute commands asynchronously by the idlequeue. Result will be optained via file descriptor of created pipe" alt="" coords="289,171,415,210"/>
+<area shape="rect" id="node5" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html" title="Socket wrapper that creates HTTP message out of sent data and peels&#45;off HTTP headers from incoming messages" alt="" coords="24,230,264,269"/>
+<area shape="rect" id="node4" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" title="Class for BOSH HTTP connections. Slightly redefines HTTP transport by calling bosh bodytag generating callback before putting data on wire" alt="" coords="5,289,283,327"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_i_3.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_i_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Idle listener interface. Listed methods are called by IdleQueue.
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleObject-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleObject-class.html#pollend" class="summary-sig-name">pollend</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called on stream failure</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.pollend">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleObject-class.html#pollin" class="summary-sig-name">pollin</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called on new read event</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.pollin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleObject-class.html#pollout" class="summary-sig-name">pollout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called on new write event (connect in sockets is a pollout)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.pollout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleObject-class.html#read_timeout" class="summary-sig-name">read_timeout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called when timeout happened</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.read_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#fd" class="summary-name">fd</a><br />
+ filedescriptor, must be unique for each IdleObject
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollend"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollend</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.pollend">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called on stream failure
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollin</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.pollin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called on new read event
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.pollout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called on new write event (connect in sockets is a pollout)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="read_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">read_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleObject.read_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called when timeout happened
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
+<a name="section-InstanceVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Variable Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceVariableDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="fd"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">fd</h3>
+ filedescriptor, must be unique for each IdleObject
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.idlequeue.IdleQueue-class.html b/doc/apidocs/nbxmpp.idlequeue.IdleQueue-class.html
new file mode 100644
index 0000000..3000afe
--- /dev/null
+++ b/doc/apidocs/nbxmpp.idlequeue.IdleQueue-class.html
@@ -0,0 +1,801 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.idlequeue.IdleQueue</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.idlequeue-module.html">Module&nbsp;idlequeue</a> ::
+ Class&nbsp;IdleQueue
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.idlequeue.IdleQueue-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class IdleQueue</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_i_4" name="uml_class_diagram_for_nbxmpp_i_4">
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT" title="nbxmpp.idlequeue.IdleQueue.PROCESS_TIMEOUT" alt="" coords="17,31,335,49"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#__init__" title="nbxmpp.idlequeue.IdleQueue.__init__" alt="" coords="17,52,335,71"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm" title="Set up a new alarm. alarm_cb will be called after specified seconds." alt="" coords="17,71,335,89"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm" title="Remove alarm callback alarm_cb scheduled on alarm_time. Returns True if it was removed sucessfully, otherwise False" alt="" coords="17,89,335,108"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout" title="Remove the read timeout" alt="" coords="17,108,335,127"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout" title="Seta a new timeout. If it is not removed after specified seconds, func or obj.read_timeout() will be called" alt="" coords="17,127,335,145"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle" title="Plug an IdleObject into idlequeue. Filedescriptor fd must be set" alt="" coords="17,145,335,164"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle" title="Remove plugged IdleObject, specified by filedescriptor fd" alt="" coords="17,164,335,183"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#current_time" title="nbxmpp.idlequeue.IdleQueue.current_time" alt="" coords="17,183,335,201"/>
+<area shape="rect" id="node24" href="nbxmpp.idlequeue.IdleQueue-class.html#process" title="Process idlequeue. Check for any pending timeout or alarm events. &#160;Call IdleObjects on possible and requested read, write and error events on their file descriptors" alt="" coords="17,201,335,220"/>
+<area shape="rect" id="node1" href="nbxmpp.idlequeue.IdleQueue-class.html" title="IdleQueue provide three distinct time based features. Uses select.poll()" alt="" coords="5,6,347,226"/>
+<area shape="rect" id="node2" href="nbxmpp.idlequeue.GlibIdleQueue-class.html" title="Extends IdleQueue to use glib io_add_wath, instead of select/poll In another &#39;non gui&#39; implementation of Gajim IdleQueue can be used safetly" alt="" coords="32,246,157,285"/>
+<area shape="rect" id="node3" href="nbxmpp.idlequeue.SelectIdleQueue-class.html" title="Extends IdleQueue to use select.select() for polling" alt="" coords="187,246,328,285"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_i_4.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_i_4" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>IdleQueue provide three distinct time based features. Uses select.poll()</p>
+<blockquote>
+<ol class="rst-arabic simple">
+<li>Alarm timeout: Execute a callback after foo seconds</li>
+<li>Timeout event: Call read_timeout() of an plugged object if a timeout
+has been set, but not removed in time.</li>
+<li>Check file descriptor of plugged objects for read, write and error
+events</li>
+</ol>
+</blockquote>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_init_idle" class="summary-sig-name" onclick="show_private();">_init_idle</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Hook method for subclassed. Will be called by __init__</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._init_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm" class="summary-sig-name">set_alarm</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">alarm_cb</span>,
+ <span class="summary-sig-arg">seconds</span>)</span><br />
+ Set up a new alarm. alarm_cb will be called after specified seconds.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.set_alarm">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm" class="summary-sig-name">remove_alarm</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">alarm_cb</span>,
+ <span class="summary-sig-arg">alarm_time</span>)</span><br />
+ Remove alarm callback alarm_cb scheduled on alarm_time. Returns True if
+it was removed sucessfully, otherwise False</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.remove_alarm">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout" class="summary-sig-name">remove_timeout</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>,
+ <span class="summary-sig-arg">timeout</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Remove the read timeout</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.remove_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout" class="summary-sig-name">set_read_timeout</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>,
+ <span class="summary-sig-arg">seconds</span>,
+ <span class="summary-sig-arg">func</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Seta a new timeout. If it is not removed after specified seconds,
+func or obj.read_timeout() will be called</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.set_read_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events" class="summary-sig-name" onclick="show_private();">_check_time_events</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Execute and remove alarm callbacks and execute func() or read_timeout()
+for plugged objects if specified time has ellapsed</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._check_time_events">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle" class="summary-sig-name">plug_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">obj</span>,
+ <span class="summary-sig-arg">writable</span>=<span class="summary-sig-default">True</span>,
+ <span class="summary-sig-arg">readable</span>=<span class="summary-sig-default">True</span>)</span><br />
+ Plug an IdleObject into idlequeue. Filedescriptor fd must be set</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.plug_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_add_idle" class="summary-sig-name" onclick="show_private();">_add_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>,
+ <span class="summary-sig-arg">flags</span>)</span><br />
+ Hook method for subclasses, called by plug_idle</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._add_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle" class="summary-sig-name">unplug_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>)</span><br />
+ Remove plugged IdleObject, specified by filedescriptor fd</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.unplug_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#current_time" class="summary-sig-name">current_time</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.current_time">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_remove_idle" class="summary-sig-name" onclick="show_private();">_remove_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>)</span><br />
+ Hook method for subclassed, called by unplug_idle</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._remove_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#_process_events" class="summary-sig-name" onclick="show_private();">_process_events</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>,
+ <span class="summary-sig-arg">flags</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._process_events">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.IdleQueue-class.html#process" class="summary-sig-name">process</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Process idlequeue. Check for any pending timeout or alarm events. Call
+IdleObjects on possible and requested read, write and error events on
+their file descriptors</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.process">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT" class="summary-name">PROCESS_TIMEOUT</a> = <code title="(100, False)"><code class="variable-group">(</code>100<code class="variable-op">, </code>False<code class="variable-group">)</code></code>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_init_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_init_idle</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._init_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Hook method for subclassed. Will be called by __init__
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_alarm"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_alarm</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">alarm_cb</span>,
+ <span class="sig-arg">seconds</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.set_alarm">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set up a new alarm. alarm_cb will be called after specified seconds.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="remove_alarm"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">remove_alarm</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">alarm_cb</span>,
+ <span class="sig-arg">alarm_time</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.remove_alarm">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Remove alarm callback alarm_cb scheduled on alarm_time. Returns True if
+it was removed sucessfully, otherwise False
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="remove_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">remove_timeout</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>,
+ <span class="sig-arg">timeout</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.remove_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Remove the read timeout
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_read_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_read_timeout</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>,
+ <span class="sig-arg">seconds</span>,
+ <span class="sig-arg">func</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.set_read_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Seta a new timeout. If it is not removed after specified seconds,
+func or obj.read_timeout() will be called</p>
+<p>A filedescriptor fd can have several timeouts.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_check_time_events"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_check_time_events</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._check_time_events">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Execute and remove alarm callbacks and execute func() or read_timeout()
+for plugged objects if specified time has ellapsed
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plug_idle"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plug_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">obj</span>,
+ <span class="sig-arg">writable</span>=<span class="sig-default">True</span>,
+ <span class="sig-arg">readable</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.plug_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Plug an IdleObject into idlequeue. Filedescriptor fd must be set
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>obj</code></strong> - the IdleObject</li>
+ <li><strong class="pname"><code>writable</code></strong> - True if obj has data to sent</li>
+ <li><strong class="pname"><code>readable</code></strong> - True if obj expects data to be reiceived</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_add_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_add_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>,
+ <span class="sig-arg">flags</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._add_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Hook method for subclasses, called by plug_idle
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="unplug_idle"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">unplug_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.unplug_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Remove plugged IdleObject, specified by filedescriptor fd
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="current_time"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">current_time</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.current_time">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_remove_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_remove_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._remove_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Hook method for subclassed, called by unplug_idle
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_process_events"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_process_events</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>,
+ <span class="sig-arg">flags</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue._process_events">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">process</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#IdleQueue.process">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Process idlequeue. Check for any pending timeout or alarm events. Call
+IdleObjects on possible and requested read, write and error events on
+their file descriptors</p>
+<p>Call this in regular intervals.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variable Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariableDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="PROCESS_TIMEOUT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PROCESS_TIMEOUT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code>100<code class="variable-op">, </code>False<code class="variable-group">)</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.idlequeue.SelectIdleQueue-class.html b/doc/apidocs/nbxmpp.idlequeue.SelectIdleQueue-class.html
new file mode 100644
index 0000000..203d351
--- /dev/null
+++ b/doc/apidocs/nbxmpp.idlequeue.SelectIdleQueue-class.html
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.idlequeue.SelectIdleQueue</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.idlequeue-module.html">Module&nbsp;idlequeue</a> ::
+ Class&nbsp;SelectIdleQueue
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.idlequeue.SelectIdleQueue-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SelectIdleQueue</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_i_5" name="uml_class_diagram_for_nbxmpp_i_5">
+<area shape="rect" id="node27" href="nbxmpp.idlequeue.SelectIdleQueue-class.html#process" title="Process idlequeue. Check for any pending timeout or alarm events. &#160;Call IdleObjects on possible and requested read, write and error events on their file descriptors" alt="" coords="123,260,229,279"/>
+<area shape="rect" id="node1" href="nbxmpp.idlequeue.SelectIdleQueue-class.html" title="Extends IdleQueue to use select.select() for polling" alt="" coords="111,227,241,285"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT" title="nbxmpp.idlequeue.IdleQueue.PROCESS_TIMEOUT" alt="" coords="17,31,335,49"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#__init__" title="nbxmpp.idlequeue.IdleQueue.__init__" alt="" coords="17,52,335,71"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm" title="Set up a new alarm. alarm_cb will be called after specified seconds." alt="" coords="17,71,335,89"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm" title="Remove alarm callback alarm_cb scheduled on alarm_time. Returns True if it was removed sucessfully, otherwise False" alt="" coords="17,89,335,108"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout" title="Remove the read timeout" alt="" coords="17,108,335,127"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout" title="Seta a new timeout. If it is not removed after specified seconds, func or obj.read_timeout() will be called" alt="" coords="17,127,335,145"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle" title="Plug an IdleObject into idlequeue. Filedescriptor fd must be set" alt="" coords="17,145,335,164"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle" title="Remove plugged IdleObject, specified by filedescriptor fd" alt="" coords="17,164,335,183"/>
+<area shape="rect" id="node28" href="nbxmpp.idlequeue.IdleQueue-class.html#current_time" title="nbxmpp.idlequeue.IdleQueue.current_time" alt="" coords="17,183,335,201"/>
+<area shape="rect" id="node2" href="nbxmpp.idlequeue.IdleQueue-class.html" title="IdleQueue provide three distinct time based features. Uses select.poll()" alt="" coords="5,6,347,207"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_i_5.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_i_5" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Extends IdleQueue to use select.select() for polling</p>
+<p>This class exisists for the sake of gtk2.8 on windows, which doesn't seem to
+support io_add_watch properly (yet)</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_init_idle" class="summary-sig-name" onclick="show_private();">_init_idle</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Create a dict, which maps file/pipe/sock descriptor to glib event id</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue._init_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_add_idle" class="summary-sig-name" onclick="show_private();">_add_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>,
+ <span class="summary-sig-arg">flags</span>)</span><br />
+ This method is called when we plug a new idle object. Remove descriptor
+to read/write/error lists, according flags</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue._add_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#_remove_idle" class="summary-sig-name" onclick="show_private();">_remove_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fd</span>)</span><br />
+ This method is called when we unplug a new idle object. Remove descriptor
+from read/write/error lists</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue._remove_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.idlequeue.SelectIdleQueue-class.html#process" class="summary-sig-name">process</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Process idlequeue. Check for any pending timeout or alarm events. Call
+IdleObjects on possible and requested read, write and error events on
+their file descriptors</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue.process">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#__init__">__init__</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#current_time">current_time</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#plug_idle">plug_idle</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_alarm">remove_alarm</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout">remove_timeout</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_alarm">set_alarm</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout">set_read_timeout</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle">unplug_idle</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a></code></b> (private):
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#_check_time_events" onclick="show_private();">_check_time_events</a></code>,
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#_process_events" onclick="show_private();">_process_events</a></code>
+ </p></div>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleQueue-class.html">IdleQueue</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleQueue-class.html#PROCESS_TIMEOUT">PROCESS_TIMEOUT</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="_init_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_init_idle</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue._init_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Create a dict, which maps file/pipe/sock descriptor to glib event id
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#_init_idle" onclick="show_private();">IdleQueue._init_idle</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_add_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_add_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>,
+ <span class="sig-arg">flags</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue._add_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ This method is called when we plug a new idle object. Remove descriptor
+to read/write/error lists, according flags
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#_add_idle" onclick="show_private();">IdleQueue._add_idle</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_remove_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_remove_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fd</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue._remove_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ This method is called when we unplug a new idle object. Remove descriptor
+from read/write/error lists
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#_remove_idle" onclick="show_private();">IdleQueue._remove_idle</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">process</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.idlequeue-pysrc.html#SelectIdleQueue.process">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Process idlequeue. Check for any pending timeout or alarm events. Call
+IdleObjects on possible and requested read, write and error events on
+their file descriptors</p>
+<p>Call this in regular intervals.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleQueue-class.html#process">IdleQueue.process</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.plugin-module.html b/doc/apidocs/nbxmpp.plugin-module.html
new file mode 100644
index 0000000..0b6bfbc
--- /dev/null
+++ b/doc/apidocs/nbxmpp.plugin-module.html
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.plugin</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;plugin
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.plugin-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module plugin</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.plugin-pysrc.html">source&nbsp;code</a></span></p>
+Provides PlugIn class functionality to develop extentions for xmpppy
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.plugin.PlugIn-class.html" class="summary-name">PlugIn</a><br />
+ Abstract xmpppy plugin infrastructure code, providing plugging in/out and
+debugging functionality
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.plugin-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.plugin')">logging.getLogger('nbxmpp.plugin')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.plugin-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.plugin')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.plugin-pysrc.html b/doc/apidocs/nbxmpp.plugin-pysrc.html
new file mode 100644
index 0000000..c0da1eb
--- /dev/null
+++ b/doc/apidocs/nbxmpp.plugin-pysrc.html
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.plugin</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;plugin
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.plugin-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.plugin-module.html">Module nbxmpp.plugin</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## plugin.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2005 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"># $Id: client.py,v 1.52 2006/01/02 19:40:55 normanr Exp $</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-docstring">Provides PlugIn class functionality to develop extentions for xmpppy</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-0', 'log', 'link-0');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.plugin'</tt><tt class="py-op">)</tt> </tt>
+<a name="PlugIn"></a><div id="PlugIn-def"><a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt> <a class="py-toggle" href="#" id="PlugIn-toggle" onclick="return toggle('PlugIn');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.plugin.PlugIn-class.html">PlugIn</a><tt class="py-op">:</tt> </tt>
+</div><div id="PlugIn-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="PlugIn-expanded"><a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"><tt class="py-docstring"> Abstract xmpppy plugin infrastructure code, providing plugging in/out and</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"><tt class="py-docstring"> debugging functionality</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"><tt class="py-docstring"> Inherit to develop pluggable objects. No code change on the owner class</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"><tt class="py-docstring"> required (the object where we plug into)</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"><tt class="py-docstring"> For every instance of PlugIn class the 'owner' is the class in what the plug</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"><tt class="py-docstring"> was plugged.</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"> </tt>
+<a name="PlugIn.__init__"></a><div id="PlugIn.__init__-def"><a name="L36"></a><tt class="py-lineno">36</tt> <a class="py-toggle" href="#" id="PlugIn.__init__-toggle" onclick="return toggle('PlugIn.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.plugin.PlugIn-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PlugIn.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="PlugIn.__init__-expanded"><a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exported_methods</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> </tt>
+<a name="PlugIn.PlugIn"></a><div id="PlugIn.PlugIn-def"><a name="L39"></a><tt class="py-lineno">39</tt> <a class="py-toggle" href="#" id="PlugIn.PlugIn-toggle" onclick="return toggle('PlugIn.PlugIn');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PlugIn.PlugIn-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="PlugIn.PlugIn-expanded"><a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"><tt class="py-docstring"> Attach to owner and register ourself and our _exported_methods in it.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"><tt class="py-docstring"> If defined by a subclass, call self.plugin(owner) to execute hook</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"><tt class="py-docstring"> code after plugging</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">=</tt><tt class="py-name">owner</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"> <tt id="link-1" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-1', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Plugging %s __INTO__ %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-keyword">in</tt> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"> <tt id="link-2" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-2', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Plugging ignored: another instance already plugged.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_old_owners_methods</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">method</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exported_methods</tt><tt class="py-op">:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-keyword">in</tt> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_old_owners_methods</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">method</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'Dispatcher'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: I need BOSHDispatcher or XMPPDispatcher on .Dispatcher</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> <tt class="py-comment"># there must be a better way..</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">'Dispatcher'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">self</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">self</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"> <tt class="py-comment"># Execute hook</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'plugin'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugin()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugin,Method nbxmpp.auth_nb.NonBlockingNonSASL.plugin()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin,Method nbxmpp.auth_nb.SASL.plugin()=nbxmpp.auth_nb.SASL-class.html#plugin,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugin()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin,Module nbxmpp.plugin=nbxmpp.plugin-module.html,Method nbxmpp.roster_nb.NonBlockingRoster.plugin()=nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin,Method nbxmpp.tls_nb.NonBlockingTLS.plugin()=nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin,Method nbxmpp.transports_nb.NonBlockingTransport.plugin()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin"><a title="nbxmpp.auth_nb.NonBlockingBind.plugin
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin
+nbxmpp.auth_nb.SASL.plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin
+nbxmpp.plugin
+nbxmpp.roster_nb.NonBlockingRoster.plugin
+nbxmpp.tls_nb.NonBlockingTLS.plugin
+nbxmpp.transports_nb.NonBlockingTransport.plugin" class="py-name" href="#" onclick="return doclink('link-3', 'plugin', 'link-3');">plugin</a></tt><tt class="py-op">(</tt><tt class="py-name">owner</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"> </tt>
+<a name="PlugIn.PlugOut"></a><div id="PlugIn.PlugOut-def"><a name="L66"></a><tt class="py-lineno">66</tt> <a class="py-toggle" href="#" id="PlugIn.PlugOut-toggle" onclick="return toggle('PlugIn.PlugOut');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PlugIn.PlugOut-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="PlugIn.PlugOut-expanded"><a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"><tt class="py-docstring"> Unregister our _exported_methods from owner and detach from it.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"><tt class="py-docstring"> If defined by a subclass, call self.plugout() after unplugging to execute</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"><tt class="py-docstring"> hook code</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> <tt id="link-4" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-4', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Plugging %s __OUT__ of %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">method</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exported_methods</tt><tt class="py-op">:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">]</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">75</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">method</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_old_owners_methods</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">method</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: Dispatcher workaround</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'Dispatcher'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">'Dispatcher'</tt><tt class="py-op">]</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">]</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt> <tt class="py-line"> <tt class="py-comment"># Execute hook</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'plugout'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugout()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugout,Method nbxmpp.auth_nb.SASL.plugout()=nbxmpp.auth_nb.SASL-class.html#plugout,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugout()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugout,Method nbxmpp.transports_nb.NonBlockingTransport.plugout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout"><a title="nbxmpp.auth_nb.NonBlockingBind.plugout
+nbxmpp.auth_nb.SASL.plugout
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugout
+nbxmpp.transports_nb.NonBlockingTransport.plugout" class="py-name" href="#" onclick="return doclink('link-5', 'plugout', 'link-5');">plugout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> </tt>
+</div><a name="L86"></a><tt class="py-lineno">86</tt> <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="PlugIn.get_instance"></a><div id="PlugIn.get_instance-def"><a name="L88"></a><tt class="py-lineno">88</tt> <a class="py-toggle" href="#" id="PlugIn.get_instance-toggle" onclick="return toggle('PlugIn.get_instance');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PlugIn.get_instance-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="PlugIn.get_instance-expanded"><a name="L89"></a><tt class="py-lineno">89</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">90</tt> <tt class="py-line"><tt class="py-docstring"> Factory Method for object creation</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">91</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L92"></a><tt class="py-lineno">92</tt> <tt class="py-line"><tt class="py-docstring"> Use this instead of directly initializing the class in order to make</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">93</tt> <tt class="py-line"><tt class="py-docstring"> unit testing easier. For testing, this method can be patched to inject</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">94</tt> <tt class="py-line"><tt class="py-docstring"> mock objects.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">95</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">96</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L97"></a><tt class="py-lineno">97</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.plugin.PlugIn-class.html b/doc/apidocs/nbxmpp.plugin.PlugIn-class.html
new file mode 100644
index 0000000..b520e0f
--- /dev/null
+++ b/doc/apidocs/nbxmpp.plugin.PlugIn-class.html
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.plugin.PlugIn</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.plugin-module.html">Module&nbsp;plugin</a> ::
+ Class&nbsp;PlugIn
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.plugin.PlugIn-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PlugIn</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.plugin-pysrc.html#PlugIn">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p" name="uml_class_diagram_for_nbxmpp_p">
+<area shape="rect" id="node29" href="nbxmpp.plugin.PlugIn-class.html#__init__" title="nbxmpp.plugin.PlugIn.__init__" alt="" coords="673,39,899,57"/>
+<area shape="rect" id="node29" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="673,57,899,76"/>
+<area shape="rect" id="node29" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="673,76,899,95"/>
+<area shape="rect" id="node29" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="673,95,899,113"/>
+<area shape="rect" id="node1" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="661,6,909,119"/>
+<area shape="rect" id="node2" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html" title="Handles XMPP stream and is the first who takes control over a fresh stanza" alt="" coords="7,139,241,178"/>
+<area shape="rect" id="node3" href="nbxmpp.auth_nb.SASL-class.html" title="Implements SASL authentication. Can be plugged into NonBlockingClient to start authentication" alt="" coords="271,139,396,178"/>
+<area shape="rect" id="node4" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html" title="Implements old Non&#45;SASL (JEP&#45;0078) authentication used in jabberd1.4 and transport authentication" alt="" coords="425,139,657,178"/>
+<area shape="rect" id="node6" href="nbxmpp.auth_nb.NonBlockingBind-class.html" title="Bind some JID to the current connection to allow router know of our location. Must be plugged after successful SASL auth" alt="" coords="687,139,887,178"/>
+<area shape="rect" id="node7" href="nbxmpp.tls_nb.NonBlockingTLS-class.html" title="TLS connection used to encrypts already estabilished tcp connection" alt="" coords="916,139,1097,178"/>
+<area shape="rect" id="node8" href="nbxmpp.roster_nb.NonBlockingRoster-class.html" title="Defines a plenty of methods that will allow you to manage roster. Also automatically track presences from remote JIDs taking into account that every JID can have multiple resources connected. Does not currently support &#39;error&#39; presences. You can also use mapping interface for access to the internal representation of contacts in roster" alt="" coords="1127,139,1348,178"/>
+<area shape="rect" id="node10" href="nbxmpp.transports_nb.NonBlockingTransport-class.html" title="Abstract class representing a transport" alt="" coords="1377,139,1644,178"/>
+<area shape="rect" id="node9" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html" title="nbxmpp.dispatcher_nb.BOSHDispatcher" alt="" coords="5,198,243,237"/>
+<area shape="rect" id="node5" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html" title="Socket wrapper that creates HTTP message out of sent data and peels&#45;off HTTP headers from incoming messages" alt="" coords="1511,257,1751,295"/>
+<area shape="rect" id="node12" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" title="Class for BOSH HTTP connections. Slightly redefines HTTP transport by calling bosh bodytag generating callback before putting data on wire" alt="" coords="1492,315,1769,354"/>
+<area shape="rect" id="node11" href="nbxmpp.bosh.NonBlockingBOSH-class.html" title="nbxmpp.bosh.NonBlockingBOSH" alt="" coords="1296,198,1485,237"/>
+<area shape="rect" id="node13" href="nbxmpp.transports_nb.NonBlockingTCP-class.html" title="Non&#45;blocking TCP socket wrapper" alt="" coords="1515,198,1747,237"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Abstract xmpppy plugin infrastructure code, providing plugging in/out and
+debugging functionality</p>
+<p>Inherit to develop pluggable objects. No code change on the owner class
+required (the object where we plug into)</p>
+<p>For every instance of PlugIn class the 'owner' is the class in what the plug
+was plugged.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.plugin.PlugIn-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.plugin-pysrc.html#PlugIn.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn" class="summary-sig-name">PlugIn</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span><br />
+ Attach to owner and register ourself and our _exported_methods in it.
+If defined by a subclass, call self.plugin(owner) to execute hook
+code after plugging</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.plugin-pysrc.html#PlugIn.PlugIn">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut" class="summary-sig-name">PlugOut</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Unregister our _exported_methods from owner and detach from it.
+If defined by a subclass, call self.plugout() after unplugging to execute
+hook code</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.plugin-pysrc.html#PlugIn.PlugOut">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.plugin.PlugIn-class.html#get_instance" class="summary-sig-name">get_instance</a>(<span class="summary-sig-arg">cls</span>,
+ <span class="summary-sig-arg">*args</span>,
+ <span class="summary-sig-arg">**kwargs</span>)</span><br />
+ Factory Method for object creation</td>
+ <td align="right" valign="top">
+
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.plugin-pysrc.html#PlugIn.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="PlugIn"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">PlugIn</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.plugin-pysrc.html#PlugIn.PlugIn">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Attach to owner and register ourself and our _exported_methods in it.
+If defined by a subclass, call self.plugin(owner) to execute hook
+code after plugging
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="PlugOut"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">PlugOut</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.plugin-pysrc.html#PlugIn.PlugOut">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Unregister our _exported_methods from owner and detach from it.
+If defined by a subclass, call self.plugout() after unplugging to execute
+hook code
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_instance"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_instance</span>(<span class="sig-arg">cls</span>,
+ <span class="sig-arg">*args</span>,
+ <span class="sig-arg">**kwargs</span>)</span>
+ <br /><em class="fname">Class Method</em>
+ </h3>
+ </td><td align="right" valign="top"
+ >&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Factory Method for object creation</p>
+<p>Use this instead of directly initializing the class in order to make
+unit testing easier. For testing, this method can be patched to inject
+mock objects.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol-module.html b/doc/apidocs/nbxmpp.protocol-module.html
new file mode 100644
index 0000000..9a1a719
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol-module.html
@@ -0,0 +1,5651 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;protocol
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module protocol</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html">source&nbsp;code</a></span></p>
+Protocol module contains tools that are needed for processing of xmpp-related
+data structures, including jabber-objects like JID or different stanzas and
+sub- stanzas) handling routines
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.NodeProcessed-class.html" class="summary-name">NodeProcessed</a><br />
+ Exception that should be raised by handler when the handling should be
+stopped
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.StreamError-class.html" class="summary-name">StreamError</a><br />
+ Base exception class for stream errors
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.BadFormat-class.html" class="summary-name">BadFormat</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.BadNamespacePrefix-class.html" class="summary-name">BadNamespacePrefix</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Conflict-class.html" class="summary-name">Conflict</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.ConnectionTimeout-class.html" class="summary-name">ConnectionTimeout</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.HostGone-class.html" class="summary-name">HostGone</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.HostUnknown-class.html" class="summary-name">HostUnknown</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.ImproperAddressing-class.html" class="summary-name">ImproperAddressing</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.InternalServerError-class.html" class="summary-name">InternalServerError</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.InvalidFrom-class.html" class="summary-name">InvalidFrom</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.InvalidID-class.html" class="summary-name">InvalidID</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.InvalidNamespace-class.html" class="summary-name">InvalidNamespace</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.InvalidXML-class.html" class="summary-name">InvalidXML</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.NotAuthorized-class.html" class="summary-name">NotAuthorized</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.PolicyViolation-class.html" class="summary-name">PolicyViolation</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.RemoteConnectionFailed-class.html" class="summary-name">RemoteConnectionFailed</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.ResourceConstraint-class.html" class="summary-name">ResourceConstraint</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.RestrictedXML-class.html" class="summary-name">RestrictedXML</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.SeeOtherHost-class.html" class="summary-name">SeeOtherHost</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.SystemShutdown-class.html" class="summary-name">SystemShutdown</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.UndefinedCondition-class.html" class="summary-name">UndefinedCondition</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.UnsupportedEncoding-class.html" class="summary-name">UnsupportedEncoding</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.UnsupportedStanzaType-class.html" class="summary-name">UnsupportedStanzaType</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.UnsupportedVersion-class.html" class="summary-name">UnsupportedVersion</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.XMLNotWellFormed-class.html" class="summary-name">XMLNotWellFormed</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.JID-class.html" class="summary-name">JID</a><br />
+ JID can be built from string, modified, compared, serialised into string
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.BOSHBody-class.html" class="summary-name">BOSHBody</a><br />
+ &lt;body&gt; tag that wraps usual XMPP stanzas in XMPP over BOSH
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Protocol-class.html" class="summary-name">Protocol</a><br />
+ A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs
+and messages
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Message-class.html" class="summary-name">Message</a><br />
+ XMPP Message stanza - &quot;push&quot; mechanism
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Presence-class.html" class="summary-name">Presence</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Iq-class.html" class="summary-name">Iq</a><br />
+ XMPP Iq object - get/set dialog mechanism
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Hashes-class.html" class="summary-name">Hashes</a><br />
+ Hash elements for various XEPs as defined in XEP-300
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Acks-class.html" class="summary-name">Acks</a><br />
+ Acknowledgement elements for Stream Management
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.ErrorNode-class.html" class="summary-name">ErrorNode</a><br />
+ XMPP-style error element
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Error-class.html" class="summary-name">Error</a><br />
+ Used to quickly transform received stanza into error reply
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.DataField-class.html" class="summary-name">DataField</a><br />
+ This class is used in the DataForm class to describe the single data item
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.DataForm-class.html" class="summary-name">DataForm</a><br />
+ Used for manipulating dataforms in XMPP
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol-module.html#ascii_upper" class="summary-sig-name">ascii_upper</a>(<span class="summary-sig-arg">s</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ascii_upper">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol-module.html#isResultNode" class="summary-sig-name">isResultNode</a>(<span class="summary-sig-arg">node</span>)</span><br />
+ Return true if the node is a positive reply</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#isResultNode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol-module.html#isErrorNode" class="summary-sig-name">isErrorNode</a>(<span class="summary-sig-arg">node</span>)</span><br />
+ Return true if the node is a negative reply</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#isErrorNode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ACTIVITY" class="summary-name">NS_ACTIVITY</a> = <code title="'http://jabber.org/protocol/activity'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/activity</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ADDRESS" class="summary-name">NS_ADDRESS</a> = <code title="'http://jabber.org/protocol/address'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/address</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_AGENTS" class="summary-name">NS_AGENTS</a> = <code title="'jabber:iq:agents'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:agents</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_AMP" class="summary-name">NS_AMP</a> = <code title="'http://jabber.org/protocol/amp'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/amp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_AMP_ERRORS" class="summary-name">NS_AMP_ERRORS</a> = <code title="'http://jabber.org/protocol/amp#errors'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/amp#errors</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ARCHIVE" class="summary-name">NS_ARCHIVE</a> = <code title="'urn:xmpp:archive'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ARCHIVE_AUTO" class="summary-name">NS_ARCHIVE_AUTO</a> = <code title="'urn:xmpp:archive:auto'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:auto</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANAGE" class="summary-name">NS_ARCHIVE_MANAGE</a> = <code title="'urn:xmpp:archive:manage'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:manage</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANUAL" class="summary-name">NS_ARCHIVE_MANUAL</a> = <code title="'urn:xmpp:archive:manual'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:manual</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ARCHIVE_PREF" class="summary-name">NS_ARCHIVE_PREF</a> = <code title="'urn:xmpp:archive:pref'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:pref</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ATOM" class="summary-name">NS_ATOM</a> = <code title="'http://www.w3.org/2005/Atom'"><code class="variable-quote">'</code><code class="variable-string">http://www.w3.org/2005/Atom</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ATTENTION" class="summary-name">NS_ATTENTION</a> = <code title="'urn:xmpp:attention:0'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:attention:0</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_AUTH" class="summary-name">NS_AUTH</a> = <code title="'jabber:iq:auth'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:auth</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_AVATAR" class="summary-name">NS_AVATAR</a> = <code title="'http://www.xmpp.org/extensions/xep-0084.html#ns-metadata'"><code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0084.html#ns-m</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_BIND" class="summary-name">NS_BIND</a> = <code title="'urn:ietf:params:xml:ns:xmpp-bind'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-bind</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_BOB" class="summary-name">NS_BOB</a> = <code title="'urn:xmpp:bob'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:bob</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_BOOKMARKS" class="summary-name">NS_BOOKMARKS</a> = <code title="'storage:bookmarks'"><code class="variable-quote">'</code><code class="variable-string">storage:bookmarks</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_BROWSE" class="summary-name">NS_BROWSE</a> = <code title="'jabber:iq:browse'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:browse</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_BROWSING" class="summary-name">NS_BROWSING</a> = <code title="'http://jabber.org/protocol/browsing'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/browsing</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_BYTESTREAM" class="summary-name">NS_BYTESTREAM</a> = <code title="'http://jabber.org/protocol/bytestreams'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/bytestreams</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CAPS" class="summary-name">NS_CAPS</a> = <code title="'http://jabber.org/protocol/caps'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/caps</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CAPTCHA" class="summary-name">NS_CAPTCHA</a> = <code title="'urn:xmpp:captcha'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:captcha</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CARBONS" class="summary-name">NS_CARBONS</a> = <code title="'urn:xmpp:carbons:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:carbons:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CHATSTATES" class="summary-name">NS_CHATSTATES</a> = <code title="'http://jabber.org/protocol/chatstates'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/chatstates</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CHATTING" class="summary-name">NS_CHATTING</a> = <code title="'http://jabber.org/protocol/chatting'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/chatting</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CLIENT" class="summary-name">NS_CLIENT</a> = <code title="'jabber:client'"><code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CONDITIONS" class="summary-name">NS_CONDITIONS</a> = <code title="'urn:xmpp:muc:conditions:0'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:muc:conditions:0</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_COMMANDS" class="summary-name">NS_COMMANDS</a> = <code title="'http://jabber.org/protocol/commands'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/commands</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_COMPONENT_ACCEPT" class="summary-name">NS_COMPONENT_ACCEPT</a> = <code title="'jabber:component:accept'"><code class="variable-quote">'</code><code class="variable-string">jabber:component:accept</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_COMPONENT_1" class="summary-name">NS_COMPONENT_1</a> = <code title="'http://jabberd.jabberstudio.org/ns/component/1.0'"><code class="variable-quote">'</code><code class="variable-string">http://jabberd.jabberstudio.org/ns/component</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_COMPRESS" class="summary-name">NS_COMPRESS</a> = <code title="'http://jabber.org/protocol/compress'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/compress</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_CONFERENCE" class="summary-name">NS_CONFERENCE</a> = <code title="'jabber:x:conference'"><code class="variable-quote">'</code><code class="variable-string">jabber:x:conference</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DATA" class="summary-name">NS_DATA</a> = <code title="'jabber:x:data'"><code class="variable-quote">'</code><code class="variable-string">jabber:x:data</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DATA_MEDIA" class="summary-name">NS_DATA_MEDIA</a> = <code title="'urn:xmpp:media-element'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:media-element</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DELAY" class="summary-name">NS_DELAY</a> = <code title="'jabber:x:delay'"><code class="variable-quote">'</code><code class="variable-string">jabber:x:delay</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DELAY2" class="summary-name">NS_DELAY2</a> = <code title="'urn:xmpp:delay'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:delay</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DIALBACK" class="summary-name">NS_DIALBACK</a> = <code title="'jabber:server:dialback'"><code class="variable-quote">'</code><code class="variable-string">jabber:server:dialback</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DISCO" class="summary-name">NS_DISCO</a> = <code title="'http://jabber.org/protocol/disco'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/disco</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DISCO_INFO" class="summary-name">NS_DISCO_INFO</a> = <code title="'http://jabber.org/protocol/disco#info'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/disco#info</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DISCO_ITEMS" class="summary-name">NS_DISCO_ITEMS</a> = <code title="'http://jabber.org/protocol/disco#items'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/disco#items</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ENCRYPTED" class="summary-name">NS_ENCRYPTED</a> = <code title="'jabber:x:encrypted'"><code class="variable-quote">'</code><code class="variable-string">jabber:x:encrypted</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ESESSION" class="summary-name">NS_ESESSION</a> = <code title="'http://www.xmpp.org/extensions/xep-0116.html#ns'"><code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0116.html#ns</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ESESSION_INIT" class="summary-name">NS_ESESSION_INIT</a> = <code title="'http://www.xmpp.org/extensions/xep-0116.html#ns-init'"><code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0116.ht</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_EVENT" class="summary-name">NS_EVENT</a> = <code title="'jabber:x:event'"><code class="variable-quote">'</code><code class="variable-string">jabber:x:event</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_FEATURE" class="summary-name">NS_FEATURE</a> = <code title="'http://jabber.org/protocol/feature-neg'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/feature-neg</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_FILE" class="summary-name">NS_FILE</a> = <code title="'http://jabber.org/protocol/si/profile/file-transfer'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/si/profile/file-transfer</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_FORWARD" class="summary-name">NS_FORWARD</a> = <code title="'urn:xmpp:forward:0'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:forward:0</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_GAMING" class="summary-name">NS_GAMING</a> = <code title="'http://jabber.org/protocol/gaming'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/gaming</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_GATEWAY" class="summary-name">NS_GATEWAY</a> = <code title="'jabber:iq:gateway'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:gateway</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_GEOLOC" class="summary-name">NS_GEOLOC</a> = <code title="'http://jabber.org/protocol/geoloc'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/geoloc</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_GROUPCHAT" class="summary-name">NS_GROUPCHAT</a> = <code title="'gc-1.0'"><code class="variable-quote">'</code><code class="variable-string">gc-1.0</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_HTTP_AUTH" class="summary-name">NS_HTTP_AUTH</a> = <code title="'http://jabber.org/protocol/http-auth'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/http-auth</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_HTTP_BIND" class="summary-name">NS_HTTP_BIND</a> = <code title="'http://jabber.org/protocol/httpbind'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/httpbind</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_IBB" class="summary-name">NS_IBB</a> = <code title="'http://jabber.org/protocol/ibb'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/ibb</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_INVISIBLE" class="summary-name">NS_INVISIBLE</a> = <code title="'presence-invisible'"><code class="variable-quote">'</code><code class="variable-string">presence-invisible</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_IQ" class="summary-name">NS_IQ</a> = <code title="'iq'"><code class="variable-quote">'</code><code class="variable-string">iq</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE" class="summary-name">NS_JINGLE</a> = <code title="'urn:xmpp:jingle:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_ERRORS" class="summary-name">NS_JINGLE_ERRORS</a> = <code title="'urn:xmpp:jingle:errors:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:errors:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_RTP" class="summary-name">NS_JINGLE_RTP</a> = <code title="'urn:xmpp:jingle:apps:rtp:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:rtp:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_AUDIO" class="summary-name">NS_JINGLE_RTP_AUDIO</a> = <code title="'urn:xmpp:jingle:apps:rtp:audio'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:rtp:audio</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_VIDEO" class="summary-name">NS_JINGLE_RTP_VIDEO</a> = <code title="'urn:xmpp:jingle:apps:rtp:video'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:rtp:video</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_FILE_TRANSFER" class="summary-name">NS_JINGLE_FILE_TRANSFER</a> = <code title="'urn:xmpp:jingle:apps:file-transfer:3'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:file-transfer:3</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_XTLS" class="summary-name">NS_JINGLE_XTLS</a> = <code title="'urn:xmpp:jingle:security:xtls:0'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:security:xtls:0</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_RAW_UDP" class="summary-name">NS_JINGLE_RAW_UDP</a> = <code title="'urn:xmpp:jingle:transports:raw-udp:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:raw-udp:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_ICE_UDP" class="summary-name">NS_JINGLE_ICE_UDP</a> = <code title="'urn:xmpp:jingle:transports:ice-udp:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:ice-udp:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_BYTESTREAM" class="summary-name">NS_JINGLE_BYTESTREAM</a> = <code title="'urn:xmpp:jingle:transports:s5b:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:s5b:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_JINGLE_IBB" class="summary-name">NS_JINGLE_IBB</a> = <code title="'urn:xmpp:jingle:transports:ibb:1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:ibb:1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_LAST" class="summary-name">NS_LAST</a> = <code title="'jabber:iq:last'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:last</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_LOCATION" class="summary-name">NS_LOCATION</a> = <code title="'http://jabber.org/protocol/geoloc'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/geoloc</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MESSAGE" class="summary-name">NS_MESSAGE</a> = <code title="'message'"><code class="variable-quote">'</code><code class="variable-string">message</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MOOD" class="summary-name">NS_MOOD</a> = <code title="'http://jabber.org/protocol/mood'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/mood</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MUC" class="summary-name">NS_MUC</a> = <code title="'http://jabber.org/protocol/muc'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MUC_USER" class="summary-name">NS_MUC_USER</a> = <code title="'http://jabber.org/protocol/muc#user'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#user</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MUC_ADMIN" class="summary-name">NS_MUC_ADMIN</a> = <code title="'http://jabber.org/protocol/muc#admin'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#admin</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MUC_OWNER" class="summary-name">NS_MUC_OWNER</a> = <code title="'http://jabber.org/protocol/muc#owner'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#owner</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MUC_UNIQUE" class="summary-name">NS_MUC_UNIQUE</a> = <code title="'http://jabber.org/protocol/muc#unique'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#unique</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_MUC_CONFIG" class="summary-name">NS_MUC_CONFIG</a> = <code title="'http://jabber.org/protocol/muc#roomconfig'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#roomconfig</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_NICK" class="summary-name">NS_NICK</a> = <code title="'http://jabber.org/protocol/nick'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/nick</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_OFFLINE" class="summary-name">NS_OFFLINE</a> = <code title="'http://www.jabber.org/jeps/jep-0030.html'"><code class="variable-quote">'</code><code class="variable-string">http://www.jabber.org/jeps/jep-0030.html</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PHYSLOC" class="summary-name">NS_PHYSLOC</a> = <code title="'http://jabber.org/protocol/physloc'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/physloc</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PING" class="summary-name">NS_PING</a> = <code title="'urn:xmpp:ping'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:ping</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PRESENCE" class="summary-name">NS_PRESENCE</a> = <code title="'presence'"><code class="variable-quote">'</code><code class="variable-string">presence</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PRIVACY" class="summary-name">NS_PRIVACY</a> = <code title="'jabber:iq:privacy'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:privacy</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PRIVATE" class="summary-name">NS_PRIVATE</a> = <code title="'jabber:iq:private'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:private</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PROFILE" class="summary-name">NS_PROFILE</a> = <code title="'http://jabber.org/protocol/profile'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/profile</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PUBSUB" class="summary-name">NS_PUBSUB</a> = <code title="'http://jabber.org/protocol/pubsub'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PUBSUB_EVENT" class="summary-name">NS_PUBSUB_EVENT</a> = <code title="'http://jabber.org/protocol/pubsub#event'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub#event</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PUBSUB_PUBLISH_OPTIONS" class="summary-name">NS_PUBSUB_PUBLISH_OPTIONS</a> = <code title="'http://jabber.org/protocol/pubsub#publish-options'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PUBSUB_OWNER" class="summary-name">NS_PUBSUB_OWNER</a> = <code title="'http://jabber.org/protocol/pubsub#owner'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub#owner</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_REGISTER" class="summary-name">NS_REGISTER</a> = <code title="'jabber:iq:register'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:register</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ROSTER" class="summary-name">NS_ROSTER</a> = <code title="'jabber:iq:roster'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:roster</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ROSTERNOTES" class="summary-name">NS_ROSTERNOTES</a> = <code title="'storage:rosternotes'"><code class="variable-quote">'</code><code class="variable-string">storage:rosternotes</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ROSTERX" class="summary-name">NS_ROSTERX</a> = <code title="'http://jabber.org/protocol/rosterx'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/rosterx</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_ROSTER_VER" class="summary-name">NS_ROSTER_VER</a> = <code title="'urn:xmpp:features:rosterver'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:features:rosterver</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_RPC" class="summary-name">NS_RPC</a> = <code title="'jabber:iq:rpc'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:rpc</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_RSM" class="summary-name">NS_RSM</a> = <code title="'http://jabber.org/protocol/rsm'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/rsm</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SASL" class="summary-name">NS_SASL</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SECLABEL" class="summary-name">NS_SECLABEL</a> = <code title="'urn:xmpp:sec-label:0'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sec-label:0</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SECLABEL_CATALOG" class="summary-name">NS_SECLABEL_CATALOG</a> = <code title="'urn:xmpp:sec-label:catalog:2'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sec-label:catalog:2</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SEARCH" class="summary-name">NS_SEARCH</a> = <code title="'jabber:iq:search'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:search</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SERVER" class="summary-name">NS_SERVER</a> = <code title="'jabber:server'"><code class="variable-quote">'</code><code class="variable-string">jabber:server</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SESSION" class="summary-name">NS_SESSION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-session'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-session</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SI" class="summary-name">NS_SI</a> = <code title="'http://jabber.org/protocol/si'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/si</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SI_PUB" class="summary-name">NS_SI_PUB</a> = <code title="'http://jabber.org/protocol/sipub'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/sipub</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SIGNED" class="summary-name">NS_SIGNED</a> = <code title="'jabber:x:signed'"><code class="variable-quote">'</code><code class="variable-string">jabber:x:signed</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_SSN" class="summary-name">NS_SSN</a> = <code title="'urn:xmpp:ssn'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:ssn</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_STANZA_CRYPTO" class="summary-name">NS_STANZA_CRYPTO</a> = <code title="'http://www.xmpp.org/extensions/xep-0200.html#ns'"><code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0200.ht</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_STANZAS" class="summary-name">NS_STANZAS</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_STREAM" class="summary-name">NS_STREAM</a> = <code title="'http://affinix.com/jabber/stream'"><code class="variable-quote">'</code><code class="variable-string">http://affinix.com/jabber/stream</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_STREAMS" class="summary-name">NS_STREAMS</a> = <code title="'http://etherx.jabber.org/streams'"><code class="variable-quote">'</code><code class="variable-string">http://etherx.jabber.org/streams</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_TIME" class="summary-name">NS_TIME</a> = <code title="'jabber:iq:time'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:time</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_TIME_REVISED" class="summary-name">NS_TIME_REVISED</a> = <code title="'urn:xmpp:time'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:time</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_TLS" class="summary-name">NS_TLS</a> = <code title="'urn:ietf:params:xml:ns:xmpp-tls'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-tls</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_TUNE" class="summary-name">NS_TUNE</a> = <code title="'http://jabber.org/protocol/tune'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/tune</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_VACATION" class="summary-name">NS_VACATION</a> = <code title="'http://jabber.org/protocol/vacation'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/vacation</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_VCARD" class="summary-name">NS_VCARD</a> = <code title="'vcard-temp'"><code class="variable-quote">'</code><code class="variable-string">vcard-temp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_GMAILNOTIFY" class="summary-name">NS_GMAILNOTIFY</a> = <code title="'google:mail:notify'"><code class="variable-quote">'</code><code class="variable-string">google:mail:notify</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_GTALKSETTING" class="summary-name">NS_GTALKSETTING</a> = <code title="'google:setting'"><code class="variable-quote">'</code><code class="variable-string">google:setting</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_VCARD_UPDATE" class="summary-name">NS_VCARD_UPDATE</a> = <code title="'vcard-temp:x:update'"><code class="variable-quote">'</code><code class="variable-string">vcard-temp:x:update</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_VERSION" class="summary-name">NS_VERSION</a> = <code title="'jabber:iq:version'"><code class="variable-quote">'</code><code class="variable-string">jabber:iq:version</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_VIEWING" class="summary-name">NS_VIEWING</a> = <code title="'http://jabber.org/protocol/viewing'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/viewing</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_WAITINGLIST" class="summary-name">NS_WAITINGLIST</a> = <code title="'http://jabber.org/protocol/waitinglist'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/waitinglist</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_XHTML_IM" class="summary-name">NS_XHTML_IM</a> = <code title="'http://jabber.org/protocol/xhtml-im'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/xhtml-im</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_XHTML" class="summary-name">NS_XHTML</a> = <code title="'http://www.w3.org/1999/xhtml'"><code class="variable-quote">'</code><code class="variable-string">http://www.w3.org/1999/xhtml</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DATA_LAYOUT" class="summary-name">NS_DATA_LAYOUT</a> = <code title="'http://jabber.org/protocol/xdata-layout'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/xdata-layout</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_DATA_VALIDATE" class="summary-name">NS_DATA_VALIDATE</a> = <code title="'http://jabber.org/protocol/xdata-validate'"><code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/xdata-validate</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_XMPP_STREAMS" class="summary-name">NS_XMPP_STREAMS</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_RECEIPTS" class="summary-name">NS_RECEIPTS</a> = <code title="'urn:xmpp:receipts'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:receipts</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PUBKEY_PUBKEY" class="summary-name">NS_PUBKEY_PUBKEY</a> = <code title="'urn:xmpp:pubkey:2'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:pubkey:2</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PUBKEY_REVOKE" class="summary-name">NS_PUBKEY_REVOKE</a> = <code title="'urn:xmpp:revoke:2'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:revoke:2</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_PUBKEY_ATTEST" class="summary-name">NS_PUBKEY_ATTEST</a> = <code title="'urn:xmpp:attest:2'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:attest:2</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_STREAM_MGMT" class="summary-name">NS_STREAM_MGMT</a> = <code title="'urn:xmpp:sm:2'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sm:2</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_HASHES" class="summary-name">NS_HASHES</a> = <code title="'urn:xmpp:hashes:0'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hashes:0</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_HASHES_MD5" class="summary-name">NS_HASHES_MD5</a> = <code title="'urn:xmpp:hash-function-textual-names:md5'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:md5</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_HASHES_SHA1" class="summary-name">NS_HASHES_SHA1</a> = <code title="'urn:xmpp:hash-function-textual-names:sha-1'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:sha-1</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_HASHES_SHA256" class="summary-name">NS_HASHES_SHA256</a> = <code title="'urn:xmpp:hash-function-textual-names:sha-256'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:sha-256</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#NS_HASHES_SHA512" class="summary-name">NS_HASHES_SHA512</a> = <code title="'urn:xmpp:hash-function-textual-names:sha-512'"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:sha-512</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#xmpp_stream_error_conditions" class="summary-name">xmpp_stream_error_conditions</a> = <code title="'''
+bad-format -- -- -- The entity has sent XML that cannot be processed\
+.
+bad-namespace-prefix -- -- -- The entity has sent a namespace prefix\
+ that is unsupported, or has sent no namespace prefix on an element th\
+at requires such a prefix.
+conflict -- -- -- The server is closing the active stream for this e\
+ntity because a new stream has been initiated that conflicts with the \
+..."><code class="variable-quote">'</code><code class="variable-string">\nbad-format -- -- -- The en</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#xmpp_stanza_error_conditions" class="summary-name">xmpp_stanza_error_conditions</a> = <code title="'''
+bad-request -- 400 -- modify -- The sender has sent XML that is malfor\
+med or that cannot be processed.
+conflict -- 409 -- cancel -- Access cannot be granted because an exist\
+ing resource or session exists with the same name or address.
+feature-not-implemented -- 501 -- cancel -- The feature requested is n\
+ot implemented by the recipient or server and therefore cannot be proc\
+essed.
+..."><code class="variable-quote">'</code><code class="variable-string">\nbad-request -- 400 -- modify</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#sasl_error_conditions" class="summary-name">sasl_error_conditions</a> = <code title="'''
+aborted -- -- -- The receiving entity acknowledges an &lt;abort/&gt; eleme\
+nt sent by the initiating entity; sent in reply to the &lt;abort/&gt; elemen\
+t.
+incorrect-encoding -- -- -- The data provided by the initiating enti\
+ty could not be processed because the [BASE64]Josefsson, S., The Base1\
+6, Base32, and Base64 Data Encodings, July 2003. encoding is incorrect\
+ (e.g., because the encoding does not adhere to the definition in Sect\
+..."><code class="variable-quote">'</code><code class="variable-string">\naborted -- -- -- The receiving en</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#stream_exceptions" class="summary-name">stream_exceptions</a> = <code title="{'bad-format': &lt;class 'nbxmpp.protocol.BadFormat'&gt;,
+ 'bad-namespace-prefix': &lt;class 'nbxmpp.protocol.BadNamespacePrefix'&gt;,
+ 'conflict': &lt;class 'nbxmpp.protocol.Conflict'&gt;,
+ 'connection-timeout': &lt;class 'nbxmpp.protocol.ConnectionTimeout'&gt;,
+ 'host-gone': &lt;class 'nbxmpp.protocol.HostGone'&gt;,
+ 'host-unknown': &lt;class 'nbxmpp.protocol.HostUnknown'&gt;,
+ 'improper-addressing': &lt;class 'nbxmpp.protocol.ImproperAddressing'&gt;,
+ 'internal-server-error': &lt;class 'nbxmpp.protocol.InternalServerError'\
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">bad-format</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.Bad<code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERRORS" class="summary-name">ERRORS</a> = <code title="{'urn:ietf:params:xml:ns:xmpp-sasl aborted': ['',
+ '',
+ 'The receiving entity ac\
+knowledges an &lt;abort/&gt; element sent by the initiating entity; sent in \
+reply to the &lt;abort/&gt; element.'],
+ 'urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding': ['',
+ '',
+ 'The data pro\
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_BAD_REQUEST" class="summary-name">ERR_BAD_REQUEST</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas bad-request'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas bad-req</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_CONFLICT" class="summary-name">ERR_CONFLICT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas conflict'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas conflict</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED" class="summary-name">ERR_FEATURE_NOT_IMPLEMENTED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sta</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_FORBIDDEN" class="summary-name">ERR_FORBIDDEN</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas forbidden'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas forbidden</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_GONE" class="summary-name">ERR_GONE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas gone'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas gone</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_INTERNAL_SERVER_ERROR" class="summary-name">ERR_INTERNAL_SERVER_ERROR</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_ITEM_NOT_FOUND" class="summary-name">ERR_ITEM_NOT_FOUND</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas item-not-found'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas item</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_JID_MALFORMED" class="summary-name">ERR_JID_MALFORMED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas jid-m</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_NOT_ACCEPTABLE" class="summary-name">ERR_NOT_ACCEPTABLE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas not-acceptable'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_NOT_ALLOWED" class="summary-name">ERR_NOT_ALLOWED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas not-allowed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-all</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_NOT_AUTHORIZED" class="summary-name">ERR_NOT_AUTHORIZED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas not-authorized'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_PAYMENT_REQUIRED" class="summary-name">ERR_PAYMENT_REQUIRED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas payment-required'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas pa</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_RECIPIENT_UNAVAILABLE" class="summary-name">ERR_RECIPIENT_UNAVAILABLE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_REDIRECT" class="summary-name">ERR_REDIRECT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas redirect'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas redirect</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_REGISTRATION_REQUIRED" class="summary-name">ERR_REGISTRATION_REQUIRED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas registration-required'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_NOT_FOUND" class="summary-name">ERR_REMOTE_SERVER_NOT_FOUND</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sta</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_TIMEOUT" class="summary-name">ERR_REMOTE_SERVER_TIMEOUT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_RESOURCE_CONSTRAINT" class="summary-name">ERR_RESOURCE_CONSTRAINT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas resource-constraint'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_SERVICE_UNAVAILABLE" class="summary-name">ERR_SERVICE_UNAVAILABLE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas service-unavailable'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_SUBSCRIPTION_REQUIRED" class="summary-name">ERR_SUBSCRIPTION_REQUIRED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas subscription-required'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanz</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_UNDEFINED_CONDITION" class="summary-name">ERR_UNDEFINED_CONDITION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas undefined-condition'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#ERR_UNEXPECTED_REQUEST" class="summary-name">ERR_UNEXPECTED_REQUEST</a> = <code title="'urn:ietf:params:xml:ns:xmpp-stanzas unexpected-request'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas </code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#SASL_ABORTED" class="summary-name">SASL_ABORTED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl aborted'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#SASL_INCORRECT_ENCODING" class="summary-name">SASL_INCORRECT_ENCODING</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl in</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#SASL_INVALID_AUTHZID" class="summary-name">SASL_INVALID_AUTHZID</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl invalid-authzid'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl inval</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#SASL_INVALID_MECHANISM" class="summary-name">SASL_INVALID_MECHANISM</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl invalid-mechanism'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl inv</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#SASL_MECHANISM_TOO_WEAK" class="summary-name">SASL_MECHANISM_TOO_WEAK</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl mechanism-too-weak'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl me</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#SASL_NOT_AUTHORIZED" class="summary-name">SASL_NOT_AUTHORIZED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl not-authorized'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl not-au</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#SASL_TEMPORARY_AUTH_FAILURE" class="summary-name">SASL_TEMPORARY_AUTH_FAILURE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-sasl temporary-auth-failure'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sas</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_BAD_FORMAT" class="summary-name">STREAM_BAD_FORMAT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams bad-format'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams bad-f</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_BAD_NAMESPACE_PREFIX" class="summary-name">STREAM_BAD_NAMESPACE_PREFIX</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams bad-namespace-prefix'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-str</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_CONFLICT" class="summary-name">STREAM_CONFLICT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams conflict'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams conflict</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_CONNECTION_TIMEOUT" class="summary-name">STREAM_CONNECTION_TIMEOUT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams connection-timeout'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-strea</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_HOST_GONE" class="summary-name">STREAM_HOST_GONE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams host-gone'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams host-g</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_HOST_UNKNOWN" class="summary-name">STREAM_HOST_UNKNOWN</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams host-unknown'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams hos</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_IMPROPER_ADDRESSING" class="summary-name">STREAM_IMPROPER_ADDRESSING</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams improper-addressing'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_INTERNAL_SERVER_ERROR" class="summary-name">STREAM_INTERNAL_SERVER_ERROR</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams internal-server-error'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-st</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_INVALID_FROM" class="summary-name">STREAM_INVALID_FROM</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-from'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams inv</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_INVALID_ID" class="summary-name">STREAM_INVALID_ID</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-id'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams inval</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_INVALID_NAMESPACE" class="summary-name">STREAM_INVALID_NAMESPACE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-namespace'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stream</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_INVALID_XML" class="summary-name">STREAM_INVALID_XML</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams invalid-xml'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams inva</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_NOT_AUTHORIZED" class="summary-name">STREAM_NOT_AUTHORIZED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams not-authorized'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams n</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_POLICY_VIOLATION" class="summary-name">STREAM_POLICY_VIOLATION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams policy-violation'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_REMOTE_CONNECTION_FAILED" class="summary-name">STREAM_REMOTE_CONNECTION_FAILED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams remote-connection-failed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_RESOURCE_CONSTRAINT" class="summary-name">STREAM_RESOURCE_CONSTRAINT</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams resource-constraint'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_RESTRICTED_XML" class="summary-name">STREAM_RESTRICTED_XML</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams restricted-xml'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams r</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_SEE_OTHER_HOST" class="summary-name">STREAM_SEE_OTHER_HOST</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams see-other-host'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams s</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_SYSTEM_SHUTDOWN" class="summary-name">STREAM_SYSTEM_SHUTDOWN</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams system-shutdown'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams </code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_UNDEFINED_CONDITION" class="summary-name">STREAM_UNDEFINED_CONDITION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams undefined-condition'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_ENCODING" class="summary-name">STREAM_UNSUPPORTED_ENCODING</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams unsupported-encoding'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-str</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_STANZA_TYPE" class="summary-name">STREAM_UNSUPPORTED_STANZA_TYPE</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams unsupported-stanza-type'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_VERSION" class="summary-name">STREAM_UNSUPPORTED_VERSION</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams unsupported-version'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#STREAM_XML_NOT_WELL_FORMED" class="summary-name">STREAM_XML_NOT_WELL_FORMED</a> = <code title="'urn:ietf:params:xml:ns:xmpp-streams xml-not-well-formed'"><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stre</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#_errorcodes" class="summary-name" onclick="show_private();">_errorcodes</a> = <code title="{'302': 'redirect',
+ '400': 'unexpected-request',
+ '401': 'not-authorized',
+ '402': 'payment-required',
+ '403': 'forbidden',
+ '404': 'remote-server-not-found',
+ '405': 'not-allowed',
+ '406': 'not-acceptable',
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">302</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">redirect</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">400</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">unexpected-request</code><code class="variable-quote">'</code><code class="variable-op">,</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol-module.html#name" class="summary-name">name</a> = <code title="'SASL_TEMPORARY_AUTH_FAILURE'"><code class="variable-quote">'</code><code class="variable-string">SASL_TEMPORARY_AUTH_FAILURE</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <a href="nbxmpp.simplexml.Node-class.html" title="nbxmpp.simplexml.Node">Node</a>,
+ <a href="nbxmpp.simplexml.NodeBuilder-class.html" title="nbxmpp.simplexml.NodeBuilder">NodeBuilder</a>,
+ <span title="time">time</span>,
+ <span title="string">string</span>,
+ <span title="hashlib">hashlib</span>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="ascii_upper"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">ascii_upper</span>(<span class="sig-arg">s</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ascii_upper">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="isResultNode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">isResultNode</span>(<span class="sig-arg">node</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#isResultNode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return true if the node is a positive reply
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="isErrorNode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">isErrorNode</span>(<span class="sig-arg">node</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#isErrorNode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return true if the node is a negative reply
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="NS_ACTIVITY"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ACTIVITY</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/activity</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ADDRESS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ADDRESS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/address</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_AGENTS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_AGENTS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:agents</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_AMP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_AMP</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/amp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_AMP_ERRORS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_AMP_ERRORS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/amp#errors</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ARCHIVE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ARCHIVE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ARCHIVE_AUTO"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ARCHIVE_AUTO</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:auto</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ARCHIVE_MANAGE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ARCHIVE_MANAGE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:manage</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ARCHIVE_MANUAL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ARCHIVE_MANUAL</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:manual</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ARCHIVE_PREF"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ARCHIVE_PREF</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:archive:pref</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ATOM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ATOM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://www.w3.org/2005/Atom</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ATTENTION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ATTENTION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:attention:0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_AUTH"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_AUTH</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:auth</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_AVATAR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_AVATAR</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0084.html#ns-metadata</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_BIND"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_BIND</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-bind</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_BOB"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_BOB</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:bob</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_BOOKMARKS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_BOOKMARKS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">storage:bookmarks</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_BROWSE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_BROWSE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:browse</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_BROWSING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_BROWSING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/browsing</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_BYTESTREAM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_BYTESTREAM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/bytestreams</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CAPS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CAPS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/caps</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CAPTCHA"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CAPTCHA</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:captcha</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CARBONS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CARBONS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:carbons:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CHATSTATES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CHATSTATES</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/chatstates</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CHATTING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CHATTING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/chatting</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CLIENT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CLIENT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CONDITIONS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CONDITIONS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:muc:conditions:0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_COMMANDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_COMMANDS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/commands</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_COMPONENT_ACCEPT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_COMPONENT_ACCEPT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:component:accept</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_COMPONENT_1"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_COMPONENT_1</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabberd.jabberstudio.org/ns/component/1.0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_COMPRESS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_COMPRESS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/compress</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_CONFERENCE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_CONFERENCE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:x:conference</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DATA"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DATA</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:x:data</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DATA_MEDIA"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DATA_MEDIA</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:media-element</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DELAY"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DELAY</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:x:delay</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DELAY2"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DELAY2</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:delay</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DIALBACK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DIALBACK</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:server:dialback</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DISCO"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DISCO</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/disco</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DISCO_INFO"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DISCO_INFO</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/disco#info</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DISCO_ITEMS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DISCO_ITEMS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/disco#items</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ENCRYPTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ENCRYPTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:x:encrypted</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ESESSION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ESESSION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0116.html#ns</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ESESSION_INIT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ESESSION_INIT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0116.html#ns-init</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_EVENT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_EVENT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:x:event</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_FEATURE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_FEATURE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/feature-neg</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_FILE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_FILE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/si/profile/file-transfer</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_FORWARD"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_FORWARD</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:forward:0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_GAMING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_GAMING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/gaming</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_GATEWAY"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_GATEWAY</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:gateway</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_GEOLOC"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_GEOLOC</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/geoloc</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_GROUPCHAT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_GROUPCHAT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">gc-1.0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_HTTP_AUTH"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_HTTP_AUTH</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/http-auth</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_HTTP_BIND"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_HTTP_BIND</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/httpbind</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_IBB"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_IBB</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/ibb</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_INVISIBLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_INVISIBLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">presence-invisible</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_IQ"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_IQ</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">iq</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_ERRORS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_ERRORS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:errors:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_RTP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_RTP</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:rtp:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_RTP_AUDIO"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_RTP_AUDIO</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:rtp:audio</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_RTP_VIDEO"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_RTP_VIDEO</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:rtp:video</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_FILE_TRANSFER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_FILE_TRANSFER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:apps:file-transfer:3</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_XTLS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_XTLS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:security:xtls:0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_RAW_UDP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_RAW_UDP</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:raw-udp:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_ICE_UDP"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_ICE_UDP</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:ice-udp:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_BYTESTREAM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_BYTESTREAM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:s5b:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_JINGLE_IBB"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_JINGLE_IBB</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:jingle:transports:ibb:1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_LAST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_LAST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:last</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_LOCATION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_LOCATION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/geoloc</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MESSAGE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MESSAGE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">message</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MOOD"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MOOD</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/mood</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MUC"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MUC</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MUC_USER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MUC_USER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#user</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MUC_ADMIN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MUC_ADMIN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#admin</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MUC_OWNER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MUC_OWNER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#owner</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MUC_UNIQUE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MUC_UNIQUE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#unique</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_MUC_CONFIG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_MUC_CONFIG</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/muc#roomconfig</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_NICK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_NICK</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/nick</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_OFFLINE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_OFFLINE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://www.jabber.org/jeps/jep-0030.html</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PHYSLOC"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PHYSLOC</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/physloc</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:ping</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PRESENCE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PRESENCE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">presence</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PRIVACY"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PRIVACY</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:privacy</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PRIVATE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PRIVATE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:private</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PROFILE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PROFILE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/profile</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PUBSUB"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PUBSUB</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PUBSUB_EVENT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PUBSUB_EVENT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub#event</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PUBSUB_PUBLISH_OPTIONS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PUBSUB_PUBLISH_OPTIONS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub#publish-options</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PUBSUB_OWNER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PUBSUB_OWNER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/pubsub#owner</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_REGISTER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_REGISTER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:register</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ROSTER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ROSTER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:roster</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ROSTERNOTES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ROSTERNOTES</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">storage:rosternotes</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ROSTERX"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ROSTERX</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/rosterx</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_ROSTER_VER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_ROSTER_VER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:features:rosterver</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_RPC"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_RPC</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:rpc</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_RSM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_RSM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/rsm</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SASL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SASL</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SECLABEL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SECLABEL</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sec-label:0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SECLABEL_CATALOG"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SECLABEL_CATALOG</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sec-label:catalog:2</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SEARCH"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SEARCH</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:search</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SERVER"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SERVER</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:server</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SESSION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SESSION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-session</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SI"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SI</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/si</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SI_PUB"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SI_PUB</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/sipub</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SIGNED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SIGNED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:x:signed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_SSN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_SSN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:ssn</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_STANZA_CRYPTO"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_STANZA_CRYPTO</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://www.xmpp.org/extensions/xep-0200.html#ns</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_STANZAS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_STANZAS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_STREAM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_STREAM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://affinix.com/jabber/stream</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_STREAMS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_STREAMS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://etherx.jabber.org/streams</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_TIME"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_TIME</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:time</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_TIME_REVISED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_TIME_REVISED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:time</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_TLS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_TLS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-tls</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_TUNE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_TUNE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/tune</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_VACATION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_VACATION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/vacation</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_VCARD"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_VCARD</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">vcard-temp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_GMAILNOTIFY"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_GMAILNOTIFY</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">google:mail:notify</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_GTALKSETTING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_GTALKSETTING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">google:setting</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_VCARD_UPDATE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_VCARD_UPDATE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">vcard-temp:x:update</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_VERSION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_VERSION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">jabber:iq:version</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_VIEWING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_VIEWING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/viewing</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_WAITINGLIST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_WAITINGLIST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/waitinglist</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_XHTML_IM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_XHTML_IM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/xhtml-im</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_XHTML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_XHTML</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://www.w3.org/1999/xhtml</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DATA_LAYOUT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DATA_LAYOUT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/xdata-layout</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_DATA_VALIDATE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_DATA_VALIDATE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">http://jabber.org/protocol/xdata-validate</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_XMPP_STREAMS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_XMPP_STREAMS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_RECEIPTS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_RECEIPTS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:receipts</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PUBKEY_PUBKEY"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PUBKEY_PUBKEY</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:pubkey:2</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PUBKEY_REVOKE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PUBKEY_REVOKE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:revoke:2</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_PUBKEY_ATTEST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_PUBKEY_ATTEST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:attest:2</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_STREAM_MGMT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_STREAM_MGMT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sm:2</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_HASHES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_HASHES</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hashes:0</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_HASHES_MD5"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_HASHES_MD5</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:md5</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_HASHES_SHA1"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_HASHES_SHA1</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:sha-1</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_HASHES_SHA256"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_HASHES_SHA256</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:sha-256</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="NS_HASHES_SHA512"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">NS_HASHES_SHA512</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hash-function-textual-names:sha-512</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="xmpp_stream_error_conditions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">xmpp_stream_error_conditions</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">bad-format -- -- -- The entity has sent XML that cannot be processed</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">.</code>
+<code class="variable-string">bad-namespace-prefix -- -- -- The entity has sent a namespace prefix</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string"> that is unsupported, or has sent no namespace prefix on an element th</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">at requires such a prefix.</code>
+<code class="variable-string">conflict -- -- -- The server is closing the active stream for this e</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">ntity because a new stream has been initiated that conflicts with the </code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="xmpp_stanza_error_conditions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">xmpp_stanza_error_conditions</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">bad-request -- 400 -- modify -- The sender has sent XML that is malfor</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">med or that cannot be processed.</code>
+<code class="variable-string">conflict -- 409 -- cancel -- Access cannot be granted because an exist</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">ing resource or session exists with the same name or address.</code>
+<code class="variable-string">feature-not-implemented -- 501 -- cancel -- The feature requested is n</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">ot implemented by the recipient or server and therefore cannot be proc</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">essed.</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="sasl_error_conditions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">sasl_error_conditions</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'''</code><code class="variable-string"></code>
+<code class="variable-string">aborted -- -- -- The receiving entity acknowledges an &lt;abort/&gt; eleme</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">nt sent by the initiating entity; sent in reply to the &lt;abort/&gt; elemen</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">t.</code>
+<code class="variable-string">incorrect-encoding -- -- -- The data provided by the initiating enti</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">ty could not be processed because the [BASE64]Josefsson, S., The Base1</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">6, Base32, and Base64 Data Encodings, July 2003. encoding is incorrect</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string"> (e.g., because the encoding does not adhere to the definition in Sect</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="stream_exceptions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">stream_exceptions</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">bad-format</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.BadFormat'&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">bad-namespace-prefix</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.BadNamespacePrefix'&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">conflict</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.Conflict'&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">connection-timeout</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.ConnectionTimeout'&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">host-gone</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.HostGone'&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">host-unknown</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.HostUnknown'&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">improper-addressing</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.ImproperAddressing'&gt;<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">internal-server-error</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'nbxmpp.protocol.InternalServerError'<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERRORS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERRORS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">The receiving entity ac</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">knowledges an &lt;abort/&gt; element sent by the initiating entity; sent in </code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">reply to the &lt;abort/&gt; element.</code><code class="variable-quote">'</code><code class="variable-group">]</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">The data pro</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_BAD_REQUEST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_BAD_REQUEST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas bad-request</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_CONFLICT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_CONFLICT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas conflict</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_FEATURE_NOT_IMPLEMENTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_FEATURE_NOT_IMPLEMENTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_FORBIDDEN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_FORBIDDEN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas forbidden</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_GONE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_GONE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas gone</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_INTERNAL_SERVER_ERROR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_INTERNAL_SERVER_ERROR</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_ITEM_NOT_FOUND"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_ITEM_NOT_FOUND</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas item-not-found</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_JID_MALFORMED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_JID_MALFORMED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_NOT_ACCEPTABLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_NOT_ACCEPTABLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-acceptable</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_NOT_ALLOWED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_NOT_ALLOWED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-allowed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_NOT_AUTHORIZED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_NOT_AUTHORIZED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas not-authorized</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_PAYMENT_REQUIRED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_PAYMENT_REQUIRED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas payment-required</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_RECIPIENT_UNAVAILABLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_RECIPIENT_UNAVAILABLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REDIRECT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REDIRECT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas redirect</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REGISTRATION_REQUIRED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REGISTRATION_REQUIRED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas registration-required</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REMOTE_SERVER_NOT_FOUND"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REMOTE_SERVER_NOT_FOUND</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_REMOTE_SERVER_TIMEOUT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_REMOTE_SERVER_TIMEOUT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_RESOURCE_CONSTRAINT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_RESOURCE_CONSTRAINT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas resource-constraint</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_SERVICE_UNAVAILABLE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_SERVICE_UNAVAILABLE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas service-unavailable</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_SUBSCRIPTION_REQUIRED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_SUBSCRIPTION_REQUIRED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas subscription-required</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_UNDEFINED_CONDITION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_UNDEFINED_CONDITION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas undefined-condition</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ERR_UNEXPECTED_REQUEST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ERR_UNEXPECTED_REQUEST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-stanzas unexpected-request</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_ABORTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_ABORTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl aborted</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_INCORRECT_ENCODING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_INCORRECT_ENCODING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_INVALID_AUTHZID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_INVALID_AUTHZID</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl invalid-authzid</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_INVALID_MECHANISM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_INVALID_MECHANISM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl invalid-mechanism</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_MECHANISM_TOO_WEAK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_MECHANISM_TOO_WEAK</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl mechanism-too-weak</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_NOT_AUTHORIZED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_NOT_AUTHORIZED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl not-authorized</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="SASL_TEMPORARY_AUTH_FAILURE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">SASL_TEMPORARY_AUTH_FAILURE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-sasl temporary-auth-failure</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_BAD_FORMAT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_BAD_FORMAT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams bad-format</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_BAD_NAMESPACE_PREFIX"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_BAD_NAMESPACE_PREFIX</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams bad-namespace-prefix</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_CONFLICT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_CONFLICT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams conflict</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_CONNECTION_TIMEOUT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_CONNECTION_TIMEOUT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams connection-timeout</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_HOST_GONE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_HOST_GONE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams host-gone</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_HOST_UNKNOWN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_HOST_UNKNOWN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams host-unknown</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_IMPROPER_ADDRESSING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_IMPROPER_ADDRESSING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams improper-addressing</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INTERNAL_SERVER_ERROR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INTERNAL_SERVER_ERROR</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams internal-server-error</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_FROM"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_FROM</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-from</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_ID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_ID</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-id</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_NAMESPACE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_NAMESPACE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-namespace</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_INVALID_XML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_INVALID_XML</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams invalid-xml</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_NOT_AUTHORIZED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_NOT_AUTHORIZED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams not-authorized</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_POLICY_VIOLATION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_POLICY_VIOLATION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams policy-violation</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_REMOTE_CONNECTION_FAILED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_REMOTE_CONNECTION_FAILED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams remote-connection-failed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_RESOURCE_CONSTRAINT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_RESOURCE_CONSTRAINT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams resource-constraint</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_RESTRICTED_XML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_RESTRICTED_XML</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams restricted-xml</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_SEE_OTHER_HOST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_SEE_OTHER_HOST</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams see-other-host</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_SYSTEM_SHUTDOWN"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_SYSTEM_SHUTDOWN</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams system-shutdown</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNDEFINED_CONDITION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNDEFINED_CONDITION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams undefined-condition</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNSUPPORTED_ENCODING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNSUPPORTED_ENCODING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams unsupported-encoding</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNSUPPORTED_STANZA_TYPE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNSUPPORTED_STANZA_TYPE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams unsupported-stanza-type</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_UNSUPPORTED_VERSION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_UNSUPPORTED_VERSION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams unsupported-version</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STREAM_XML_NOT_WELL_FORMED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STREAM_XML_NOT_WELL_FORMED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">urn:ietf:params:xml:ns:xmpp-streams xml-not-well-formed</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_errorcodes"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">_errorcodes</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">302</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">redirect</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">400</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">unexpected-request</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">401</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">not-authorized</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">402</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">payment-required</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">403</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">forbidden</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">404</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">remote-server-not-found</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">405</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">not-allowed</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">406</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">not-acceptable</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="name"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">name</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">SASL_TEMPORARY_AUTH_FAILURE</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol-pysrc.html b/doc/apidocs/nbxmpp.protocol-pysrc.html
new file mode 100644
index 0000000..63f88db
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol-pysrc.html
@@ -0,0 +1,2183 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;protocol
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.protocol-module.html">Module nbxmpp.protocol</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## protocol.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2005 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># $Id: protocol.py,v 1.52 2006/01/09 22:08:57 normanr Exp $</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">Protocol module contains tools that are needed for processing of xmpp-related</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">data structures, including jabber-objects like JID or different stanzas and</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">sub- stanzas) handling routines</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.simplexml=nbxmpp.simplexml-module.html"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-0', 'simplexml', 'link-0');">simplexml</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-1', 'Node', 'link-1');">Node</a></tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name" targets="Class nbxmpp.simplexml.NodeBuilder=nbxmpp.simplexml.NodeBuilder-class.html"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-2', 'NodeBuilder', 'link-2');">NodeBuilder</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">string</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hashlib</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
+<a name="ascii_upper"></a><div id="ascii_upper-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="ascii_upper-toggle" onclick="return toggle('ascii_upper');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol-module.html#ascii_upper">ascii_upper</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ascii_upper-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ascii_upper-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-name">trans_table</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">maketrans</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">ascii_lowercase</tt><tt class="py-op">,</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">ascii_uppercase</tt><tt class="py-op">)</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">translate</tt><tt class="py-op">(</tt><tt class="py-name">trans_table</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable nbxmpp.protocol.NS_ACTIVITY=nbxmpp.protocol-module.html#NS_ACTIVITY"><a title="nbxmpp.protocol.NS_ACTIVITY" class="py-name" href="#" onclick="return doclink('link-3', 'NS_ACTIVITY', 'link-3');">NS_ACTIVITY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/activity'</tt> <tt class="py-comment"># XEP-0108</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable nbxmpp.protocol.NS_ADDRESS=nbxmpp.protocol-module.html#NS_ADDRESS"><a title="nbxmpp.protocol.NS_ADDRESS" class="py-name" href="#" onclick="return doclink('link-4', 'NS_ADDRESS', 'link-4');">NS_ADDRESS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/address'</tt> <tt class="py-comment"># XEP-0033</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable nbxmpp.protocol.NS_AGENTS=nbxmpp.protocol-module.html#NS_AGENTS"><a title="nbxmpp.protocol.NS_AGENTS" class="py-name" href="#" onclick="return doclink('link-5', 'NS_AGENTS', 'link-5');">NS_AGENTS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:agents'</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable nbxmpp.protocol.NS_AMP=nbxmpp.protocol-module.html#NS_AMP"><a title="nbxmpp.protocol.NS_AMP" class="py-name" href="#" onclick="return doclink('link-6', 'NS_AMP', 'link-6');">NS_AMP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/amp'</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable nbxmpp.protocol.NS_AMP_ERRORS=nbxmpp.protocol-module.html#NS_AMP_ERRORS"><a title="nbxmpp.protocol.NS_AMP_ERRORS" class="py-name" href="#" onclick="return doclink('link-7', 'NS_AMP_ERRORS', 'link-7');">NS_AMP_ERRORS</a></tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="nbxmpp.protocol.NS_AMP" class="py-name" href="#" onclick="return doclink('link-8', 'NS_AMP', 'link-6');">NS_AMP</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#errors'</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable nbxmpp.protocol.NS_ARCHIVE=nbxmpp.protocol-module.html#NS_ARCHIVE"><a title="nbxmpp.protocol.NS_ARCHIVE" class="py-name" href="#" onclick="return doclink('link-9', 'NS_ARCHIVE', 'link-9');">NS_ARCHIVE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:archive'</tt> <tt class="py-comment"># XEP-0136</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable nbxmpp.protocol.NS_ARCHIVE_AUTO=nbxmpp.protocol-module.html#NS_ARCHIVE_AUTO"><a title="nbxmpp.protocol.NS_ARCHIVE_AUTO" class="py-name" href="#" onclick="return doclink('link-10', 'NS_ARCHIVE_AUTO', 'link-10');">NS_ARCHIVE_AUTO</a></tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name"><a title="nbxmpp.protocol.NS_ARCHIVE" class="py-name" href="#" onclick="return doclink('link-11', 'NS_ARCHIVE', 'link-9');">NS_ARCHIVE</a></tt> <tt class="py-op">+</tt> <tt class="py-string">':auto'</tt> <tt class="py-comment"># XEP-0136</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable nbxmpp.protocol.NS_ARCHIVE_MANAGE=nbxmpp.protocol-module.html#NS_ARCHIVE_MANAGE"><a title="nbxmpp.protocol.NS_ARCHIVE_MANAGE" class="py-name" href="#" onclick="return doclink('link-12', 'NS_ARCHIVE_MANAGE', 'link-12');">NS_ARCHIVE_MANAGE</a></tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name"><a title="nbxmpp.protocol.NS_ARCHIVE" class="py-name" href="#" onclick="return doclink('link-13', 'NS_ARCHIVE', 'link-9');">NS_ARCHIVE</a></tt> <tt class="py-op">+</tt> <tt class="py-string">':manage'</tt> <tt class="py-comment"># XEP-0136</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable nbxmpp.protocol.NS_ARCHIVE_MANUAL=nbxmpp.protocol-module.html#NS_ARCHIVE_MANUAL"><a title="nbxmpp.protocol.NS_ARCHIVE_MANUAL" class="py-name" href="#" onclick="return doclink('link-14', 'NS_ARCHIVE_MANUAL', 'link-14');">NS_ARCHIVE_MANUAL</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="nbxmpp.protocol.NS_ARCHIVE" class="py-name" href="#" onclick="return doclink('link-15', 'NS_ARCHIVE', 'link-9');">NS_ARCHIVE</a></tt> <tt class="py-op">+</tt> <tt class="py-string">':manual'</tt> <tt class="py-comment"># XEP-0136</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable nbxmpp.protocol.NS_ARCHIVE_PREF=nbxmpp.protocol-module.html#NS_ARCHIVE_PREF"><a title="nbxmpp.protocol.NS_ARCHIVE_PREF" class="py-name" href="#" onclick="return doclink('link-16', 'NS_ARCHIVE_PREF', 'link-16');">NS_ARCHIVE_PREF</a></tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="nbxmpp.protocol.NS_ARCHIVE" class="py-name" href="#" onclick="return doclink('link-17', 'NS_ARCHIVE', 'link-9');">NS_ARCHIVE</a></tt> <tt class="py-op">+</tt> <tt class="py-string">':pref'</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable nbxmpp.protocol.NS_ATOM=nbxmpp.protocol-module.html#NS_ATOM"><a title="nbxmpp.protocol.NS_ATOM" class="py-name" href="#" onclick="return doclink('link-18', 'NS_ATOM', 'link-18');">NS_ATOM</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.w3.org/2005/Atom'</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable nbxmpp.protocol.NS_ATTENTION=nbxmpp.protocol-module.html#NS_ATTENTION"><a title="nbxmpp.protocol.NS_ATTENTION" class="py-name" href="#" onclick="return doclink('link-19', 'NS_ATTENTION', 'link-19');">NS_ATTENTION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:attention:0'</tt> <tt class="py-comment"># XEP-0224</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable nbxmpp.protocol.NS_AUTH=nbxmpp.protocol-module.html#NS_AUTH"><a title="nbxmpp.protocol.NS_AUTH" class="py-name" href="#" onclick="return doclink('link-20', 'NS_AUTH', 'link-20');">NS_AUTH</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:auth'</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt id="link-21" class="py-name" targets="Variable nbxmpp.protocol.NS_AVATAR=nbxmpp.protocol-module.html#NS_AVATAR"><a title="nbxmpp.protocol.NS_AVATAR" class="py-name" href="#" onclick="return doclink('link-21', 'NS_AVATAR', 'link-21');">NS_AVATAR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.xmpp.org/extensions/xep-0084.html#ns-metadata'</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt id="link-22" class="py-name" targets="Variable nbxmpp.protocol.NS_BIND=nbxmpp.protocol-module.html#NS_BIND"><a title="nbxmpp.protocol.NS_BIND" class="py-name" href="#" onclick="return doclink('link-22', 'NS_BIND', 'link-22');">NS_BIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:params:xml:ns:xmpp-bind'</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt id="link-23" class="py-name" targets="Variable nbxmpp.protocol.NS_BOB=nbxmpp.protocol-module.html#NS_BOB"><a title="nbxmpp.protocol.NS_BOB" class="py-name" href="#" onclick="return doclink('link-23', 'NS_BOB', 'link-23');">NS_BOB</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:bob'</tt> <tt class="py-comment"># XEP-0231</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt id="link-24" class="py-name" targets="Variable nbxmpp.protocol.NS_BOOKMARKS=nbxmpp.protocol-module.html#NS_BOOKMARKS"><a title="nbxmpp.protocol.NS_BOOKMARKS" class="py-name" href="#" onclick="return doclink('link-24', 'NS_BOOKMARKS', 'link-24');">NS_BOOKMARKS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'storage:bookmarks'</tt> <tt class="py-comment"># XEP-0048</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt id="link-25" class="py-name" targets="Variable nbxmpp.protocol.NS_BROWSE=nbxmpp.protocol-module.html#NS_BROWSE"><a title="nbxmpp.protocol.NS_BROWSE" class="py-name" href="#" onclick="return doclink('link-25', 'NS_BROWSE', 'link-25');">NS_BROWSE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:browse'</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt id="link-26" class="py-name" targets="Variable nbxmpp.protocol.NS_BROWSING=nbxmpp.protocol-module.html#NS_BROWSING"><a title="nbxmpp.protocol.NS_BROWSING" class="py-name" href="#" onclick="return doclink('link-26', 'NS_BROWSING', 'link-26');">NS_BROWSING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/browsing'</tt> <tt class="py-comment"># XEP-0195</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt id="link-27" class="py-name" targets="Variable nbxmpp.protocol.NS_BYTESTREAM=nbxmpp.protocol-module.html#NS_BYTESTREAM"><a title="nbxmpp.protocol.NS_BYTESTREAM" class="py-name" href="#" onclick="return doclink('link-27', 'NS_BYTESTREAM', 'link-27');">NS_BYTESTREAM</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/bytestreams'</tt> <tt class="py-comment"># XEP-0065</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt id="link-28" class="py-name" targets="Variable nbxmpp.protocol.NS_CAPS=nbxmpp.protocol-module.html#NS_CAPS"><a title="nbxmpp.protocol.NS_CAPS" class="py-name" href="#" onclick="return doclink('link-28', 'NS_CAPS', 'link-28');">NS_CAPS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/caps'</tt> <tt class="py-comment"># XEP-0115</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt id="link-29" class="py-name" targets="Variable nbxmpp.protocol.NS_CAPTCHA=nbxmpp.protocol-module.html#NS_CAPTCHA"><a title="nbxmpp.protocol.NS_CAPTCHA" class="py-name" href="#" onclick="return doclink('link-29', 'NS_CAPTCHA', 'link-29');">NS_CAPTCHA</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:captcha'</tt> <tt class="py-comment"># XEP-0158</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt id="link-30" class="py-name" targets="Variable nbxmpp.protocol.NS_CARBONS=nbxmpp.protocol-module.html#NS_CARBONS"><a title="nbxmpp.protocol.NS_CARBONS" class="py-name" href="#" onclick="return doclink('link-30', 'NS_CARBONS', 'link-30');">NS_CARBONS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:carbons:1'</tt> <tt class="py-comment"># XEP-0280</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt id="link-31" class="py-name" targets="Variable nbxmpp.protocol.NS_CHATSTATES=nbxmpp.protocol-module.html#NS_CHATSTATES"><a title="nbxmpp.protocol.NS_CHATSTATES" class="py-name" href="#" onclick="return doclink('link-31', 'NS_CHATSTATES', 'link-31');">NS_CHATSTATES</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/chatstates'</tt> <tt class="py-comment"># XEP-0085</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt id="link-32" class="py-name" targets="Variable nbxmpp.protocol.NS_CHATTING=nbxmpp.protocol-module.html#NS_CHATTING"><a title="nbxmpp.protocol.NS_CHATTING" class="py-name" href="#" onclick="return doclink('link-32', 'NS_CHATTING', 'link-32');">NS_CHATTING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/chatting'</tt> <tt class="py-comment"># XEP-0194</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt id="link-33" class="py-name" targets="Variable nbxmpp.protocol.NS_CLIENT=nbxmpp.protocol-module.html#NS_CLIENT"><a title="nbxmpp.protocol.NS_CLIENT" class="py-name" href="#" onclick="return doclink('link-33', 'NS_CLIENT', 'link-33');">NS_CLIENT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:client'</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt id="link-34" class="py-name" targets="Variable nbxmpp.protocol.NS_CONDITIONS=nbxmpp.protocol-module.html#NS_CONDITIONS"><a title="nbxmpp.protocol.NS_CONDITIONS" class="py-name" href="#" onclick="return doclink('link-34', 'NS_CONDITIONS', 'link-34');">NS_CONDITIONS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:muc:conditions:0'</tt> <tt class="py-comment"># XEP-0306</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt id="link-35" class="py-name" targets="Variable nbxmpp.protocol.NS_COMMANDS=nbxmpp.protocol-module.html#NS_COMMANDS"><a title="nbxmpp.protocol.NS_COMMANDS" class="py-name" href="#" onclick="return doclink('link-35', 'NS_COMMANDS', 'link-35');">NS_COMMANDS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/commands'</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt id="link-36" class="py-name" targets="Variable nbxmpp.protocol.NS_COMPONENT_ACCEPT=nbxmpp.protocol-module.html#NS_COMPONENT_ACCEPT"><a title="nbxmpp.protocol.NS_COMPONENT_ACCEPT" class="py-name" href="#" onclick="return doclink('link-36', 'NS_COMPONENT_ACCEPT', 'link-36');">NS_COMPONENT_ACCEPT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:component:accept'</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt id="link-37" class="py-name" targets="Variable nbxmpp.protocol.NS_COMPONENT_1=nbxmpp.protocol-module.html#NS_COMPONENT_1"><a title="nbxmpp.protocol.NS_COMPONENT_1" class="py-name" href="#" onclick="return doclink('link-37', 'NS_COMPONENT_1', 'link-37');">NS_COMPONENT_1</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabberd.jabberstudio.org/ns/component/1.0'</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt id="link-38" class="py-name" targets="Variable nbxmpp.protocol.NS_COMPRESS=nbxmpp.protocol-module.html#NS_COMPRESS"><a title="nbxmpp.protocol.NS_COMPRESS" class="py-name" href="#" onclick="return doclink('link-38', 'NS_COMPRESS', 'link-38');">NS_COMPRESS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/compress'</tt> <tt class="py-comment"># XEP-0138</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt id="link-39" class="py-name" targets="Variable nbxmpp.protocol.NS_CONFERENCE=nbxmpp.protocol-module.html#NS_CONFERENCE"><a title="nbxmpp.protocol.NS_CONFERENCE" class="py-name" href="#" onclick="return doclink('link-39', 'NS_CONFERENCE', 'link-39');">NS_CONFERENCE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:x:conference'</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt id="link-40" class="py-name" targets="Variable nbxmpp.protocol.NS_DATA=nbxmpp.protocol-module.html#NS_DATA"><a title="nbxmpp.protocol.NS_DATA" class="py-name" href="#" onclick="return doclink('link-40', 'NS_DATA', 'link-40');">NS_DATA</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:x:data'</tt> <tt class="py-comment"># XEP-0004</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt id="link-41" class="py-name" targets="Variable nbxmpp.protocol.NS_DATA_MEDIA=nbxmpp.protocol-module.html#NS_DATA_MEDIA"><a title="nbxmpp.protocol.NS_DATA_MEDIA" class="py-name" href="#" onclick="return doclink('link-41', 'NS_DATA_MEDIA', 'link-41');">NS_DATA_MEDIA</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:media-element'</tt> <tt class="py-comment"># XEP-0221</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt id="link-42" class="py-name" targets="Variable nbxmpp.protocol.NS_DELAY=nbxmpp.protocol-module.html#NS_DELAY"><a title="nbxmpp.protocol.NS_DELAY" class="py-name" href="#" onclick="return doclink('link-42', 'NS_DELAY', 'link-42');">NS_DELAY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:x:delay'</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt id="link-43" class="py-name" targets="Variable nbxmpp.protocol.NS_DELAY2=nbxmpp.protocol-module.html#NS_DELAY2"><a title="nbxmpp.protocol.NS_DELAY2" class="py-name" href="#" onclick="return doclink('link-43', 'NS_DELAY2', 'link-43');">NS_DELAY2</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:delay'</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt id="link-44" class="py-name" targets="Variable nbxmpp.protocol.NS_DIALBACK=nbxmpp.protocol-module.html#NS_DIALBACK"><a title="nbxmpp.protocol.NS_DIALBACK" class="py-name" href="#" onclick="return doclink('link-44', 'NS_DIALBACK', 'link-44');">NS_DIALBACK</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:server:dialback'</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt id="link-45" class="py-name" targets="Variable nbxmpp.protocol.NS_DISCO=nbxmpp.protocol-module.html#NS_DISCO"><a title="nbxmpp.protocol.NS_DISCO" class="py-name" href="#" onclick="return doclink('link-45', 'NS_DISCO', 'link-45');">NS_DISCO</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/disco'</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt id="link-46" class="py-name" targets="Variable nbxmpp.protocol.NS_DISCO_INFO=nbxmpp.protocol-module.html#NS_DISCO_INFO"><a title="nbxmpp.protocol.NS_DISCO_INFO" class="py-name" href="#" onclick="return doclink('link-46', 'NS_DISCO_INFO', 'link-46');">NS_DISCO_INFO</a></tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="nbxmpp.protocol.NS_DISCO" class="py-name" href="#" onclick="return doclink('link-47', 'NS_DISCO', 'link-45');">NS_DISCO</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#info'</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt id="link-48" class="py-name" targets="Variable nbxmpp.protocol.NS_DISCO_ITEMS=nbxmpp.protocol-module.html#NS_DISCO_ITEMS"><a title="nbxmpp.protocol.NS_DISCO_ITEMS" class="py-name" href="#" onclick="return doclink('link-48', 'NS_DISCO_ITEMS', 'link-48');">NS_DISCO_ITEMS</a></tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="nbxmpp.protocol.NS_DISCO" class="py-name" href="#" onclick="return doclink('link-49', 'NS_DISCO', 'link-45');">NS_DISCO</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#items'</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt id="link-50" class="py-name" targets="Variable nbxmpp.protocol.NS_ENCRYPTED=nbxmpp.protocol-module.html#NS_ENCRYPTED"><a title="nbxmpp.protocol.NS_ENCRYPTED" class="py-name" href="#" onclick="return doclink('link-50', 'NS_ENCRYPTED', 'link-50');">NS_ENCRYPTED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:x:encrypted'</tt> <tt class="py-comment"># XEP-0027</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt id="link-51" class="py-name" targets="Variable nbxmpp.protocol.NS_ESESSION=nbxmpp.protocol-module.html#NS_ESESSION"><a title="nbxmpp.protocol.NS_ESESSION" class="py-name" href="#" onclick="return doclink('link-51', 'NS_ESESSION', 'link-51');">NS_ESESSION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.xmpp.org/extensions/xep-0116.html#ns'</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt id="link-52" class="py-name" targets="Variable nbxmpp.protocol.NS_ESESSION_INIT=nbxmpp.protocol-module.html#NS_ESESSION_INIT"><a title="nbxmpp.protocol.NS_ESESSION_INIT" class="py-name" href="#" onclick="return doclink('link-52', 'NS_ESESSION_INIT', 'link-52');">NS_ESESSION_INIT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.xmpp.org/extensions/xep-0116.html#ns-init'</tt> <tt class="py-comment"># XEP-0116</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt id="link-53" class="py-name" targets="Variable nbxmpp.protocol.NS_EVENT=nbxmpp.protocol-module.html#NS_EVENT"><a title="nbxmpp.protocol.NS_EVENT" class="py-name" href="#" onclick="return doclink('link-53', 'NS_EVENT', 'link-53');">NS_EVENT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:x:event'</tt> <tt class="py-comment"># XEP-0022</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt id="link-54" class="py-name" targets="Variable nbxmpp.protocol.NS_FEATURE=nbxmpp.protocol-module.html#NS_FEATURE"><a title="nbxmpp.protocol.NS_FEATURE" class="py-name" href="#" onclick="return doclink('link-54', 'NS_FEATURE', 'link-54');">NS_FEATURE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/feature-neg'</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt id="link-55" class="py-name" targets="Variable nbxmpp.protocol.NS_FILE=nbxmpp.protocol-module.html#NS_FILE"><a title="nbxmpp.protocol.NS_FILE" class="py-name" href="#" onclick="return doclink('link-55', 'NS_FILE', 'link-55');">NS_FILE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/si/profile/file-transfer'</tt> <tt class="py-comment"># XEP-0096</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt id="link-56" class="py-name" targets="Variable nbxmpp.protocol.NS_FORWARD=nbxmpp.protocol-module.html#NS_FORWARD"><a title="nbxmpp.protocol.NS_FORWARD" class="py-name" href="#" onclick="return doclink('link-56', 'NS_FORWARD', 'link-56');">NS_FORWARD</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:forward:0'</tt> <tt class="py-comment"># XEP-0297</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt id="link-57" class="py-name" targets="Variable nbxmpp.protocol.NS_GAMING=nbxmpp.protocol-module.html#NS_GAMING"><a title="nbxmpp.protocol.NS_GAMING" class="py-name" href="#" onclick="return doclink('link-57', 'NS_GAMING', 'link-57');">NS_GAMING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/gaming'</tt> <tt class="py-comment"># XEP-0196</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt id="link-58" class="py-name" targets="Variable nbxmpp.protocol.NS_GATEWAY=nbxmpp.protocol-module.html#NS_GATEWAY"><a title="nbxmpp.protocol.NS_GATEWAY" class="py-name" href="#" onclick="return doclink('link-58', 'NS_GATEWAY', 'link-58');">NS_GATEWAY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:gateway'</tt> <tt class="py-comment"># XEP-0100</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt id="link-59" class="py-name" targets="Variable nbxmpp.protocol.NS_GEOLOC=nbxmpp.protocol-module.html#NS_GEOLOC"><a title="nbxmpp.protocol.NS_GEOLOC" class="py-name" href="#" onclick="return doclink('link-59', 'NS_GEOLOC', 'link-59');">NS_GEOLOC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/geoloc'</tt> <tt class="py-comment"># XEP-0080</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt id="link-60" class="py-name" targets="Variable nbxmpp.protocol.NS_GROUPCHAT=nbxmpp.protocol-module.html#NS_GROUPCHAT"><a title="nbxmpp.protocol.NS_GROUPCHAT" class="py-name" href="#" onclick="return doclink('link-60', 'NS_GROUPCHAT', 'link-60');">NS_GROUPCHAT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'gc-1.0'</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt id="link-61" class="py-name" targets="Variable nbxmpp.protocol.NS_HTTP_AUTH=nbxmpp.protocol-module.html#NS_HTTP_AUTH"><a title="nbxmpp.protocol.NS_HTTP_AUTH" class="py-name" href="#" onclick="return doclink('link-61', 'NS_HTTP_AUTH', 'link-61');">NS_HTTP_AUTH</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/http-auth'</tt> <tt class="py-comment"># XEP-0070</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt id="link-62" class="py-name" targets="Variable nbxmpp.protocol.NS_HTTP_BIND=nbxmpp.protocol-module.html#NS_HTTP_BIND"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-62', 'NS_HTTP_BIND', 'link-62');">NS_HTTP_BIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/httpbind'</tt> <tt class="py-comment"># XEP-0124</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt id="link-63" class="py-name" targets="Variable nbxmpp.protocol.NS_IBB=nbxmpp.protocol-module.html#NS_IBB"><a title="nbxmpp.protocol.NS_IBB" class="py-name" href="#" onclick="return doclink('link-63', 'NS_IBB', 'link-63');">NS_IBB</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/ibb'</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt id="link-64" class="py-name" targets="Variable nbxmpp.protocol.NS_INVISIBLE=nbxmpp.protocol-module.html#NS_INVISIBLE"><a title="nbxmpp.protocol.NS_INVISIBLE" class="py-name" href="#" onclick="return doclink('link-64', 'NS_INVISIBLE', 'link-64');">NS_INVISIBLE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'presence-invisible'</tt> <tt class="py-comment"># Jabberd2</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt id="link-65" class="py-name" targets="Variable nbxmpp.protocol.NS_IQ=nbxmpp.protocol-module.html#NS_IQ"><a title="nbxmpp.protocol.NS_IQ" class="py-name" href="#" onclick="return doclink('link-65', 'NS_IQ', 'link-65');">NS_IQ</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'iq'</tt> <tt class="py-comment"># Jabberd2</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt id="link-66" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE=nbxmpp.protocol-module.html#NS_JINGLE"><a title="nbxmpp.protocol.NS_JINGLE" class="py-name" href="#" onclick="return doclink('link-66', 'NS_JINGLE', 'link-66');">NS_JINGLE</a></tt> <tt class="py-op">=</tt><tt class="py-string">'urn:xmpp:jingle:1'</tt> <tt class="py-comment"># XEP-0166</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt id="link-67" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_ERRORS=nbxmpp.protocol-module.html#NS_JINGLE_ERRORS"><a title="nbxmpp.protocol.NS_JINGLE_ERRORS" class="py-name" href="#" onclick="return doclink('link-67', 'NS_JINGLE_ERRORS', 'link-67');">NS_JINGLE_ERRORS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:jingle:errors:1'</tt> <tt class="py-comment"># XEP-0166</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt id="link-68" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_RTP=nbxmpp.protocol-module.html#NS_JINGLE_RTP"><a title="nbxmpp.protocol.NS_JINGLE_RTP" class="py-name" href="#" onclick="return doclink('link-68', 'NS_JINGLE_RTP', 'link-68');">NS_JINGLE_RTP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:jingle:apps:rtp:1'</tt> <tt class="py-comment"># XEP-0167</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt id="link-69" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_RTP_AUDIO=nbxmpp.protocol-module.html#NS_JINGLE_RTP_AUDIO"><a title="nbxmpp.protocol.NS_JINGLE_RTP_AUDIO" class="py-name" href="#" onclick="return doclink('link-69', 'NS_JINGLE_RTP_AUDIO', 'link-69');">NS_JINGLE_RTP_AUDIO</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:jingle:apps:rtp:audio'</tt> <tt class="py-comment"># XEP-0167</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt id="link-70" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_RTP_VIDEO=nbxmpp.protocol-module.html#NS_JINGLE_RTP_VIDEO"><a title="nbxmpp.protocol.NS_JINGLE_RTP_VIDEO" class="py-name" href="#" onclick="return doclink('link-70', 'NS_JINGLE_RTP_VIDEO', 'link-70');">NS_JINGLE_RTP_VIDEO</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:jingle:apps:rtp:video'</tt> <tt class="py-comment"># XEP-0167</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt id="link-71" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_FILE_TRANSFER=nbxmpp.protocol-module.html#NS_JINGLE_FILE_TRANSFER"><a title="nbxmpp.protocol.NS_JINGLE_FILE_TRANSFER" class="py-name" href="#" onclick="return doclink('link-71', 'NS_JINGLE_FILE_TRANSFER', 'link-71');">NS_JINGLE_FILE_TRANSFER</a></tt> <tt class="py-op">=</tt><tt class="py-string">'urn:xmpp:jingle:apps:file-transfer:3'</tt> <tt class="py-comment"># XEP-0234</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt id="link-72" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_XTLS=nbxmpp.protocol-module.html#NS_JINGLE_XTLS"><a title="nbxmpp.protocol.NS_JINGLE_XTLS" class="py-name" href="#" onclick="return doclink('link-72', 'NS_JINGLE_XTLS', 'link-72');">NS_JINGLE_XTLS</a></tt><tt class="py-op">=</tt><tt class="py-string">'urn:xmpp:jingle:security:xtls:0'</tt> <tt class="py-comment"># XTLS: EXPERIMENTAL security layer of jingle</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt id="link-73" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_RAW_UDP=nbxmpp.protocol-module.html#NS_JINGLE_RAW_UDP"><a title="nbxmpp.protocol.NS_JINGLE_RAW_UDP" class="py-name" href="#" onclick="return doclink('link-73', 'NS_JINGLE_RAW_UDP', 'link-73');">NS_JINGLE_RAW_UDP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:jingle:transports:raw-udp:1'</tt> <tt class="py-comment"># XEP-0177</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt id="link-74" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_ICE_UDP=nbxmpp.protocol-module.html#NS_JINGLE_ICE_UDP"><a title="nbxmpp.protocol.NS_JINGLE_ICE_UDP" class="py-name" href="#" onclick="return doclink('link-74', 'NS_JINGLE_ICE_UDP', 'link-74');">NS_JINGLE_ICE_UDP</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:jingle:transports:ice-udp:1'</tt> <tt class="py-comment"># XEP-0176</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt id="link-75" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_BYTESTREAM=nbxmpp.protocol-module.html#NS_JINGLE_BYTESTREAM"><a title="nbxmpp.protocol.NS_JINGLE_BYTESTREAM" class="py-name" href="#" onclick="return doclink('link-75', 'NS_JINGLE_BYTESTREAM', 'link-75');">NS_JINGLE_BYTESTREAM</a></tt> <tt class="py-op">=</tt><tt class="py-string">'urn:xmpp:jingle:transports:s5b:1'</tt> <tt class="py-comment"># XEP-0260</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt id="link-76" class="py-name" targets="Variable nbxmpp.protocol.NS_JINGLE_IBB=nbxmpp.protocol-module.html#NS_JINGLE_IBB"><a title="nbxmpp.protocol.NS_JINGLE_IBB" class="py-name" href="#" onclick="return doclink('link-76', 'NS_JINGLE_IBB', 'link-76');">NS_JINGLE_IBB</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:jingle:transports:ibb:1'</tt> <tt class="py-comment"># XEP-0261</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt> <tt class="py-line"><tt id="link-77" class="py-name" targets="Variable nbxmpp.protocol.NS_LAST=nbxmpp.protocol-module.html#NS_LAST"><a title="nbxmpp.protocol.NS_LAST" class="py-name" href="#" onclick="return doclink('link-77', 'NS_LAST', 'link-77');">NS_LAST</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:last'</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt> <tt class="py-line"><tt id="link-78" class="py-name" targets="Variable nbxmpp.protocol.NS_LOCATION=nbxmpp.protocol-module.html#NS_LOCATION"><a title="nbxmpp.protocol.NS_LOCATION" class="py-name" href="#" onclick="return doclink('link-78', 'NS_LOCATION', 'link-78');">NS_LOCATION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/geoloc'</tt> <tt class="py-comment"># XEP-0080</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt> <tt class="py-line"><tt id="link-79" class="py-name" targets="Variable nbxmpp.protocol.NS_MESSAGE=nbxmpp.protocol-module.html#NS_MESSAGE"><a title="nbxmpp.protocol.NS_MESSAGE" class="py-name" href="#" onclick="return doclink('link-79', 'NS_MESSAGE', 'link-79');">NS_MESSAGE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'message'</tt> <tt class="py-comment"># Jabberd2</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt> <tt class="py-line"><tt id="link-80" class="py-name" targets="Variable nbxmpp.protocol.NS_MOOD=nbxmpp.protocol-module.html#NS_MOOD"><a title="nbxmpp.protocol.NS_MOOD" class="py-name" href="#" onclick="return doclink('link-80', 'NS_MOOD', 'link-80');">NS_MOOD</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/mood'</tt> <tt class="py-comment"># XEP-0107</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt> <tt class="py-line"><tt id="link-81" class="py-name" targets="Variable nbxmpp.protocol.NS_MUC=nbxmpp.protocol-module.html#NS_MUC"><a title="nbxmpp.protocol.NS_MUC" class="py-name" href="#" onclick="return doclink('link-81', 'NS_MUC', 'link-81');">NS_MUC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/muc'</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"><tt id="link-82" class="py-name" targets="Variable nbxmpp.protocol.NS_MUC_USER=nbxmpp.protocol-module.html#NS_MUC_USER"><a title="nbxmpp.protocol.NS_MUC_USER" class="py-name" href="#" onclick="return doclink('link-82', 'NS_MUC_USER', 'link-82');">NS_MUC_USER</a></tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="nbxmpp.protocol.NS_MUC" class="py-name" href="#" onclick="return doclink('link-83', 'NS_MUC', 'link-81');">NS_MUC</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#user'</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt> <tt class="py-line"><tt id="link-84" class="py-name" targets="Variable nbxmpp.protocol.NS_MUC_ADMIN=nbxmpp.protocol-module.html#NS_MUC_ADMIN"><a title="nbxmpp.protocol.NS_MUC_ADMIN" class="py-name" href="#" onclick="return doclink('link-84', 'NS_MUC_ADMIN', 'link-84');">NS_MUC_ADMIN</a></tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="nbxmpp.protocol.NS_MUC" class="py-name" href="#" onclick="return doclink('link-85', 'NS_MUC', 'link-81');">NS_MUC</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#admin'</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt> <tt class="py-line"><tt id="link-86" class="py-name" targets="Variable nbxmpp.protocol.NS_MUC_OWNER=nbxmpp.protocol-module.html#NS_MUC_OWNER"><a title="nbxmpp.protocol.NS_MUC_OWNER" class="py-name" href="#" onclick="return doclink('link-86', 'NS_MUC_OWNER', 'link-86');">NS_MUC_OWNER</a></tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="nbxmpp.protocol.NS_MUC" class="py-name" href="#" onclick="return doclink('link-87', 'NS_MUC', 'link-81');">NS_MUC</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#owner'</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"><tt id="link-88" class="py-name" targets="Variable nbxmpp.protocol.NS_MUC_UNIQUE=nbxmpp.protocol-module.html#NS_MUC_UNIQUE"><a title="nbxmpp.protocol.NS_MUC_UNIQUE" class="py-name" href="#" onclick="return doclink('link-88', 'NS_MUC_UNIQUE', 'link-88');">NS_MUC_UNIQUE</a></tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="nbxmpp.protocol.NS_MUC" class="py-name" href="#" onclick="return doclink('link-89', 'NS_MUC', 'link-81');">NS_MUC</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#unique'</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"><tt id="link-90" class="py-name" targets="Variable nbxmpp.protocol.NS_MUC_CONFIG=nbxmpp.protocol-module.html#NS_MUC_CONFIG"><a title="nbxmpp.protocol.NS_MUC_CONFIG" class="py-name" href="#" onclick="return doclink('link-90', 'NS_MUC_CONFIG', 'link-90');">NS_MUC_CONFIG</a></tt> <tt class="py-op">=</tt> <tt id="link-91" class="py-name"><a title="nbxmpp.protocol.NS_MUC" class="py-name" href="#" onclick="return doclink('link-91', 'NS_MUC', 'link-81');">NS_MUC</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#roomconfig'</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt> <tt class="py-line"><tt id="link-92" class="py-name" targets="Variable nbxmpp.protocol.NS_NICK=nbxmpp.protocol-module.html#NS_NICK"><a title="nbxmpp.protocol.NS_NICK" class="py-name" href="#" onclick="return doclink('link-92', 'NS_NICK', 'link-92');">NS_NICK</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/nick'</tt> <tt class="py-comment"># XEP-0172</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt> <tt class="py-line"><tt id="link-93" class="py-name" targets="Variable nbxmpp.protocol.NS_OFFLINE=nbxmpp.protocol-module.html#NS_OFFLINE"><a title="nbxmpp.protocol.NS_OFFLINE" class="py-name" href="#" onclick="return doclink('link-93', 'NS_OFFLINE', 'link-93');">NS_OFFLINE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.jabber.org/jeps/jep-0030.html'</tt> <tt class="py-comment"># XEP-0013</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt> <tt class="py-line"><tt id="link-94" class="py-name" targets="Variable nbxmpp.protocol.NS_PHYSLOC=nbxmpp.protocol-module.html#NS_PHYSLOC"><a title="nbxmpp.protocol.NS_PHYSLOC" class="py-name" href="#" onclick="return doclink('link-94', 'NS_PHYSLOC', 'link-94');">NS_PHYSLOC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/physloc'</tt> <tt class="py-comment"># XEP-0112</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt> <tt class="py-line"><tt id="link-95" class="py-name" targets="Variable nbxmpp.protocol.NS_PING=nbxmpp.protocol-module.html#NS_PING"><a title="nbxmpp.protocol.NS_PING" class="py-name" href="#" onclick="return doclink('link-95', 'NS_PING', 'link-95');">NS_PING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:ping'</tt> <tt class="py-comment"># XEP-0199</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt> <tt class="py-line"><tt id="link-96" class="py-name" targets="Variable nbxmpp.protocol.NS_PRESENCE=nbxmpp.protocol-module.html#NS_PRESENCE"><a title="nbxmpp.protocol.NS_PRESENCE" class="py-name" href="#" onclick="return doclink('link-96', 'NS_PRESENCE', 'link-96');">NS_PRESENCE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'presence'</tt> <tt class="py-comment"># Jabberd2</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt> <tt class="py-line"><tt id="link-97" class="py-name" targets="Variable nbxmpp.protocol.NS_PRIVACY=nbxmpp.protocol-module.html#NS_PRIVACY"><a title="nbxmpp.protocol.NS_PRIVACY" class="py-name" href="#" onclick="return doclink('link-97', 'NS_PRIVACY', 'link-97');">NS_PRIVACY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:privacy'</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"><tt id="link-98" class="py-name" targets="Variable nbxmpp.protocol.NS_PRIVATE=nbxmpp.protocol-module.html#NS_PRIVATE"><a title="nbxmpp.protocol.NS_PRIVATE" class="py-name" href="#" onclick="return doclink('link-98', 'NS_PRIVATE', 'link-98');">NS_PRIVATE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:private'</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt> <tt class="py-line"><tt id="link-99" class="py-name" targets="Variable nbxmpp.protocol.NS_PROFILE=nbxmpp.protocol-module.html#NS_PROFILE"><a title="nbxmpp.protocol.NS_PROFILE" class="py-name" href="#" onclick="return doclink('link-99', 'NS_PROFILE', 'link-99');">NS_PROFILE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/profile'</tt> <tt class="py-comment"># XEP-0154</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt> <tt class="py-line"><tt id="link-100" class="py-name" targets="Variable nbxmpp.protocol.NS_PUBSUB=nbxmpp.protocol-module.html#NS_PUBSUB"><a title="nbxmpp.protocol.NS_PUBSUB" class="py-name" href="#" onclick="return doclink('link-100', 'NS_PUBSUB', 'link-100');">NS_PUBSUB</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/pubsub'</tt> <tt class="py-comment"># XEP-0060</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt> <tt class="py-line"><tt id="link-101" class="py-name" targets="Variable nbxmpp.protocol.NS_PUBSUB_EVENT=nbxmpp.protocol-module.html#NS_PUBSUB_EVENT"><a title="nbxmpp.protocol.NS_PUBSUB_EVENT" class="py-name" href="#" onclick="return doclink('link-101', 'NS_PUBSUB_EVENT', 'link-101');">NS_PUBSUB_EVENT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/pubsub#event'</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt> <tt class="py-line"><tt id="link-102" class="py-name" targets="Variable nbxmpp.protocol.NS_PUBSUB_PUBLISH_OPTIONS=nbxmpp.protocol-module.html#NS_PUBSUB_PUBLISH_OPTIONS"><a title="nbxmpp.protocol.NS_PUBSUB_PUBLISH_OPTIONS" class="py-name" href="#" onclick="return doclink('link-102', 'NS_PUBSUB_PUBLISH_OPTIONS', 'link-102');">NS_PUBSUB_PUBLISH_OPTIONS</a></tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="nbxmpp.protocol.NS_PUBSUB" class="py-name" href="#" onclick="return doclink('link-103', 'NS_PUBSUB', 'link-100');">NS_PUBSUB</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'#publish-options'</tt> <tt class="py-comment"># XEP-0060</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt> <tt class="py-line"><tt id="link-104" class="py-name" targets="Variable nbxmpp.protocol.NS_PUBSUB_OWNER=nbxmpp.protocol-module.html#NS_PUBSUB_OWNER"><a title="nbxmpp.protocol.NS_PUBSUB_OWNER" class="py-name" href="#" onclick="return doclink('link-104', 'NS_PUBSUB_OWNER', 'link-104');">NS_PUBSUB_OWNER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/pubsub#owner'</tt> <tt class="py-comment"># XEP-0060</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"><tt id="link-105" class="py-name" targets="Variable nbxmpp.protocol.NS_REGISTER=nbxmpp.protocol-module.html#NS_REGISTER"><a title="nbxmpp.protocol.NS_REGISTER" class="py-name" href="#" onclick="return doclink('link-105', 'NS_REGISTER', 'link-105');">NS_REGISTER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:register'</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt> <tt class="py-line"><tt id="link-106" class="py-name" targets="Variable nbxmpp.protocol.NS_ROSTER=nbxmpp.protocol-module.html#NS_ROSTER"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-106', 'NS_ROSTER', 'link-106');">NS_ROSTER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:roster'</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt> <tt class="py-line"><tt id="link-107" class="py-name" targets="Variable nbxmpp.protocol.NS_ROSTERNOTES=nbxmpp.protocol-module.html#NS_ROSTERNOTES"><a title="nbxmpp.protocol.NS_ROSTERNOTES" class="py-name" href="#" onclick="return doclink('link-107', 'NS_ROSTERNOTES', 'link-107');">NS_ROSTERNOTES</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'storage:rosternotes'</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt> <tt class="py-line"><tt id="link-108" class="py-name" targets="Variable nbxmpp.protocol.NS_ROSTERX=nbxmpp.protocol-module.html#NS_ROSTERX"><a title="nbxmpp.protocol.NS_ROSTERX" class="py-name" href="#" onclick="return doclink('link-108', 'NS_ROSTERX', 'link-108');">NS_ROSTERX</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/rosterx'</tt> <tt class="py-comment"># XEP-0144</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt> <tt class="py-line"><tt id="link-109" class="py-name" targets="Variable nbxmpp.protocol.NS_ROSTER_VER=nbxmpp.protocol-module.html#NS_ROSTER_VER"><a title="nbxmpp.protocol.NS_ROSTER_VER" class="py-name" href="#" onclick="return doclink('link-109', 'NS_ROSTER_VER', 'link-109');">NS_ROSTER_VER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:features:rosterver'</tt> <tt class="py-comment"># XEP-0273</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt> <tt class="py-line"><tt id="link-110" class="py-name" targets="Variable nbxmpp.protocol.NS_RPC=nbxmpp.protocol-module.html#NS_RPC"><a title="nbxmpp.protocol.NS_RPC" class="py-name" href="#" onclick="return doclink('link-110', 'NS_RPC', 'link-110');">NS_RPC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:rpc'</tt> <tt class="py-comment"># XEP-0009</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"><tt id="link-111" class="py-name" targets="Variable nbxmpp.protocol.NS_RSM=nbxmpp.protocol-module.html#NS_RSM"><a title="nbxmpp.protocol.NS_RSM" class="py-name" href="#" onclick="return doclink('link-111', 'NS_RSM', 'link-111');">NS_RSM</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/rsm'</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt> <tt class="py-line"><tt id="link-112" class="py-name" targets="Variable nbxmpp.protocol.NS_SASL=nbxmpp.protocol-module.html#NS_SASL"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-112', 'NS_SASL', 'link-112');">NS_SASL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:params:xml:ns:xmpp-sasl'</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt> <tt class="py-line"><tt id="link-113" class="py-name" targets="Variable nbxmpp.protocol.NS_SECLABEL=nbxmpp.protocol-module.html#NS_SECLABEL"><a title="nbxmpp.protocol.NS_SECLABEL" class="py-name" href="#" onclick="return doclink('link-113', 'NS_SECLABEL', 'link-113');">NS_SECLABEL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:sec-label:0'</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt> <tt class="py-line"><tt id="link-114" class="py-name" targets="Variable nbxmpp.protocol.NS_SECLABEL_CATALOG=nbxmpp.protocol-module.html#NS_SECLABEL_CATALOG"><a title="nbxmpp.protocol.NS_SECLABEL_CATALOG" class="py-name" href="#" onclick="return doclink('link-114', 'NS_SECLABEL_CATALOG', 'link-114');">NS_SECLABEL_CATALOG</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:sec-label:catalog:2'</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt> <tt class="py-line"><tt id="link-115" class="py-name" targets="Variable nbxmpp.protocol.NS_SEARCH=nbxmpp.protocol-module.html#NS_SEARCH"><a title="nbxmpp.protocol.NS_SEARCH" class="py-name" href="#" onclick="return doclink('link-115', 'NS_SEARCH', 'link-115');">NS_SEARCH</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:search'</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt> <tt class="py-line"><tt id="link-116" class="py-name" targets="Variable nbxmpp.protocol.NS_SERVER=nbxmpp.protocol-module.html#NS_SERVER"><a title="nbxmpp.protocol.NS_SERVER" class="py-name" href="#" onclick="return doclink('link-116', 'NS_SERVER', 'link-116');">NS_SERVER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:server'</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt> <tt class="py-line"><tt id="link-117" class="py-name" targets="Variable nbxmpp.protocol.NS_SESSION=nbxmpp.protocol-module.html#NS_SESSION"><a title="nbxmpp.protocol.NS_SESSION" class="py-name" href="#" onclick="return doclink('link-117', 'NS_SESSION', 'link-117');">NS_SESSION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:params:xml:ns:xmpp-session'</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt> <tt class="py-line"><tt id="link-118" class="py-name" targets="Variable nbxmpp.protocol.NS_SI=nbxmpp.protocol-module.html#NS_SI"><a title="nbxmpp.protocol.NS_SI" class="py-name" href="#" onclick="return doclink('link-118', 'NS_SI', 'link-118');">NS_SI</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/si'</tt> <tt class="py-comment"># XEP-0096</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"><tt id="link-119" class="py-name" targets="Variable nbxmpp.protocol.NS_SI_PUB=nbxmpp.protocol-module.html#NS_SI_PUB"><a title="nbxmpp.protocol.NS_SI_PUB" class="py-name" href="#" onclick="return doclink('link-119', 'NS_SI_PUB', 'link-119');">NS_SI_PUB</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/sipub'</tt> <tt class="py-comment"># XEP-0137</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt> <tt class="py-line"><tt id="link-120" class="py-name" targets="Variable nbxmpp.protocol.NS_SIGNED=nbxmpp.protocol-module.html#NS_SIGNED"><a title="nbxmpp.protocol.NS_SIGNED" class="py-name" href="#" onclick="return doclink('link-120', 'NS_SIGNED', 'link-120');">NS_SIGNED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:x:signed'</tt> <tt class="py-comment"># XEP-0027</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"><tt id="link-121" class="py-name" targets="Variable nbxmpp.protocol.NS_SSN=nbxmpp.protocol-module.html#NS_SSN"><a title="nbxmpp.protocol.NS_SSN" class="py-name" href="#" onclick="return doclink('link-121', 'NS_SSN', 'link-121');">NS_SSN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:ssn'</tt> <tt class="py-comment"># XEP-0155</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt> <tt class="py-line"><tt id="link-122" class="py-name" targets="Variable nbxmpp.protocol.NS_STANZA_CRYPTO=nbxmpp.protocol-module.html#NS_STANZA_CRYPTO"><a title="nbxmpp.protocol.NS_STANZA_CRYPTO" class="py-name" href="#" onclick="return doclink('link-122', 'NS_STANZA_CRYPTO', 'link-122');">NS_STANZA_CRYPTO</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.xmpp.org/extensions/xep-0200.html#ns'</tt> <tt class="py-comment"># XEP-0200</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt> <tt class="py-line"><tt id="link-123" class="py-name" targets="Variable nbxmpp.protocol.NS_STANZAS=nbxmpp.protocol-module.html#NS_STANZAS"><a title="nbxmpp.protocol.NS_STANZAS" class="py-name" href="#" onclick="return doclink('link-123', 'NS_STANZAS', 'link-123');">NS_STANZAS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:params:xml:ns:xmpp-stanzas'</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt> <tt class="py-line"><tt id="link-124" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAM=nbxmpp.protocol-module.html#NS_STREAM"><a title="nbxmpp.protocol.NS_STREAM" class="py-name" href="#" onclick="return doclink('link-124', 'NS_STREAM', 'link-124');">NS_STREAM</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://affinix.com/jabber/stream'</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt> <tt class="py-line"><tt id="link-125" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAMS=nbxmpp.protocol-module.html#NS_STREAMS"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-125', 'NS_STREAMS', 'link-125');">NS_STREAMS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://etherx.jabber.org/streams'</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt> <tt class="py-line"><tt id="link-126" class="py-name" targets="Variable nbxmpp.protocol.NS_TIME=nbxmpp.protocol-module.html#NS_TIME"><a title="nbxmpp.protocol.NS_TIME" class="py-name" href="#" onclick="return doclink('link-126', 'NS_TIME', 'link-126');">NS_TIME</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:time'</tt> <tt class="py-comment"># XEP-0900</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt> <tt class="py-line"><tt id="link-127" class="py-name" targets="Variable nbxmpp.protocol.NS_TIME_REVISED=nbxmpp.protocol-module.html#NS_TIME_REVISED"><a title="nbxmpp.protocol.NS_TIME_REVISED" class="py-name" href="#" onclick="return doclink('link-127', 'NS_TIME_REVISED', 'link-127');">NS_TIME_REVISED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:time'</tt> <tt class="py-comment"># XEP-0202</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt> <tt class="py-line"><tt id="link-128" class="py-name" targets="Variable nbxmpp.protocol.NS_TLS=nbxmpp.protocol-module.html#NS_TLS"><a title="nbxmpp.protocol.NS_TLS" class="py-name" href="#" onclick="return doclink('link-128', 'NS_TLS', 'link-128');">NS_TLS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:params:xml:ns:xmpp-tls'</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt> <tt class="py-line"><tt id="link-129" class="py-name" targets="Variable nbxmpp.protocol.NS_TUNE=nbxmpp.protocol-module.html#NS_TUNE"><a title="nbxmpp.protocol.NS_TUNE" class="py-name" href="#" onclick="return doclink('link-129', 'NS_TUNE', 'link-129');">NS_TUNE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/tune'</tt> <tt class="py-comment"># XEP-0118</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt> <tt class="py-line"><tt id="link-130" class="py-name" targets="Variable nbxmpp.protocol.NS_VACATION=nbxmpp.protocol-module.html#NS_VACATION"><a title="nbxmpp.protocol.NS_VACATION" class="py-name" href="#" onclick="return doclink('link-130', 'NS_VACATION', 'link-130');">NS_VACATION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/vacation'</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt> <tt class="py-line"><tt id="link-131" class="py-name" targets="Variable nbxmpp.protocol.NS_VCARD=nbxmpp.protocol-module.html#NS_VCARD"><a title="nbxmpp.protocol.NS_VCARD" class="py-name" href="#" onclick="return doclink('link-131', 'NS_VCARD', 'link-131');">NS_VCARD</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'vcard-temp'</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt> <tt class="py-line"><tt id="link-132" class="py-name" targets="Variable nbxmpp.protocol.NS_GMAILNOTIFY=nbxmpp.protocol-module.html#NS_GMAILNOTIFY"><a title="nbxmpp.protocol.NS_GMAILNOTIFY" class="py-name" href="#" onclick="return doclink('link-132', 'NS_GMAILNOTIFY', 'link-132');">NS_GMAILNOTIFY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'google:mail:notify'</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt> <tt class="py-line"><tt id="link-133" class="py-name" targets="Variable nbxmpp.protocol.NS_GTALKSETTING=nbxmpp.protocol-module.html#NS_GTALKSETTING"><a title="nbxmpp.protocol.NS_GTALKSETTING" class="py-name" href="#" onclick="return doclink('link-133', 'NS_GTALKSETTING', 'link-133');">NS_GTALKSETTING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'google:setting'</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt> <tt class="py-line"><tt id="link-134" class="py-name" targets="Variable nbxmpp.protocol.NS_VCARD_UPDATE=nbxmpp.protocol-module.html#NS_VCARD_UPDATE"><a title="nbxmpp.protocol.NS_VCARD_UPDATE" class="py-name" href="#" onclick="return doclink('link-134', 'NS_VCARD_UPDATE', 'link-134');">NS_VCARD_UPDATE</a></tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="nbxmpp.protocol.NS_VCARD" class="py-name" href="#" onclick="return doclink('link-135', 'NS_VCARD', 'link-131');">NS_VCARD</a></tt> <tt class="py-op">+</tt> <tt class="py-string">':x:update'</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"><tt id="link-136" class="py-name" targets="Variable nbxmpp.protocol.NS_VERSION=nbxmpp.protocol-module.html#NS_VERSION"><a title="nbxmpp.protocol.NS_VERSION" class="py-name" href="#" onclick="return doclink('link-136', 'NS_VERSION', 'link-136');">NS_VERSION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'jabber:iq:version'</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt> <tt class="py-line"><tt id="link-137" class="py-name" targets="Variable nbxmpp.protocol.NS_VIEWING=nbxmpp.protocol-module.html#NS_VIEWING"><a title="nbxmpp.protocol.NS_VIEWING" class="py-name" href="#" onclick="return doclink('link-137', 'NS_VIEWING', 'link-137');">NS_VIEWING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/viewing'</tt> <tt class="py-comment"># XEP--197</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"><tt id="link-138" class="py-name" targets="Variable nbxmpp.protocol.NS_WAITINGLIST=nbxmpp.protocol-module.html#NS_WAITINGLIST"><a title="nbxmpp.protocol.NS_WAITINGLIST" class="py-name" href="#" onclick="return doclink('link-138', 'NS_WAITINGLIST', 'link-138');">NS_WAITINGLIST</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/waitinglist'</tt> <tt class="py-comment"># XEP-0130</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt> <tt class="py-line"><tt id="link-139" class="py-name" targets="Variable nbxmpp.protocol.NS_XHTML_IM=nbxmpp.protocol-module.html#NS_XHTML_IM"><a title="nbxmpp.protocol.NS_XHTML_IM" class="py-name" href="#" onclick="return doclink('link-139', 'NS_XHTML_IM', 'link-139');">NS_XHTML_IM</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/xhtml-im'</tt> <tt class="py-comment"># XEP-0071</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt> <tt class="py-line"><tt id="link-140" class="py-name" targets="Variable nbxmpp.protocol.NS_XHTML=nbxmpp.protocol-module.html#NS_XHTML"><a title="nbxmpp.protocol.NS_XHTML" class="py-name" href="#" onclick="return doclink('link-140', 'NS_XHTML', 'link-140');">NS_XHTML</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://www.w3.org/1999/xhtml'</tt> <tt class="py-comment"># "</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"><tt id="link-141" class="py-name" targets="Variable nbxmpp.protocol.NS_DATA_LAYOUT=nbxmpp.protocol-module.html#NS_DATA_LAYOUT"><a title="nbxmpp.protocol.NS_DATA_LAYOUT" class="py-name" href="#" onclick="return doclink('link-141', 'NS_DATA_LAYOUT', 'link-141');">NS_DATA_LAYOUT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/xdata-layout'</tt> <tt class="py-comment"># XEP-0141</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"><tt id="link-142" class="py-name" targets="Variable nbxmpp.protocol.NS_DATA_VALIDATE=nbxmpp.protocol-module.html#NS_DATA_VALIDATE"><a title="nbxmpp.protocol.NS_DATA_VALIDATE" class="py-name" href="#" onclick="return doclink('link-142', 'NS_DATA_VALIDATE', 'link-142');">NS_DATA_VALIDATE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://jabber.org/protocol/xdata-validate'</tt> <tt class="py-comment"># XEP-0122</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt> <tt class="py-line"><tt id="link-143" class="py-name" targets="Variable nbxmpp.protocol.NS_XMPP_STREAMS=nbxmpp.protocol-module.html#NS_XMPP_STREAMS"><a title="nbxmpp.protocol.NS_XMPP_STREAMS" class="py-name" href="#" onclick="return doclink('link-143', 'NS_XMPP_STREAMS', 'link-143');">NS_XMPP_STREAMS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:ietf:params:xml:ns:xmpp-streams'</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt> <tt class="py-line"><tt id="link-144" class="py-name" targets="Variable nbxmpp.protocol.NS_RECEIPTS=nbxmpp.protocol-module.html#NS_RECEIPTS"><a title="nbxmpp.protocol.NS_RECEIPTS" class="py-name" href="#" onclick="return doclink('link-144', 'NS_RECEIPTS', 'link-144');">NS_RECEIPTS</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:receipts'</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt> <tt class="py-line"><tt id="link-145" class="py-name" targets="Variable nbxmpp.protocol.NS_PUBKEY_PUBKEY=nbxmpp.protocol-module.html#NS_PUBKEY_PUBKEY"><a title="nbxmpp.protocol.NS_PUBKEY_PUBKEY" class="py-name" href="#" onclick="return doclink('link-145', 'NS_PUBKEY_PUBKEY', 'link-145');">NS_PUBKEY_PUBKEY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:pubkey:2'</tt> <tt class="py-comment"># XEP-0189</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"><tt id="link-146" class="py-name" targets="Variable nbxmpp.protocol.NS_PUBKEY_REVOKE=nbxmpp.protocol-module.html#NS_PUBKEY_REVOKE"><a title="nbxmpp.protocol.NS_PUBKEY_REVOKE" class="py-name" href="#" onclick="return doclink('link-146', 'NS_PUBKEY_REVOKE', 'link-146');">NS_PUBKEY_REVOKE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:revoke:2'</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt> <tt class="py-line"><tt id="link-147" class="py-name" targets="Variable nbxmpp.protocol.NS_PUBKEY_ATTEST=nbxmpp.protocol-module.html#NS_PUBKEY_ATTEST"><a title="nbxmpp.protocol.NS_PUBKEY_ATTEST" class="py-name" href="#" onclick="return doclink('link-147', 'NS_PUBKEY_ATTEST', 'link-147');">NS_PUBKEY_ATTEST</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:attest:2'</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt> <tt class="py-line"><tt id="link-148" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAM_MGMT=nbxmpp.protocol-module.html#NS_STREAM_MGMT"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-148', 'NS_STREAM_MGMT', 'link-148');">NS_STREAM_MGMT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:sm:2'</tt> <tt class="py-comment"># XEP-198</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"><tt id="link-149" class="py-name" targets="Variable nbxmpp.protocol.NS_HASHES=nbxmpp.protocol-module.html#NS_HASHES"><a title="nbxmpp.protocol.NS_HASHES" class="py-name" href="#" onclick="return doclink('link-149', 'NS_HASHES', 'link-149');">NS_HASHES</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:hashes:0'</tt> <tt class="py-comment"># XEP-300</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt> <tt class="py-line"><tt id="link-150" class="py-name" targets="Variable nbxmpp.protocol.NS_HASHES_MD5=nbxmpp.protocol-module.html#NS_HASHES_MD5"><a title="nbxmpp.protocol.NS_HASHES_MD5" class="py-name" href="#" onclick="return doclink('link-150', 'NS_HASHES_MD5', 'link-150');">NS_HASHES_MD5</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:hash-function-textual-names:md5'</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt> <tt class="py-line"><tt id="link-151" class="py-name" targets="Variable nbxmpp.protocol.NS_HASHES_SHA1=nbxmpp.protocol-module.html#NS_HASHES_SHA1"><a title="nbxmpp.protocol.NS_HASHES_SHA1" class="py-name" href="#" onclick="return doclink('link-151', 'NS_HASHES_SHA1', 'link-151');">NS_HASHES_SHA1</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:hash-function-textual-names:sha-1'</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"><tt id="link-152" class="py-name" targets="Variable nbxmpp.protocol.NS_HASHES_SHA256=nbxmpp.protocol-module.html#NS_HASHES_SHA256"><a title="nbxmpp.protocol.NS_HASHES_SHA256" class="py-name" href="#" onclick="return doclink('link-152', 'NS_HASHES_SHA256', 'link-152');">NS_HASHES_SHA256</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:hash-function-textual-names:sha-256'</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt> <tt class="py-line"><tt id="link-153" class="py-name" targets="Variable nbxmpp.protocol.NS_HASHES_SHA512=nbxmpp.protocol-module.html#NS_HASHES_SHA512"><a title="nbxmpp.protocol.NS_HASHES_SHA512" class="py-name" href="#" onclick="return doclink('link-153', 'NS_HASHES_SHA512', 'link-153');">NS_HASHES_SHA512</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'urn:xmpp:hash-function-textual-names:sha-512'</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"><tt id="link-154" class="py-name" targets="Variable nbxmpp.protocol.xmpp_stream_error_conditions=nbxmpp.protocol-module.html#xmpp_stream_error_conditions"><a title="nbxmpp.protocol.xmpp_stream_error_conditions" class="py-name" href="#" onclick="return doclink('link-154', 'xmpp_stream_error_conditions', 'link-154');">xmpp_stream_error_conditions</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt> <tt class="py-line"><tt class="py-string">bad-format -- -- -- The entity has sent XML that cannot be processed.</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt> <tt class="py-line"><tt class="py-string">bad-namespace-prefix -- -- -- The entity has sent a namespace prefix that is unsupported, or has sent no namespace prefix on an element that requires such a prefix.</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt> <tt class="py-line"><tt class="py-string">conflict -- -- -- The server is closing the active stream for this entity because a new stream has been initiated that conflicts with the existing stream.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt> <tt class="py-line"><tt class="py-string">connection-timeout -- -- -- The entity has not generated any traffic over the stream for some period of time.</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"><tt class="py-string">host-gone -- -- -- The value of the 'to' attribute provided by the initiating entity in the stream header corresponds to a hostname that is no longer hosted by the server.</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt> <tt class="py-line"><tt class="py-string">host-unknown -- -- -- The value of the 'to' attribute provided by the initiating entity in the stream header does not correspond to a hostname that is hosted by the server.</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"><tt class="py-string">improper-addressing -- -- -- A stanza sent between two servers lacks a 'to' or 'from' attribute (or the attribute has no value).</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"><tt class="py-string">internal-server-error -- -- -- The server has experienced a misconfiguration or an otherwise-undefined internal error that prevents it from servicing the stream.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt> <tt class="py-line"><tt class="py-string">invalid-from -- cancel -- -- The JID or hostname provided in a 'from' address does not match an authorized JID or validated domain negotiated between servers via SASL or dialback, or between a client and a server via authentication and resource authorization.</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"><tt class="py-string">invalid-id -- -- -- The stream ID or dialback ID is invalid or does not match an ID previously provided.</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt> <tt class="py-line"><tt class="py-string">invalid-namespace -- -- -- The streams namespace name is something other than "http://etherx.jabber.org/streams" or the dialback namespace name is something other than "jabber:server:dialback".</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"><tt class="py-string">invalid-xml -- -- -- The entity has sent invalid XML over the stream to a server that performs validation.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt> <tt class="py-line"><tt class="py-string">not-authorized -- -- -- The entity has attempted to send data before the stream has been authenticated, or otherwise is not authorized to perform an action related to stream negotiation.</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt> <tt class="py-line"><tt class="py-string">policy-violation -- -- -- The entity has violated some local service policy.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt> <tt class="py-line"><tt class="py-string">remote-connection-failed -- -- -- The server is unable to properly connect to a remote resource that is required for authentication or authorization.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt> <tt class="py-line"><tt class="py-string">resource-constraint -- -- -- The server lacks the system resources necessary to service the stream.</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt> <tt class="py-line"><tt class="py-string">restricted-xml -- -- -- The entity has attempted to send restricted XML features such as a comment, processing instruction, DTD, entity reference, or unescaped character.</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"><tt class="py-string">see-other-host -- -- -- The server will not provide service to the initiating entity but is redirecting traffic to another host.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"><tt class="py-string">system-shutdown -- -- -- The server is being shut down and all active streams are being closed.</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"><tt class="py-string">undefined-condition -- -- -- The error condition is not one of those defined by the other conditions in this list.</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt> <tt class="py-line"><tt class="py-string">unsupported-encoding -- -- -- The initiating entity has encoded the stream in an encoding that is not supported by the server.</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt> <tt class="py-line"><tt class="py-string">unsupported-stanza-type -- -- -- The initiating entity has sent a first-level child of the stream that is not supported by the server.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt> <tt class="py-line"><tt class="py-string">unsupported-version -- -- -- The value of the 'version' attribute provided by the initiating entity in the stream header specifies a version of XMPP that is not supported by the server.</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"><tt class="py-string">xml-not-well-formed -- -- -- The initiating entity has sent XML that is not well-formed.'''</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt> <tt class="py-line"> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt> <tt class="py-line"><tt id="link-155" class="py-name" targets="Variable nbxmpp.protocol.xmpp_stanza_error_conditions=nbxmpp.protocol-module.html#xmpp_stanza_error_conditions"><a title="nbxmpp.protocol.xmpp_stanza_error_conditions" class="py-name" href="#" onclick="return doclink('link-155', 'xmpp_stanza_error_conditions', 'link-155');">xmpp_stanza_error_conditions</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"><tt class="py-string">bad-request -- 400 -- modify -- The sender has sent XML that is malformed or that cannot be processed.</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"><tt class="py-string">conflict -- 409 -- cancel -- Access cannot be granted because an existing resource or session exists with the same name or address.</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"><tt class="py-string">feature-not-implemented -- 501 -- cancel -- The feature requested is not implemented by the recipient or server and therefore cannot be processed.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt> <tt class="py-line"><tt class="py-string">forbidden -- 403 -- auth -- The requesting entity does not possess the required permissions to perform the action.</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"><tt class="py-string">gone -- 302 -- modify -- The recipient or server can no longer be contacted at this address.</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"><tt class="py-string">internal-server-error -- 500 -- wait -- The server could not process the stanza because of a misconfiguration or an otherwise-undefined internal server error.</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"><tt class="py-string">item-not-found -- 404 -- cancel -- The addressed JID or item requested cannot be found.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"><tt class="py-string">jid-malformed -- 400 -- modify -- The value of the 'to' attribute in the sender's stanza does not adhere to the syntax defined in Addressing Scheme.</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"><tt class="py-string">not-acceptable -- 406 -- cancel -- The recipient or server understands the request but is refusing to process it because it does not meet criteria defined by the recipient or server.</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"><tt class="py-string">not-allowed -- 405 -- cancel -- The recipient or server does not allow any entity to perform the action.</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"><tt class="py-string">not-authorized -- 401 -- auth -- The sender must provide proper credentials before being allowed to perform the action, or has provided improper credentials.</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"><tt class="py-string">payment-required -- 402 -- auth -- The requesting entity is not authorized to access the requested service because payment is required.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"><tt class="py-string">recipient-unavailable -- 404 -- wait -- The intended recipient is temporarily unavailable.</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"><tt class="py-string">redirect -- 302 -- modify -- The recipient or server is redirecting requests for this information to another entity.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"><tt class="py-string">registration-required -- 407 -- auth -- The requesting entity is not authorized to access the requested service because registration is required.</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"><tt class="py-string">remote-server-not-found -- 404 -- cancel -- A remote server or service specified as part or all of the JID of the intended recipient does not exist.</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt> <tt class="py-line"><tt class="py-string">remote-server-timeout -- 504 -- wait -- A remote server or service specified as part or all of the JID of the intended recipient could not be contacted within a reasonable amount of time.</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"><tt class="py-string">resource-constraint -- 500 -- wait -- The server or recipient lacks the system resources necessary to service the request.</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"><tt class="py-string">service-unavailable -- 503 -- cancel -- The server or recipient does not currently provide the requested service.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"><tt class="py-string">subscription-required -- 407 -- auth -- The requesting entity is not authorized to access the requested service because a subscription is required.</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"><tt class="py-string">undefined-condition -- 500 -- -- Undefined Condition</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"><tt class="py-string">unexpected-request -- 400 -- wait -- The recipient or server understood the request but was not expecting it at this time (e.g., the request was out of order).'''</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"><tt id="link-156" class="py-name" targets="Variable nbxmpp.protocol.sasl_error_conditions=nbxmpp.protocol-module.html#sasl_error_conditions"><a title="nbxmpp.protocol.sasl_error_conditions" class="py-name" href="#" onclick="return doclink('link-156', 'sasl_error_conditions', 'link-156');">sasl_error_conditions</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"><tt class="py-string">aborted -- -- -- The receiving entity acknowledges an &lt;abort/&gt; element sent by the initiating entity; sent in reply to the &lt;abort/&gt; element.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"><tt class="py-string">incorrect-encoding -- -- -- The data provided by the initiating entity could not be processed because the [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003. encoding is incorrect (e.g., because the encoding does not adhere to the definition in Section 3 of [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003.); sent in reply to a &lt;response/&gt; element or an &lt;auth/&gt; element with initial response data.</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"><tt class="py-string">invalid-authzid -- -- -- The authzid provided by the initiating entity is invalid, either because it is incorrectly formatted or because the initiating entity does not have permissions to authorize that ID; sent in reply to a &lt;response/&gt; element or an &lt;auth/&gt; element with initial response data.</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"><tt class="py-string">invalid-mechanism -- -- -- The initiating entity did not provide a mechanism or requested a mechanism that is not supported by the receiving entity; sent in reply to an &lt;auth/&gt; element.</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"><tt class="py-string">mechanism-too-weak -- -- -- The mechanism requested by the initiating entity is weaker than server policy permits for that initiating entity; sent in reply to a &lt;response/&gt; element or an &lt;auth/&gt; element with initial response data.</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"><tt class="py-string">not-authorized -- -- -- The authentication failed because the initiating entity did not provide valid credentials (this includes but is not limited to the case of an unknown username); sent in reply to a &lt;response/&gt; element or an &lt;auth/&gt; element with initial response data.</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"><tt class="py-string">temporary-auth-failure -- -- -- The authentication failed because of a temporary error condition within the receiving entity; sent in reply to an &lt;auth/&gt; element or &lt;response/&gt; element.'''</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"><tt id="link-157" class="py-name" targets="Variable nbxmpp.ERRORS=nbxmpp-module.html#ERRORS,Variable nbxmpp.protocol.ERRORS=nbxmpp.protocol-module.html#ERRORS"><a title="nbxmpp.ERRORS
+nbxmpp.protocol.ERRORS" class="py-name" href="#" onclick="return doclink('link-157', 'ERRORS', 'link-157');">ERRORS</a></tt><tt class="py-op">,</tt> <tt id="link-158" class="py-name" targets="Variable nbxmpp.protocol._errorcodes=nbxmpp.protocol-module.html#_errorcodes"><a title="nbxmpp.protocol._errorcodes" class="py-name" href="#" onclick="return doclink('link-158', '_errorcodes', 'link-158');">_errorcodes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"><tt class="py-keyword">for</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">errname</tt><tt class="py-op">,</tt> <tt class="py-name">errpool</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-159" class="py-name"><a title="nbxmpp.protocol.NS_XMPP_STREAMS" class="py-name" href="#" onclick="return doclink('link-159', 'NS_XMPP_STREAMS', 'link-143');">NS_XMPP_STREAMS</a></tt><tt class="py-op">,</tt> <tt class="py-string">'STREAM'</tt><tt class="py-op">,</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"><tt id="link-160" class="py-name"><a title="nbxmpp.protocol.xmpp_stream_error_conditions" class="py-name" href="#" onclick="return doclink('link-160', 'xmpp_stream_error_conditions', 'link-154');">xmpp_stream_error_conditions</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-161" class="py-name"><a title="nbxmpp.protocol.NS_STANZAS" class="py-name" href="#" onclick="return doclink('link-161', 'NS_STANZAS', 'link-123');">NS_STANZAS</a></tt><tt class="py-op">,</tt> <tt class="py-string">'ERR'</tt><tt class="py-op">,</tt> <tt id="link-162" class="py-name"><a title="nbxmpp.protocol.xmpp_stanza_error_conditions" class="py-name" href="#" onclick="return doclink('link-162', 'xmpp_stanza_error_conditions', 'link-155');">xmpp_stanza_error_conditions</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"><tt class="py-op">(</tt><tt id="link-163" class="py-name"><a title="nbxmpp.protocol.NS_SASL" class="py-name" href="#" onclick="return doclink('link-163', 'NS_SASL', 'link-112');">NS_SASL</a></tt><tt class="py-op">,</tt> <tt class="py-string">'SASL'</tt><tt class="py-op">,</tt> <tt id="link-164" class="py-name"><a title="nbxmpp.protocol.sasl_error_conditions" class="py-name" href="#" onclick="return doclink('link-164', 'sasl_error_conditions', 'link-156');">sasl_error_conditions</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">err</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errpool</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"> <tt class="py-name">cond</tt><tt class="py-op">,</tt> <tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">err</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' -- '</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"> <tt id="link-165" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-165', 'name', 'link-165');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">errname</tt> <tt class="py-op">+</tt> <tt class="py-string">'_'</tt> <tt class="py-op">+</tt> <tt id="link-166" class="py-name" targets="Function nbxmpp.protocol.ascii_upper()=nbxmpp.protocol-module.html#ascii_upper"><a title="nbxmpp.protocol.ascii_upper" class="py-name" href="#" onclick="return doclink('link-166', 'ascii_upper', 'link-166');">ascii_upper</a></tt><tt class="py-op">(</tt><tt class="py-name">cond</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">,</tt> <tt class="py-string">'_'</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt id="link-167" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-167', 'name', 'link-165');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">ns</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">cond</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"> <tt id="link-168" class="py-name"><a title="nbxmpp.ERRORS
+nbxmpp.protocol.ERRORS" class="py-name" href="#" onclick="return doclink('link-168', 'ERRORS', 'link-157');">ERRORS</a></tt><tt class="py-op">[</tt><tt class="py-name">ns</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">cond</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">]</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">code</tt><tt class="py-op">:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"> <tt id="link-169" class="py-name"><a title="nbxmpp.protocol._errorcodes" class="py-name" href="#" onclick="return doclink('link-169', '_errorcodes', 'link-158');">_errorcodes</a></tt><tt class="py-op">[</tt><tt class="py-name">code</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cond</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt> <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">errname</tt><tt class="py-op">,</tt> <tt class="py-name">errpool</tt><tt class="py-op">,</tt> <tt class="py-name">err</tt><tt class="py-op">,</tt> <tt class="py-name">cond</tt><tt class="py-op">,</tt> <tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"> </tt>
+<a name="isResultNode"></a><div id="isResultNode-def"><a name="L243"></a><tt class="py-lineno"> 243</tt> <a class="py-toggle" href="#" id="isResultNode-toggle" onclick="return toggle('isResultNode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol-module.html#isResultNode">isResultNode</a><tt class="py-op">(</tt><tt class="py-param">node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="isResultNode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="isResultNode-expanded"><a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"><tt class="py-docstring"> Return true if the node is a positive reply</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">node</tt> <tt class="py-keyword">and</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Method nbxmpp.protocol.DataField.getType()=nbxmpp.protocol.DataField-class.html#getType,Method nbxmpp.protocol.DataForm.getType()=nbxmpp.protocol.DataForm-class.html#getType,Method nbxmpp.protocol.Protocol.getType()=nbxmpp.protocol.Protocol-class.html#getType"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-170', 'getType', 'link-170');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'result'</tt> </tt>
+</div><a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"> </tt>
+<a name="isErrorNode"></a><div id="isErrorNode-def"><a name="L249"></a><tt class="py-lineno"> 249</tt> <a class="py-toggle" href="#" id="isErrorNode-toggle" onclick="return toggle('isErrorNode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol-module.html#isErrorNode">isErrorNode</a><tt class="py-op">(</tt><tt class="py-param">node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="isErrorNode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="isErrorNode-expanded"><a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"><tt class="py-docstring"> Return true if the node is a negative reply</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">node</tt> <tt class="py-keyword">and</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-171', 'getType', 'link-170');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'error'</tt> </tt>
+</div><a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"> </tt>
+<a name="NodeProcessed"></a><div id="NodeProcessed-def"><a name="L255"></a><tt class="py-lineno"> 255</tt> <a class="py-toggle" href="#" id="NodeProcessed-toggle" onclick="return toggle('NodeProcessed');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.NodeProcessed-class.html">NodeProcessed</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeProcessed-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="NodeProcessed-expanded"><a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"><tt class="py-docstring"> Exception that should be raised by handler when the handling should be</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"><tt class="py-docstring"> stopped</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"> </tt>
+<a name="StreamError"></a><div id="StreamError-def"><a name="L262"></a><tt class="py-lineno"> 262</tt> <a class="py-toggle" href="#" id="StreamError-toggle" onclick="return toggle('StreamError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.StreamError-class.html">StreamError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StreamError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="StreamError-expanded"><a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"><tt class="py-docstring"> Base exception class for stream errors</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"> </tt>
+<a name="BadFormat"></a><div id="BadFormat-def"><a name="L268"></a><tt class="py-lineno"> 268</tt> <a class="py-toggle" href="#" id="BadFormat-toggle" onclick="return toggle('BadFormat');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.BadFormat-class.html">BadFormat</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BadFormat-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BadFormat-expanded"><a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"> </tt>
+<a name="BadNamespacePrefix"></a><div id="BadNamespacePrefix-def"><a name="L271"></a><tt class="py-lineno"> 271</tt> <a class="py-toggle" href="#" id="BadNamespacePrefix-toggle" onclick="return toggle('BadNamespacePrefix');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.BadNamespacePrefix-class.html">BadNamespacePrefix</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BadNamespacePrefix-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BadNamespacePrefix-expanded"><a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"> </tt>
+<a name="Conflict"></a><div id="Conflict-def"><a name="L274"></a><tt class="py-lineno"> 274</tt> <a class="py-toggle" href="#" id="Conflict-toggle" onclick="return toggle('Conflict');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Conflict-class.html">Conflict</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Conflict-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Conflict-expanded"><a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"> </tt>
+<a name="ConnectionTimeout"></a><div id="ConnectionTimeout-def"><a name="L277"></a><tt class="py-lineno"> 277</tt> <a class="py-toggle" href="#" id="ConnectionTimeout-toggle" onclick="return toggle('ConnectionTimeout');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.ConnectionTimeout-class.html">ConnectionTimeout</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ConnectionTimeout-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ConnectionTimeout-expanded"><a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> </tt>
+<a name="HostGone"></a><div id="HostGone-def"><a name="L280"></a><tt class="py-lineno"> 280</tt> <a class="py-toggle" href="#" id="HostGone-toggle" onclick="return toggle('HostGone');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.HostGone-class.html">HostGone</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HostGone-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HostGone-expanded"><a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"> </tt>
+<a name="HostUnknown"></a><div id="HostUnknown-def"><a name="L283"></a><tt class="py-lineno"> 283</tt> <a class="py-toggle" href="#" id="HostUnknown-toggle" onclick="return toggle('HostUnknown');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.HostUnknown-class.html">HostUnknown</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HostUnknown-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HostUnknown-expanded"><a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"> </tt>
+<a name="ImproperAddressing"></a><div id="ImproperAddressing-def"><a name="L286"></a><tt class="py-lineno"> 286</tt> <a class="py-toggle" href="#" id="ImproperAddressing-toggle" onclick="return toggle('ImproperAddressing');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.ImproperAddressing-class.html">ImproperAddressing</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ImproperAddressing-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ImproperAddressing-expanded"><a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"> </tt>
+<a name="InternalServerError"></a><div id="InternalServerError-def"><a name="L289"></a><tt class="py-lineno"> 289</tt> <a class="py-toggle" href="#" id="InternalServerError-toggle" onclick="return toggle('InternalServerError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.InternalServerError-class.html">InternalServerError</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InternalServerError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="InternalServerError-expanded"><a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"> </tt>
+<a name="InvalidFrom"></a><div id="InvalidFrom-def"><a name="L292"></a><tt class="py-lineno"> 292</tt> <a class="py-toggle" href="#" id="InvalidFrom-toggle" onclick="return toggle('InvalidFrom');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.InvalidFrom-class.html">InvalidFrom</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidFrom-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="InvalidFrom-expanded"><a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"> </tt>
+<a name="InvalidID"></a><div id="InvalidID-def"><a name="L295"></a><tt class="py-lineno"> 295</tt> <a class="py-toggle" href="#" id="InvalidID-toggle" onclick="return toggle('InvalidID');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.InvalidID-class.html">InvalidID</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidID-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="InvalidID-expanded"><a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> </tt>
+<a name="InvalidNamespace"></a><div id="InvalidNamespace-def"><a name="L298"></a><tt class="py-lineno"> 298</tt> <a class="py-toggle" href="#" id="InvalidNamespace-toggle" onclick="return toggle('InvalidNamespace');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.InvalidNamespace-class.html">InvalidNamespace</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidNamespace-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="InvalidNamespace-expanded"><a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"> </tt>
+<a name="InvalidXML"></a><div id="InvalidXML-def"><a name="L301"></a><tt class="py-lineno"> 301</tt> <a class="py-toggle" href="#" id="InvalidXML-toggle" onclick="return toggle('InvalidXML');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.InvalidXML-class.html">InvalidXML</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidXML-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="InvalidXML-expanded"><a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"> </tt>
+<a name="NotAuthorized"></a><div id="NotAuthorized-def"><a name="L304"></a><tt class="py-lineno"> 304</tt> <a class="py-toggle" href="#" id="NotAuthorized-toggle" onclick="return toggle('NotAuthorized');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.NotAuthorized-class.html">NotAuthorized</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NotAuthorized-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="NotAuthorized-expanded"><a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"> </tt>
+<a name="PolicyViolation"></a><div id="PolicyViolation-def"><a name="L307"></a><tt class="py-lineno"> 307</tt> <a class="py-toggle" href="#" id="PolicyViolation-toggle" onclick="return toggle('PolicyViolation');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.PolicyViolation-class.html">PolicyViolation</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PolicyViolation-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="PolicyViolation-expanded"><a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"> </tt>
+<a name="RemoteConnectionFailed"></a><div id="RemoteConnectionFailed-def"><a name="L310"></a><tt class="py-lineno"> 310</tt> <a class="py-toggle" href="#" id="RemoteConnectionFailed-toggle" onclick="return toggle('RemoteConnectionFailed');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.RemoteConnectionFailed-class.html">RemoteConnectionFailed</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RemoteConnectionFailed-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RemoteConnectionFailed-expanded"><a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> </tt>
+<a name="ResourceConstraint"></a><div id="ResourceConstraint-def"><a name="L313"></a><tt class="py-lineno"> 313</tt> <a class="py-toggle" href="#" id="ResourceConstraint-toggle" onclick="return toggle('ResourceConstraint');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.ResourceConstraint-class.html">ResourceConstraint</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ResourceConstraint-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ResourceConstraint-expanded"><a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> </tt>
+<a name="RestrictedXML"></a><div id="RestrictedXML-def"><a name="L316"></a><tt class="py-lineno"> 316</tt> <a class="py-toggle" href="#" id="RestrictedXML-toggle" onclick="return toggle('RestrictedXML');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.RestrictedXML-class.html">RestrictedXML</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RestrictedXML-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RestrictedXML-expanded"><a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"> </tt>
+<a name="SeeOtherHost"></a><div id="SeeOtherHost-def"><a name="L319"></a><tt class="py-lineno"> 319</tt> <a class="py-toggle" href="#" id="SeeOtherHost-toggle" onclick="return toggle('SeeOtherHost');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.SeeOtherHost-class.html">SeeOtherHost</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SeeOtherHost-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SeeOtherHost-expanded"><a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"> </tt>
+<a name="SystemShutdown"></a><div id="SystemShutdown-def"><a name="L322"></a><tt class="py-lineno"> 322</tt> <a class="py-toggle" href="#" id="SystemShutdown-toggle" onclick="return toggle('SystemShutdown');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.SystemShutdown-class.html">SystemShutdown</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SystemShutdown-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SystemShutdown-expanded"><a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"> </tt>
+<a name="UndefinedCondition"></a><div id="UndefinedCondition-def"><a name="L325"></a><tt class="py-lineno"> 325</tt> <a class="py-toggle" href="#" id="UndefinedCondition-toggle" onclick="return toggle('UndefinedCondition');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.UndefinedCondition-class.html">UndefinedCondition</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UndefinedCondition-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UndefinedCondition-expanded"><a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"> </tt>
+<a name="UnsupportedEncoding"></a><div id="UnsupportedEncoding-def"><a name="L328"></a><tt class="py-lineno"> 328</tt> <a class="py-toggle" href="#" id="UnsupportedEncoding-toggle" onclick="return toggle('UnsupportedEncoding');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.UnsupportedEncoding-class.html">UnsupportedEncoding</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnsupportedEncoding-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UnsupportedEncoding-expanded"><a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"> </tt>
+<a name="UnsupportedStanzaType"></a><div id="UnsupportedStanzaType-def"><a name="L331"></a><tt class="py-lineno"> 331</tt> <a class="py-toggle" href="#" id="UnsupportedStanzaType-toggle" onclick="return toggle('UnsupportedStanzaType');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.UnsupportedStanzaType-class.html">UnsupportedStanzaType</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnsupportedStanzaType-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UnsupportedStanzaType-expanded"><a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"> </tt>
+<a name="UnsupportedVersion"></a><div id="UnsupportedVersion-def"><a name="L334"></a><tt class="py-lineno"> 334</tt> <a class="py-toggle" href="#" id="UnsupportedVersion-toggle" onclick="return toggle('UnsupportedVersion');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.UnsupportedVersion-class.html">UnsupportedVersion</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnsupportedVersion-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="UnsupportedVersion-expanded"><a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"> </tt>
+<a name="XMLNotWellFormed"></a><div id="XMLNotWellFormed-def"><a name="L337"></a><tt class="py-lineno"> 337</tt> <a class="py-toggle" href="#" id="XMLNotWellFormed-toggle" onclick="return toggle('XMLNotWellFormed');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.XMLNotWellFormed-class.html">XMLNotWellFormed</a><tt class="py-op">(</tt><tt class="py-base-class">StreamError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMLNotWellFormed-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="XMLNotWellFormed-expanded"><a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt id="link-172" class="py-name" targets="Variable nbxmpp.protocol.stream_exceptions=nbxmpp.protocol-module.html#stream_exceptions"><a title="nbxmpp.protocol.stream_exceptions" class="py-name" href="#" onclick="return doclink('link-172', 'stream_exceptions', 'link-172');">stream_exceptions</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'bad-format'</tt><tt class="py-op">:</tt> <tt id="link-173" class="py-name" targets="Class nbxmpp.protocol.BadFormat=nbxmpp.protocol.BadFormat-class.html"><a title="nbxmpp.protocol.BadFormat" class="py-name" href="#" onclick="return doclink('link-173', 'BadFormat', 'link-173');">BadFormat</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"> <tt class="py-string">'bad-namespace-prefix'</tt><tt class="py-op">:</tt> <tt id="link-174" class="py-name" targets="Class nbxmpp.protocol.BadNamespacePrefix=nbxmpp.protocol.BadNamespacePrefix-class.html"><a title="nbxmpp.protocol.BadNamespacePrefix" class="py-name" href="#" onclick="return doclink('link-174', 'BadNamespacePrefix', 'link-174');">BadNamespacePrefix</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"> <tt class="py-string">'conflict'</tt><tt class="py-op">:</tt> <tt id="link-175" class="py-name" targets="Class nbxmpp.protocol.Conflict=nbxmpp.protocol.Conflict-class.html"><a title="nbxmpp.protocol.Conflict" class="py-name" href="#" onclick="return doclink('link-175', 'Conflict', 'link-175');">Conflict</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"> <tt class="py-string">'connection-timeout'</tt><tt class="py-op">:</tt> <tt id="link-176" class="py-name" targets="Class nbxmpp.protocol.ConnectionTimeout=nbxmpp.protocol.ConnectionTimeout-class.html"><a title="nbxmpp.protocol.ConnectionTimeout" class="py-name" href="#" onclick="return doclink('link-176', 'ConnectionTimeout', 'link-176');">ConnectionTimeout</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"> <tt class="py-string">'host-gone'</tt><tt class="py-op">:</tt> <tt id="link-177" class="py-name" targets="Class nbxmpp.protocol.HostGone=nbxmpp.protocol.HostGone-class.html"><a title="nbxmpp.protocol.HostGone" class="py-name" href="#" onclick="return doclink('link-177', 'HostGone', 'link-177');">HostGone</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"> <tt class="py-string">'host-unknown'</tt><tt class="py-op">:</tt> <tt id="link-178" class="py-name" targets="Class nbxmpp.protocol.HostUnknown=nbxmpp.protocol.HostUnknown-class.html"><a title="nbxmpp.protocol.HostUnknown" class="py-name" href="#" onclick="return doclink('link-178', 'HostUnknown', 'link-178');">HostUnknown</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"> <tt class="py-string">'improper-addressing'</tt><tt class="py-op">:</tt> <tt id="link-179" class="py-name" targets="Class nbxmpp.protocol.ImproperAddressing=nbxmpp.protocol.ImproperAddressing-class.html"><a title="nbxmpp.protocol.ImproperAddressing" class="py-name" href="#" onclick="return doclink('link-179', 'ImproperAddressing', 'link-179');">ImproperAddressing</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"> <tt class="py-string">'internal-server-error'</tt><tt class="py-op">:</tt> <tt id="link-180" class="py-name" targets="Class nbxmpp.protocol.InternalServerError=nbxmpp.protocol.InternalServerError-class.html"><a title="nbxmpp.protocol.InternalServerError" class="py-name" href="#" onclick="return doclink('link-180', 'InternalServerError', 'link-180');">InternalServerError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"> <tt class="py-string">'invalid-from'</tt><tt class="py-op">:</tt> <tt id="link-181" class="py-name" targets="Class nbxmpp.protocol.InvalidFrom=nbxmpp.protocol.InvalidFrom-class.html"><a title="nbxmpp.protocol.InvalidFrom" class="py-name" href="#" onclick="return doclink('link-181', 'InvalidFrom', 'link-181');">InvalidFrom</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"> <tt class="py-string">'invalid-id'</tt><tt class="py-op">:</tt> <tt id="link-182" class="py-name" targets="Class nbxmpp.protocol.InvalidID=nbxmpp.protocol.InvalidID-class.html"><a title="nbxmpp.protocol.InvalidID" class="py-name" href="#" onclick="return doclink('link-182', 'InvalidID', 'link-182');">InvalidID</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"> <tt class="py-string">'invalid-namespace'</tt><tt class="py-op">:</tt> <tt id="link-183" class="py-name" targets="Class nbxmpp.protocol.InvalidNamespace=nbxmpp.protocol.InvalidNamespace-class.html"><a title="nbxmpp.protocol.InvalidNamespace" class="py-name" href="#" onclick="return doclink('link-183', 'InvalidNamespace', 'link-183');">InvalidNamespace</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"> <tt class="py-string">'invalid-xml'</tt><tt class="py-op">:</tt> <tt id="link-184" class="py-name" targets="Class nbxmpp.protocol.InvalidXML=nbxmpp.protocol.InvalidXML-class.html"><a title="nbxmpp.protocol.InvalidXML" class="py-name" href="#" onclick="return doclink('link-184', 'InvalidXML', 'link-184');">InvalidXML</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt> <tt class="py-line"> <tt class="py-string">'not-authorized'</tt><tt class="py-op">:</tt> <tt id="link-185" class="py-name" targets="Class nbxmpp.protocol.NotAuthorized=nbxmpp.protocol.NotAuthorized-class.html"><a title="nbxmpp.protocol.NotAuthorized" class="py-name" href="#" onclick="return doclink('link-185', 'NotAuthorized', 'link-185');">NotAuthorized</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"> <tt class="py-string">'policy-violation'</tt><tt class="py-op">:</tt> <tt id="link-186" class="py-name" targets="Class nbxmpp.protocol.PolicyViolation=nbxmpp.protocol.PolicyViolation-class.html"><a title="nbxmpp.protocol.PolicyViolation" class="py-name" href="#" onclick="return doclink('link-186', 'PolicyViolation', 'link-186');">PolicyViolation</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"> <tt class="py-string">'remote-connection-failed'</tt><tt class="py-op">:</tt> <tt id="link-187" class="py-name" targets="Class nbxmpp.protocol.RemoteConnectionFailed=nbxmpp.protocol.RemoteConnectionFailed-class.html"><a title="nbxmpp.protocol.RemoteConnectionFailed" class="py-name" href="#" onclick="return doclink('link-187', 'RemoteConnectionFailed', 'link-187');">RemoteConnectionFailed</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"> <tt class="py-string">'resource-constraint'</tt><tt class="py-op">:</tt> <tt id="link-188" class="py-name" targets="Class nbxmpp.protocol.ResourceConstraint=nbxmpp.protocol.ResourceConstraint-class.html"><a title="nbxmpp.protocol.ResourceConstraint" class="py-name" href="#" onclick="return doclink('link-188', 'ResourceConstraint', 'link-188');">ResourceConstraint</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"> <tt class="py-string">'restricted-xml'</tt><tt class="py-op">:</tt> <tt id="link-189" class="py-name" targets="Class nbxmpp.protocol.RestrictedXML=nbxmpp.protocol.RestrictedXML-class.html"><a title="nbxmpp.protocol.RestrictedXML" class="py-name" href="#" onclick="return doclink('link-189', 'RestrictedXML', 'link-189');">RestrictedXML</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"> <tt class="py-string">'see-other-host'</tt><tt class="py-op">:</tt> <tt id="link-190" class="py-name" targets="Class nbxmpp.protocol.SeeOtherHost=nbxmpp.protocol.SeeOtherHost-class.html"><a title="nbxmpp.protocol.SeeOtherHost" class="py-name" href="#" onclick="return doclink('link-190', 'SeeOtherHost', 'link-190');">SeeOtherHost</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"> <tt class="py-string">'system-shutdown'</tt><tt class="py-op">:</tt> <tt id="link-191" class="py-name" targets="Class nbxmpp.protocol.SystemShutdown=nbxmpp.protocol.SystemShutdown-class.html"><a title="nbxmpp.protocol.SystemShutdown" class="py-name" href="#" onclick="return doclink('link-191', 'SystemShutdown', 'link-191');">SystemShutdown</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"> <tt class="py-string">'undefined-condition'</tt><tt class="py-op">:</tt> <tt id="link-192" class="py-name" targets="Class nbxmpp.protocol.UndefinedCondition=nbxmpp.protocol.UndefinedCondition-class.html"><a title="nbxmpp.protocol.UndefinedCondition" class="py-name" href="#" onclick="return doclink('link-192', 'UndefinedCondition', 'link-192');">UndefinedCondition</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"> <tt class="py-string">'unsupported-encoding'</tt><tt class="py-op">:</tt> <tt id="link-193" class="py-name" targets="Class nbxmpp.protocol.UnsupportedEncoding=nbxmpp.protocol.UnsupportedEncoding-class.html"><a title="nbxmpp.protocol.UnsupportedEncoding" class="py-name" href="#" onclick="return doclink('link-193', 'UnsupportedEncoding', 'link-193');">UnsupportedEncoding</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"> <tt class="py-string">'unsupported-stanza-type'</tt><tt class="py-op">:</tt> <tt id="link-194" class="py-name" targets="Class nbxmpp.protocol.UnsupportedStanzaType=nbxmpp.protocol.UnsupportedStanzaType-class.html"><a title="nbxmpp.protocol.UnsupportedStanzaType" class="py-name" href="#" onclick="return doclink('link-194', 'UnsupportedStanzaType', 'link-194');">UnsupportedStanzaType</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"> <tt class="py-string">'unsupported-version'</tt><tt class="py-op">:</tt> <tt id="link-195" class="py-name" targets="Class nbxmpp.protocol.UnsupportedVersion=nbxmpp.protocol.UnsupportedVersion-class.html"><a title="nbxmpp.protocol.UnsupportedVersion" class="py-name" href="#" onclick="return doclink('link-195', 'UnsupportedVersion', 'link-195');">UnsupportedVersion</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> <tt class="py-string">'xml-not-well-formed'</tt><tt class="py-op">:</tt> <tt id="link-196" class="py-name" targets="Class nbxmpp.protocol.XMLNotWellFormed=nbxmpp.protocol.XMLNotWellFormed-class.html"><a title="nbxmpp.protocol.XMLNotWellFormed" class="py-name" href="#" onclick="return doclink('link-196', 'XMLNotWellFormed', 'link-196');">XMLNotWellFormed</a></tt><tt class="py-op">}</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"> </tt>
+<a name="JID"></a><div id="JID-def"><a name="L365"></a><tt class="py-lineno"> 365</tt> <a class="py-toggle" href="#" id="JID-toggle" onclick="return toggle('JID');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html">JID</a><tt class="py-op">:</tt> </tt>
+</div><div id="JID-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="JID-expanded"><a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"><tt class="py-docstring"> JID can be built from string, modified, compared, serialised into string</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"> </tt>
+<a name="JID.__init__"></a><div id="JID.__init__-def"><a name="L370"></a><tt class="py-lineno"> 370</tt> <a class="py-toggle" href="#" id="JID.__init__-toggle" onclick="return toggle('JID.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">domain</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">resource</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.__init__-expanded"><a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"><tt class="py-docstring"> JID can be specified as string (jid argument) or as separate parts</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"><tt class="py-docstring"> Examples:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"><tt class="py-docstring"> JID('node@domain/resource')</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"><tt class="py-docstring"> JID(node='node',domain='domain.org')</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">jid</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">domain</tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'JID must contain at least domain name'</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">domain</tt><tt class="py-op">:</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">domain</tt><tt class="py-op">,</tt> <tt class="py-name">resource</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'@'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">jid</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'@'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt> </tt>
+</div><a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"> </tt>
+<a name="JID.getNode"></a><div id="JID.getNode-def"><a name="L395"></a><tt class="py-lineno"> 395</tt> <a class="py-toggle" href="#" id="JID.getNode-toggle" onclick="return toggle('JID.getNode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#getNode">getNode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.getNode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.getNode-expanded"><a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"><tt class="py-docstring"> Return the node part of the JID</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt> </tt>
+</div><a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"> </tt>
+<a name="JID.setNode"></a><div id="JID.setNode-def"><a name="L401"></a><tt class="py-lineno"> 401</tt> <a class="py-toggle" href="#" id="JID.setNode-toggle" onclick="return toggle('JID.setNode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#setNode">setNode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.setNode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.setNode-expanded"><a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"><tt class="py-docstring"> Set the node part of the JID to new value. Specify None to remove</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"><tt class="py-docstring"> the node part</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"> </tt>
+<a name="JID.getDomain"></a><div id="JID.getDomain-def"><a name="L408"></a><tt class="py-lineno"> 408</tt> <a class="py-toggle" href="#" id="JID.getDomain-toggle" onclick="return toggle('JID.getDomain');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#getDomain">getDomain</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.getDomain-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.getDomain-expanded"><a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"><tt class="py-docstring"> Return the domain part of the JID</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt> </tt>
+</div><a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"> </tt>
+<a name="JID.setDomain"></a><div id="JID.setDomain-def"><a name="L414"></a><tt class="py-lineno"> 414</tt> <a class="py-toggle" href="#" id="JID.setDomain-toggle" onclick="return toggle('JID.setDomain');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#setDomain">setDomain</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">domain</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.setDomain-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.setDomain-expanded"><a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-docstring"> Set the domain part of the JID to new value</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt> <tt class="py-op">=</tt> <tt class="py-name">domain</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"> </tt>
+<a name="JID.getResource"></a><div id="JID.getResource-def"><a name="L420"></a><tt class="py-lineno"> 420</tt> <a class="py-toggle" href="#" id="JID.getResource-toggle" onclick="return toggle('JID.getResource');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#getResource">getResource</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.getResource-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.getResource-expanded"><a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"><tt class="py-docstring"> Return the resource part of the JID</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> </tt>
+</div><a name="L425"></a><tt class="py-lineno"> 425</tt> <tt class="py-line"> </tt>
+<a name="JID.setResource"></a><div id="JID.setResource-def"><a name="L426"></a><tt class="py-lineno"> 426</tt> <a class="py-toggle" href="#" id="JID.setResource-toggle" onclick="return toggle('JID.setResource');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#setResource">setResource</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resource</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.setResource-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.setResource-expanded"><a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"><tt class="py-docstring"> Set the resource part of the JID to new value. Specify None to remove the</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"><tt class="py-docstring"> resource part</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt class="py-name">resource</tt> </tt>
+</div><a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"> </tt>
+<a name="JID.getStripped"></a><div id="JID.getStripped-def"><a name="L433"></a><tt class="py-lineno"> 433</tt> <a class="py-toggle" href="#" id="JID.getStripped-toggle" onclick="return toggle('JID.getStripped');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#getStripped">getStripped</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.getStripped-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.getStripped-expanded"><a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"><tt class="py-docstring"> Return the bare representation of JID. I.e. string value w/o resource</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name" targets="Method nbxmpp.protocol.JID.__str__()=nbxmpp.protocol.JID-class.html#__str__,Method nbxmpp.simplexml.Node.__str__()=nbxmpp.simplexml.Node-class.html#__str__,Method nbxmpp.tls_nb.SSLWrapper.Error.__str__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-197', '__str__', 'link-197');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"> </tt>
+<a name="JID.__eq__"></a><div id="JID.__eq__-def"><a name="L439"></a><tt class="py-lineno"> 439</tt> <a class="py-toggle" href="#" id="JID.__eq__-toggle" onclick="return toggle('JID.__eq__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#__eq__">__eq__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.__eq__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.__eq__-expanded"><a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"><tt class="py-docstring"> Compare the JID to another instance or to string for equality</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"> <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name" targets="Class nbxmpp.protocol.JID=nbxmpp.protocol.JID-class.html"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-198', 'JID', 'link-198');">JID</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> <tt class="py-keyword">and</tt> \ </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-199', '__str__', 'link-197');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-200', '__str__', 'link-197');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"> </tt>
+<a name="JID.__ne__"></a><div id="JID.__ne__-def"><a name="L450"></a><tt class="py-lineno"> 450</tt> <a class="py-toggle" href="#" id="JID.__ne__-toggle" onclick="return toggle('JID.__ne__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#__ne__">__ne__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.__ne__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.__ne__-expanded"><a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"><tt class="py-docstring"> Compare the JID to another instance or to string for non-equality</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Method nbxmpp.protocol.JID.__eq__()=nbxmpp.protocol.JID-class.html#__eq__"><a title="nbxmpp.protocol.JID.__eq__" class="py-name" href="#" onclick="return doclink('link-201', '__eq__', 'link-201');">__eq__</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"> </tt>
+<a name="JID.bareMatch"></a><div id="JID.bareMatch-def"><a name="L456"></a><tt class="py-lineno"> 456</tt> <a class="py-toggle" href="#" id="JID.bareMatch-toggle" onclick="return toggle('JID.bareMatch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#bareMatch">bareMatch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.bareMatch-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.bareMatch-expanded"><a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"><tt class="py-docstring"> Compare the node and domain parts of the JID's for equality</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-202', '__str__', 'link-197');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-203" class="py-name"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-203', 'JID', 'link-198');">JID</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-204', '__str__', 'link-197');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"> </tt>
+<a name="JID.__str__"></a><div id="JID.__str__-def"><a name="L462"></a><tt class="py-lineno"> 462</tt> <a class="py-toggle" href="#" id="JID.__str__-toggle" onclick="return toggle('JID.__str__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">wresource</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.__str__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.__str__-expanded"><a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"><tt class="py-docstring"> Serialise JID into string</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"> <tt class="py-name">jid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt> <tt class="py-op">+</tt> <tt class="py-string">'@'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"> <tt class="py-name">jid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">domain</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">wresource</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt><tt class="py-op">:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">jid</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">jid</tt> </tt>
+</div><a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"> </tt>
+<a name="JID.__hash__"></a><div id="JID.__hash__-def"><a name="L474"></a><tt class="py-lineno"> 474</tt> <a class="py-toggle" href="#" id="JID.__hash__-toggle" onclick="return toggle('JID.__hash__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.JID-class.html#__hash__">__hash__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JID.__hash__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="JID.__hash__-expanded"><a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-docstring"> Produce hash of the JID, Allows to use JID objects as keys of the</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-docstring"> dictionary</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"> </tt>
+<a name="BOSHBody"></a><div id="BOSHBody-def"><a name="L481"></a><tt class="py-lineno"> 481</tt> <a class="py-toggle" href="#" id="BOSHBody-toggle" onclick="return toggle('BOSHBody');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.BOSHBody-class.html">BOSHBody</a><tt class="py-op">(</tt><tt class="py-base-class">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHBody-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BOSHBody-expanded"><a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"><tt class="py-docstring"> &lt;body&gt; tag that wraps usual XMPP stanzas in XMPP over BOSH</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"> </tt>
+<a name="BOSHBody.__init__"></a><div id="BOSHBody.__init__-def"><a name="L486"></a><tt class="py-lineno"> 486</tt> <a class="py-toggle" href="#" id="BOSHBody.__init__-toggle" onclick="return toggle('BOSHBody.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.BOSHBody-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHBody.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="BOSHBody.__init__-expanded"><a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"> <tt id="link-205" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-205', 'Node', 'link-1');">Node</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-206', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">tag</tt><tt class="py-op">=</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name" targets="Method nbxmpp.simplexml.Node.setNamespace()=nbxmpp.simplexml.Node-class.html#setNamespace"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-207', 'setNamespace', 'link-207');">setNamespace</a></tt><tt class="py-op">(</tt><tt id="link-208" class="py-name"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-208', 'NS_HTTP_BIND', 'link-62');">NS_HTTP_BIND</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"> </tt>
+<a name="Protocol"></a><div id="Protocol-def"><a name="L491"></a><tt class="py-lineno"> 491</tt> <a class="py-toggle" href="#" id="Protocol-toggle" onclick="return toggle('Protocol');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html">Protocol</a><tt class="py-op">(</tt><tt class="py-base-class">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Protocol-expanded"><a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"><tt class="py-docstring"> A "stanza" object class. Contains methods that are common for presences, iqs</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"><tt class="py-docstring"> and messages</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"> </tt>
+<a name="Protocol.__init__"></a><div id="Protocol.__init__-def"><a name="L497"></a><tt class="py-lineno"> 497</tt> <a class="py-toggle" href="#" id="Protocol.__init__-toggle" onclick="return toggle('Protocol.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">to</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">frm</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"> <tt class="py-param">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">timestamp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.__init__-expanded"><a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"><tt class="py-docstring"> Constructor, name is the name of the stanza</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"><tt class="py-docstring"> i.e. 'message' or 'presence'or 'iq'</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"><tt class="py-docstring"> to is the value of 'to' attribure, 'typ' - 'type' attribute</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"><tt class="py-docstring"> frn - from attribure, attrs - other attributes mapping,</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"><tt class="py-docstring"> payload - same meaning as for simplexml payload definition</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"><tt class="py-docstring"> timestamp - the time value that needs to be stamped over stanza</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"><tt class="py-docstring"> xmlns - namespace of top stanza node</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"><tt class="py-docstring"> node - parsed or unparsed stana to be taken as prototype.</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">to</tt><tt class="py-op">:</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-string">'to'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">to</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">frm</tt><tt class="py-op">:</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-string">'from'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">frm</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">typ</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"> <tt id="link-209" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-209', 'Node', 'link-1');">Node</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-210', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">tag</tt><tt class="py-op">=</tt><tt id="link-211" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-211', 'name', 'link-165');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">node</tt> <tt class="py-keyword">and</tt> <tt class="py-name">xmlns</tt><tt class="py-op">:</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-212', 'setNamespace', 'link-207');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">)</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'to'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name" targets="Method nbxmpp.protocol.Protocol.setTo()=nbxmpp.protocol.Protocol-class.html#setTo"><a title="nbxmpp.protocol.Protocol.setTo" class="py-name" href="#" onclick="return doclink('link-213', 'setTo', 'link-213');">setTo</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'to'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'from'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method nbxmpp.protocol.Protocol.setFrom()=nbxmpp.protocol.Protocol-class.html#setFrom"><a title="nbxmpp.protocol.Protocol.setFrom" class="py-name" href="#" onclick="return doclink('link-214', 'setFrom', 'link-214');">setFrom</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'from'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt> <tt class="py-keyword">and</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> \ </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">==</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'id'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name" targets="Method nbxmpp.simplexml.Node.getTags()=nbxmpp.simplexml.Node-class.html#getTags"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-215', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'delay'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-216" class="py-name"><a title="nbxmpp.protocol.NS_DELAY2" class="py-name" href="#" onclick="return doclink('link-216', 'NS_DELAY2', 'link-43');">NS_DELAY2</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-217', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'stamp'</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name" targets="Method nbxmpp.protocol.Protocol.getTimestamp2()=nbxmpp.protocol.Protocol-class.html#getTimestamp2"><a title="nbxmpp.protocol.Protocol.getTimestamp2" class="py-name" href="#" onclick="return doclink('link-218', 'getTimestamp2', 'link-218');">getTimestamp2</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name" targets="Method nbxmpp.protocol.Protocol.setTimestamp()=nbxmpp.protocol.Protocol-class.html#setTimestamp"><a title="nbxmpp.protocol.Protocol.setTimestamp" class="py-name" href="#" onclick="return doclink('link-219', 'setTimestamp', 'link-219');">setTimestamp</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-220', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'stamp'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt><tt class="py-op">:</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-221', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-222" class="py-name"><a title="nbxmpp.protocol.NS_DELAY" class="py-name" href="#" onclick="return doclink('link-222', 'NS_DELAY', 'link-42');">NS_DELAY</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-223', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'stamp'</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name" targets="Method nbxmpp.protocol.Protocol.getTimestamp()=nbxmpp.protocol.Protocol-class.html#getTimestamp"><a title="nbxmpp.protocol.Protocol.getTimestamp" class="py-name" href="#" onclick="return doclink('link-224', 'getTimestamp', 'link-224');">getTimestamp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="nbxmpp.protocol.Protocol.setTimestamp" class="py-name" href="#" onclick="return doclink('link-225', 'setTimestamp', 'link-219');">setTimestamp</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-226', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'stamp'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timestamp</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="nbxmpp.protocol.Protocol.setTimestamp" class="py-name" href="#" onclick="return doclink('link-227', 'setTimestamp', 'link-219');">setTimestamp</a></tt><tt class="py-op">(</tt><tt class="py-name">timestamp</tt><tt class="py-op">)</tt> <tt class="py-comment"># To auto-timestamp stanza just pass timestamp=''</tt> </tt>
+</div><a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getTo"></a><div id="Protocol.getTo-def"><a name="L545"></a><tt class="py-lineno"> 545</tt> <a class="py-toggle" href="#" id="Protocol.getTo-toggle" onclick="return toggle('Protocol.getTo');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getTo">getTo</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getTo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getTo-expanded"><a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"><tt class="py-docstring"> Return value of the 'to' attribute</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'to'</tt><tt class="py-op">]</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getFrom"></a><div id="Protocol.getFrom-def"><a name="L554"></a><tt class="py-lineno"> 554</tt> <a class="py-toggle" href="#" id="Protocol.getFrom-toggle" onclick="return toggle('Protocol.getFrom');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getFrom">getFrom</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getFrom-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getFrom-expanded"><a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"><tt class="py-docstring"> Return value of the 'from' attribute</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'from'</tt><tt class="py-op">]</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getTimestamp"></a><div id="Protocol.getTimestamp-def"><a name="L563"></a><tt class="py-lineno"> 563</tt> <a class="py-toggle" href="#" id="Protocol.getTimestamp-toggle" onclick="return toggle('Protocol.getTimestamp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getTimestamp">getTimestamp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getTimestamp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getTimestamp-expanded"><a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"><tt class="py-docstring"> Return the timestamp in the 'yyyymmddThhmmss' format</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt><tt class="py-op">:</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">'%Y%m%dT%H:%M:%S'</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">gmtime</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getTimestamp2"></a><div id="Protocol.getTimestamp2-def"><a name="L571"></a><tt class="py-lineno"> 571</tt> <a class="py-toggle" href="#" id="Protocol.getTimestamp2-toggle" onclick="return toggle('Protocol.getTimestamp2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getTimestamp2">getTimestamp2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getTimestamp2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getTimestamp2-expanded"><a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"><tt class="py-docstring"> Return the timestamp in the 'yyyymmddThhmmss' format</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt><tt class="py-op">:</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">'%Y-%m-%dT%H:%M:%SZ'</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">gmtime</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getID"></a><div id="Protocol.getID-def"><a name="L579"></a><tt class="py-lineno"> 579</tt> <a class="py-toggle" href="#" id="Protocol.getID-toggle" onclick="return toggle('Protocol.getID');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getID">getID</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getID-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getID-expanded"><a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"><tt class="py-docstring"> Return the value of the 'id' attribute</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-228', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'id'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> </tt>
+<a name="Protocol.setTo"></a><div id="Protocol.setTo-def"><a name="L585"></a><tt class="py-lineno"> 585</tt> <a class="py-toggle" href="#" id="Protocol.setTo-toggle" onclick="return toggle('Protocol.setTo');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#setTo">setTo</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.setTo-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.setTo-expanded"><a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"><tt class="py-docstring"> Set the value of the 'to' attribute</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name" targets="Method nbxmpp.simplexml.Node.setAttr()=nbxmpp.simplexml.Node-class.html#setAttr"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-229', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">,</tt> <tt id="link-230" class="py-name"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-230', 'JID', 'link-198');">JID</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getType"></a><div id="Protocol.getType-def"><a name="L591"></a><tt class="py-lineno"> 591</tt> <a class="py-toggle" href="#" id="Protocol.getType-toggle" onclick="return toggle('Protocol.getType');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getType">getType</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getType-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getType-expanded"><a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"><tt class="py-docstring"> Return the value of the 'type' attribute</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-231', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> </tt>
+<a name="Protocol.setFrom"></a><div id="Protocol.setFrom-def"><a name="L597"></a><tt class="py-lineno"> 597</tt> <a class="py-toggle" href="#" id="Protocol.setFrom-toggle" onclick="return toggle('Protocol.setFrom');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#setFrom">setFrom</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.setFrom-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.setFrom-expanded"><a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"><tt class="py-docstring"> Set the value of the 'from' attribute</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-232', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">,</tt> <tt id="link-233" class="py-name"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-233', 'JID', 'link-198');">JID</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"> </tt>
+<a name="Protocol.setType"></a><div id="Protocol.setType-def"><a name="L603"></a><tt class="py-lineno"> 603</tt> <a class="py-toggle" href="#" id="Protocol.setType-toggle" onclick="return toggle('Protocol.setType');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#setType">setType</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.setType-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.setType-expanded"><a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"><tt class="py-docstring"> Set the value of the 'type' attribute</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-234', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"> </tt>
+<a name="Protocol.setID"></a><div id="Protocol.setID-def"><a name="L609"></a><tt class="py-lineno"> 609</tt> <a class="py-toggle" href="#" id="Protocol.setID-toggle" onclick="return toggle('Protocol.setID');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#setID">setID</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.setID-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.setID-expanded"><a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"><tt class="py-docstring"> Set the value of the 'id' attribute</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-235', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'id'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getError"></a><div id="Protocol.getError-def"><a name="L615"></a><tt class="py-lineno"> 615</tt> <a class="py-toggle" href="#" id="Protocol.getError-toggle" onclick="return toggle('Protocol.getError');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getError">getError</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getError-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getError-expanded"><a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"><tt class="py-docstring"> Return the error-condition (if present) or the textual description</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"><tt class="py-docstring"> of the error (otherwise)</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"> <tt class="py-name">errtag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-236', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">errtag</tt><tt class="py-op">:</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">tag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errtag</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name" targets="Method nbxmpp.simplexml.Node.getChildren()=nbxmpp.simplexml.Node-class.html#getChildren"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-237', 'getChildren', 'link-237');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-238', 'getName', 'link-238');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'text'</tt><tt class="py-op">:</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-239', 'getName', 'link-238');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">errtag</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name" targets="Method nbxmpp.simplexml.Node.getData()=nbxmpp.simplexml.Node-class.html#getData"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-240', 'getData', 'link-240');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getErrorMsg"></a><div id="Protocol.getErrorMsg-def"><a name="L627"></a><tt class="py-lineno"> 627</tt> <a class="py-toggle" href="#" id="Protocol.getErrorMsg-toggle" onclick="return toggle('Protocol.getErrorMsg');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getErrorMsg">getErrorMsg</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getErrorMsg-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getErrorMsg-expanded"><a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"><tt class="py-docstring"> Return the textual description of the error (if present)</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"><tt class="py-docstring"> or the error condition</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"> <tt class="py-name">errtag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-241', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">errtag</tt><tt class="py-op">:</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">tag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errtag</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-242', 'getChildren', 'link-237');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-243', 'getName', 'link-238');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'text'</tt><tt class="py-op">:</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-244', 'getData', 'link-240');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name" targets="Method nbxmpp.protocol.Protocol.getError()=nbxmpp.protocol.Protocol-class.html#getError"><a title="nbxmpp.protocol.Protocol.getError" class="py-name" href="#" onclick="return doclink('link-245', 'getError', 'link-245');">getError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getErrorCode"></a><div id="Protocol.getErrorCode-def"><a name="L639"></a><tt class="py-lineno"> 639</tt> <a class="py-toggle" href="#" id="Protocol.getErrorCode-toggle" onclick="return toggle('Protocol.getErrorCode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getErrorCode">getErrorCode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getErrorCode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getErrorCode-expanded"><a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"><tt class="py-docstring"> Return the error code. Obsolete.</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name" targets="Method nbxmpp.simplexml.Node.getTagAttr()=nbxmpp.simplexml.Node-class.html#getTagAttr"><a title="nbxmpp.simplexml.Node.getTagAttr" class="py-name" href="#" onclick="return doclink('link-246', 'getTagAttr', 'link-246');">getTagAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">,</tt> <tt class="py-string">'code'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getStatusConditions"></a><div id="Protocol.getStatusConditions-def"><a name="L645"></a><tt class="py-lineno"> 645</tt> <a class="py-toggle" href="#" id="Protocol.getStatusConditions-toggle" onclick="return toggle('Protocol.getStatusConditions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getStatusConditions">getStatusConditions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getStatusConditions-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getStatusConditions-expanded"><a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"><tt class="py-docstring"> Return the status conditions list as defined in XEP-0306.</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt> <tt class="py-line"> <tt class="py-name">conds</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"> <tt class="py-name">condtag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-247', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'conditions'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-248" class="py-name"><a title="nbxmpp.protocol.NS_CONDITIONS" class="py-name" href="#" onclick="return doclink('link-248', 'NS_CONDITIONS', 'link-34');">NS_CONDITIONS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">condtag</tt><tt class="py-op">:</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">tag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">condtag</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-249', 'getChildren', 'link-237');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt class="py-name">conds</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-250', 'getName', 'link-238');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">conds</tt> </tt>
+</div><a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"> </tt>
+<a name="Protocol.setError"></a><div id="Protocol.setError-def"><a name="L656"></a><tt class="py-lineno"> 656</tt> <a class="py-toggle" href="#" id="Protocol.setError-toggle" onclick="return toggle('Protocol.setError');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#setError">setError</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">error</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.setError-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.setError-expanded"><a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"><tt class="py-docstring"> Set the error code. Obsolete. Use error-conditions instead</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">code</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-251" class="py-name"><a title="nbxmpp.protocol._errorcodes" class="py-name" href="#" onclick="return doclink('link-251', '_errorcodes', 'link-158');">_errorcodes</a></tt><tt class="py-op">.</tt><tt id="link-252" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.keys()=nbxmpp.roster_nb.NonBlockingRoster-class.html#keys"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-252', 'keys', 'link-252');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"> <tt class="py-name">error</tt> <tt class="py-op">=</tt> <tt id="link-253" class="py-name" targets="Class nbxmpp.protocol.ErrorNode=nbxmpp.protocol.ErrorNode-class.html"><a title="nbxmpp.protocol.ErrorNode" class="py-name" href="#" onclick="return doclink('link-253', 'ErrorNode', 'link-253');">ErrorNode</a></tt><tt class="py-op">(</tt><tt id="link-254" class="py-name"><a title="nbxmpp.protocol._errorcodes" class="py-name" href="#" onclick="return doclink('link-254', '_errorcodes', 'link-158');">_errorcodes</a></tt><tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-name">error</tt> <tt class="py-op">=</tt> <tt id="link-255" class="py-name"><a title="nbxmpp.protocol.ErrorNode" class="py-name" href="#" onclick="return doclink('link-255', 'ErrorNode', 'link-253');">ErrorNode</a></tt><tt class="py-op">(</tt><tt id="link-256" class="py-name" targets="Variable nbxmpp.ERR_UNDEFINED_CONDITION=nbxmpp-module.html#ERR_UNDEFINED_CONDITION,Variable nbxmpp.protocol.ERR_UNDEFINED_CONDITION=nbxmpp.protocol-module.html#ERR_UNDEFINED_CONDITION"><a title="nbxmpp.ERR_UNDEFINED_CONDITION
+nbxmpp.protocol.ERR_UNDEFINED_CONDITION" class="py-name" href="#" onclick="return doclink('link-256', 'ERR_UNDEFINED_CONDITION', 'link-256');">ERR_UNDEFINED_CONDITION</a></tt><tt class="py-op">,</tt> <tt class="py-name">code</tt><tt class="py-op">=</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'cancel'</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">error</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"> <tt class="py-name">error</tt><tt class="py-op">=</tt><tt id="link-257" class="py-name"><a title="nbxmpp.protocol.ErrorNode" class="py-name" href="#" onclick="return doclink('link-257', 'ErrorNode', 'link-253');">ErrorNode</a></tt><tt class="py-op">(</tt><tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name" targets="Method nbxmpp.protocol.DataField.setType()=nbxmpp.protocol.DataField-class.html#setType,Method nbxmpp.protocol.DataForm.setType()=nbxmpp.protocol.DataForm-class.html#setType,Method nbxmpp.protocol.Protocol.setType()=nbxmpp.protocol.Protocol-class.html#setType"><a title="nbxmpp.protocol.DataField.setType
+nbxmpp.protocol.DataForm.setType
+nbxmpp.protocol.Protocol.setType" class="py-name" href="#" onclick="return doclink('link-258', 'setType', 'link-258');">setType</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name" targets="Method nbxmpp.simplexml.Node.addChild()=nbxmpp.simplexml.Node-class.html#addChild"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-259', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"> </tt>
+<a name="Protocol.setTimestamp"></a><div id="Protocol.setTimestamp-def"><a name="L671"></a><tt class="py-lineno"> 671</tt> <a class="py-toggle" href="#" id="Protocol.setTimestamp-toggle" onclick="return toggle('Protocol.setTimestamp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#setTimestamp">setTimestamp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.setTimestamp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.setTimestamp-expanded"><a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"><tt class="py-docstring"> Set the timestamp. timestamp should be the yyyymmddThhmmss string</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">val</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">'%Y%m%dT%H:%M:%S'</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">gmtime</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-name">val</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name" targets="Method nbxmpp.simplexml.Node.setTag()=nbxmpp.simplexml.Node-class.html#setTag"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-260', 'setTag', 'link-260');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'stamp'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timestamp</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-261" class="py-name"><a title="nbxmpp.protocol.NS_DELAY" class="py-name" href="#" onclick="return doclink('link-261', 'NS_DELAY', 'link-42');">NS_DELAY</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"> </tt>
+<a name="Protocol.getProperties"></a><div id="Protocol.getProperties-def"><a name="L680"></a><tt class="py-lineno"> 680</tt> <a class="py-toggle" href="#" id="Protocol.getProperties-toggle" onclick="return toggle('Protocol.getProperties');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#getProperties">getProperties</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.getProperties-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.getProperties-expanded"><a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"><tt class="py-docstring"> Return the list of namespaces to which belongs the direct childs of element</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"> <tt class="py-name">props</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-262', 'getChildren', 'link-237');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"> <tt class="py-name">prop</tt> <tt class="py-op">=</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-263', 'getNamespace', 'link-263');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">prop</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">props</tt><tt class="py-op">:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> <tt class="py-name">props</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">prop</tt><tt class="py-op">)</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">props</tt> </tt>
+</div><a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"> </tt>
+<a name="Protocol.__setitem__"></a><div id="Protocol.__setitem__-def"><a name="L691"></a><tt class="py-lineno"> 691</tt> <a class="py-toggle" href="#" id="Protocol.__setitem__-toggle" onclick="return toggle('Protocol.__setitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Protocol-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Protocol.__setitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Protocol.__setitem__-expanded"><a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"><tt class="py-docstring"> Set the item 'item' to the value 'val'</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'to'</tt><tt class="py-op">,</tt> <tt class="py-string">'from'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt id="link-264" class="py-name"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-264', 'JID', 'link-198');">JID</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-265', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> </tt>
+<a name="Message"></a><div id="Message-def"><a name="L700"></a><tt class="py-lineno"> 700</tt> <a class="py-toggle" href="#" id="Message-toggle" onclick="return toggle('Message');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html">Message</a><tt class="py-op">(</tt><tt class="py-base-class">Protocol</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Message-expanded"><a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"><tt class="py-docstring"> XMPP Message stanza - "push" mechanism</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"> </tt>
+<a name="Message.__init__"></a><div id="Message.__init__-def"><a name="L705"></a><tt class="py-lineno"> 705</tt> <a class="py-toggle" href="#" id="Message.__init__-toggle" onclick="return toggle('Message.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">to</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">xhtml</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">subject</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">frm</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">timestamp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt id="link-266" class="py-name"><a title="nbxmpp.protocol.NS_CLIENT" class="py-name" href="#" onclick="return doclink('link-266', 'NS_CLIENT', 'link-33');">NS_CLIENT</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.__init__-expanded"><a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"><tt class="py-docstring"> You can specify recipient, text of message, type of message any</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"><tt class="py-docstring"> additional attributes, sender of the message, any additional payload</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"><tt class="py-docstring"> (f.e. jabber:x:delay element) and namespace in one go.</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"><tt class="py-docstring"> Alternatively you can pass in the other XML object as the 'node'</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"><tt class="py-docstring"> parameted to replicate it as message</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"> <tt id="link-267" class="py-name" targets="Class nbxmpp.protocol.Protocol=nbxmpp.protocol.Protocol-class.html"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-267', 'Protocol', 'link-267');">Protocol</a></tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-268', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'message'</tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">to</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">frm</tt><tt class="py-op">=</tt><tt class="py-name">frm</tt><tt class="py-op">,</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-name">timestamp</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">body</tt><tt class="py-op">:</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name" targets="Method nbxmpp.protocol.Message.setBody()=nbxmpp.protocol.Message-class.html#setBody"><a title="nbxmpp.protocol.Message.setBody" class="py-name" href="#" onclick="return doclink('link-269', 'setBody', 'link-269');">setBody</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xhtml</tt><tt class="py-op">:</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name" targets="Method nbxmpp.protocol.Message.setXHTML()=nbxmpp.protocol.Message-class.html#setXHTML"><a title="nbxmpp.protocol.Message.setXHTML" class="py-name" href="#" onclick="return doclink('link-270', 'setXHTML', 'link-270');">setXHTML</a></tt><tt class="py-op">(</tt><tt class="py-name">xhtml</tt><tt class="py-op">)</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">subject</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name" targets="Method nbxmpp.protocol.Message.setSubject()=nbxmpp.protocol.Message-class.html#setSubject"><a title="nbxmpp.protocol.Message.setSubject" class="py-name" href="#" onclick="return doclink('link-271', 'setSubject', 'link-271');">setSubject</a></tt><tt class="py-op">(</tt><tt class="py-name">subject</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"> </tt>
+<a name="Message.getBody"></a><div id="Message.getBody-def"><a name="L725"></a><tt class="py-lineno"> 725</tt> <a class="py-toggle" href="#" id="Message.getBody-toggle" onclick="return toggle('Message.getBody');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#getBody">getBody</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.getBody-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.getBody-expanded"><a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"><tt class="py-docstring"> Return text of the message</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name" targets="Method nbxmpp.simplexml.Node.getTagData()=nbxmpp.simplexml.Node-class.html#getTagData"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-272', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"> </tt>
+<a name="Message.getXHTML"></a><div id="Message.getXHTML-def"><a name="L731"></a><tt class="py-lineno"> 731</tt> <a class="py-toggle" href="#" id="Message.getXHTML-toggle" onclick="return toggle('Message.getXHTML');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#getXHTML">getXHTML</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">xmllang</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.getXHTML-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.getXHTML-expanded"><a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"><tt class="py-docstring"> Return serialized xhtml-im element text of the message</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"><tt class="py-docstring"> TODO: Returning a DOM could make rendering faster.</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> <tt class="py-name">xhtml</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-273', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xhtml</tt><tt class="py-op">:</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmllang</tt><tt class="py-op">:</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">xhtml</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-274', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'xml:lang'</tt><tt class="py-op">:</tt> <tt class="py-name">xmllang</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">xhtml</tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-275', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"> </tt>
+<a name="Message.getSubject"></a><div id="Message.getSubject-def"><a name="L746"></a><tt class="py-lineno"> 746</tt> <a class="py-toggle" href="#" id="Message.getSubject-toggle" onclick="return toggle('Message.getSubject');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#getSubject">getSubject</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.getSubject-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.getSubject-expanded"><a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"><tt class="py-docstring"> Return subject of the message</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-276', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'subject'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"> </tt>
+<a name="Message.getThread"></a><div id="Message.getThread-def"><a name="L752"></a><tt class="py-lineno"> 752</tt> <a class="py-toggle" href="#" id="Message.getThread-toggle" onclick="return toggle('Message.getThread');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#getThread">getThread</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.getThread-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.getThread-expanded"><a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"><tt class="py-docstring"> Return thread of the message</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-277', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'thread'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"> </tt>
+<a name="Message.setBody"></a><div id="Message.setBody-def"><a name="L758"></a><tt class="py-lineno"> 758</tt> <a class="py-toggle" href="#" id="Message.setBody-toggle" onclick="return toggle('Message.setBody');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#setBody">setBody</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.setBody-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.setBody-expanded"><a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"><tt class="py-docstring"> Set the text of the message"""</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-278" class="py-name" targets="Method nbxmpp.simplexml.Node.setTagData()=nbxmpp.simplexml.Node-class.html#setTagData"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-278', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"> </tt>
+<a name="Message.setXHTML"></a><div id="Message.setXHTML-def"><a name="L763"></a><tt class="py-lineno"> 763</tt> <a class="py-toggle" href="#" id="Message.setXHTML-toggle" onclick="return toggle('Message.setXHTML');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#setXHTML">setXHTML</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">,</tt> <tt class="py-param">xmllang</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.setXHTML-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.setXHTML-expanded"><a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"><tt class="py-docstring"> Sets the xhtml text of the message (XEP-0071). The parameter is the</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"><tt class="py-docstring"> "inner html" to the body.</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmllang</tt><tt class="py-op">:</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"> <tt class="py-name">dom</tt> <tt class="py-op">=</tt> <tt id="link-279" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-279', 'NodeBuilder', 'link-2');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;body xmlns="%s" xml:lang="%s"&gt;%s&lt;/body&gt;'</tt> \ </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-280" class="py-name"><a title="nbxmpp.protocol.NS_XHTML" class="py-name" href="#" onclick="return doclink('link-280', 'NS_XHTML', 'link-140');">NS_XHTML</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmllang</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-281" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.getDom()=nbxmpp.simplexml.NodeBuilder-class.html#getDom"><a title="nbxmpp.simplexml.NodeBuilder.getDom" class="py-name" href="#" onclick="return doclink('link-281', 'getDom', 'link-281');">getDom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"> <tt class="py-name">dom</tt> <tt class="py-op">=</tt> <tt id="link-282" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-282', 'NodeBuilder', 'link-2');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;body xmlns="%s"&gt;%s&lt;/body&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-283" class="py-name"><a title="nbxmpp.protocol.NS_XHTML" class="py-name" href="#" onclick="return doclink('link-283', 'NS_XHTML', 'link-140');">NS_XHTML</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"> <tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.getDom" class="py-name" href="#" onclick="return doclink('link-284', 'getDom', 'link-281');">getDom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-285', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-286" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-286', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-287', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">dom</tt><tt class="py-op">)</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-288', 'setTag', 'link-260');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-289" class="py-name"><a title="nbxmpp.protocol.NS_XHTML_IM" class="py-name" href="#" onclick="return doclink('link-289', 'NS_XHTML_IM', 'link-139');">NS_XHTML_IM</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-290', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">dom</tt><tt class="py-op">)</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"Error"</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt> </tt>
+</div><a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: log. we could not set xhtml (parse error, whatever)</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"> </tt>
+<a name="Message.setSubject"></a><div id="Message.setSubject-def"><a name="L783"></a><tt class="py-lineno"> 783</tt> <a class="py-toggle" href="#" id="Message.setSubject-toggle" onclick="return toggle('Message.setSubject');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#setSubject">setSubject</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.setSubject-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.setSubject-expanded"><a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"><tt class="py-docstring"> Set the subject of the message</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-291', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'subject'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"> </tt>
+<a name="Message.setThread"></a><div id="Message.setThread-def"><a name="L789"></a><tt class="py-lineno"> 789</tt> <a class="py-toggle" href="#" id="Message.setThread-toggle" onclick="return toggle('Message.setThread');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#setThread">setThread</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.setThread-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.setThread-expanded"><a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"><tt class="py-docstring"> Set the thread of the message</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-292" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-292', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'thread'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"> </tt>
+<a name="Message.buildReply"></a><div id="Message.buildReply-def"><a name="L795"></a><tt class="py-lineno"> 795</tt> <a class="py-toggle" href="#" id="Message.buildReply-toggle" onclick="return toggle('Message.buildReply');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#buildReply">buildReply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.buildReply-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.buildReply-expanded"><a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"><tt class="py-docstring"> Builds and returns another message object with specified text. The to,</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"><tt class="py-docstring"> from, thread and type properties of new message are pre-set as reply to</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"><tt class="py-docstring"> this message</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-293" class="py-name" targets="Class nbxmpp.protocol.Message=nbxmpp.protocol.Message-class.html"><a title="nbxmpp.protocol.Message" class="py-name" href="#" onclick="return doclink('link-293', 'Message', 'link-293');">Message</a></tt><tt class="py-op">(</tt><tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name" targets="Method nbxmpp.protocol.Protocol.getFrom()=nbxmpp.protocol.Protocol-class.html#getFrom"><a title="nbxmpp.protocol.Protocol.getFrom" class="py-name" href="#" onclick="return doclink('link-294', 'getFrom', 'link-294');">getFrom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">frm</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name" targets="Method nbxmpp.protocol.Protocol.getTo()=nbxmpp.protocol.Protocol-class.html#getTo"><a title="nbxmpp.protocol.Protocol.getTo" class="py-name" href="#" onclick="return doclink('link-295', 'getTo', 'link-295');">getTo</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-296', 'getType', 'link-170');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"> <tt class="py-name">th</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name" targets="Method nbxmpp.protocol.Message.getThread()=nbxmpp.protocol.Message-class.html#getThread"><a title="nbxmpp.protocol.Message.getThread" class="py-name" href="#" onclick="return doclink('link-297', 'getThread', 'link-297');">getThread</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">th</tt><tt class="py-op">:</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name" targets="Method nbxmpp.protocol.Message.setThread()=nbxmpp.protocol.Message-class.html#setThread"><a title="nbxmpp.protocol.Message.setThread" class="py-name" href="#" onclick="return doclink('link-298', 'setThread', 'link-298');">setThread</a></tt><tt class="py-op">(</tt><tt class="py-name">th</tt><tt class="py-op">)</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">m</tt> </tt>
+</div><a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"> </tt>
+<a name="Message.getStatusCode"></a><div id="Message.getStatusCode-def"><a name="L808"></a><tt class="py-lineno"> 808</tt> <a class="py-toggle" href="#" id="Message.getStatusCode-toggle" onclick="return toggle('Message.getStatusCode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Message-class.html#getStatusCode">getStatusCode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.getStatusCode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Message.getStatusCode-expanded"><a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"><tt class="py-docstring"> Return the status code of the message (for groupchat config change)</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">xtag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-299', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xtag</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-300', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'status'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-301', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'code'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">attrs</tt> </tt>
+</div></div><a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"> </tt>
+<a name="Presence"></a><div id="Presence-def"><a name="L818"></a><tt class="py-lineno"> 818</tt> <a class="py-toggle" href="#" id="Presence-toggle" onclick="return toggle('Presence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html">Presence</a><tt class="py-op">(</tt><tt class="py-base-class">Protocol</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Presence-expanded"><a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"> </tt>
+<a name="Presence.__init__"></a><div id="Presence.__init__-def"><a name="L820"></a><tt class="py-lineno"> 820</tt> <a class="py-toggle" href="#" id="Presence.__init__-toggle" onclick="return toggle('Presence.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">to</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">priority</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">show</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">status</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">frm</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">timestamp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt id="link-302" class="py-name"><a title="nbxmpp.protocol.NS_CLIENT" class="py-name" href="#" onclick="return doclink('link-302', 'NS_CLIENT', 'link-33');">NS_CLIENT</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.__init__-expanded"><a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"><tt class="py-docstring"> You can specify recipient, type of message, priority, show and status</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"><tt class="py-docstring"> values any additional attributes, sender of the presence, timestamp, any</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"><tt class="py-docstring"> additional payload (f.e. jabber:x:delay element) and namespace in one go.</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"><tt class="py-docstring"> Alternatively you can pass in the other XML object as the 'node'</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"><tt class="py-docstring"> parameted to replicate it as presence</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"> <tt id="link-303" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-303', 'Protocol', 'link-267');">Protocol</a></tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-304', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'presence'</tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">to</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">frm</tt><tt class="py-op">=</tt><tt class="py-name">frm</tt><tt class="py-op">,</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-name">timestamp</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">priority</tt><tt class="py-op">:</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name" targets="Method nbxmpp.protocol.Presence.setPriority()=nbxmpp.protocol.Presence-class.html#setPriority"><a title="nbxmpp.protocol.Presence.setPriority" class="py-name" href="#" onclick="return doclink('link-305', 'setPriority', 'link-305');">setPriority</a></tt><tt class="py-op">(</tt><tt class="py-name">priority</tt><tt class="py-op">)</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">show</tt><tt class="py-op">:</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name" targets="Method nbxmpp.protocol.Presence.setShow()=nbxmpp.protocol.Presence-class.html#setShow"><a title="nbxmpp.protocol.Presence.setShow" class="py-name" href="#" onclick="return doclink('link-306', 'setShow', 'link-306');">setShow</a></tt><tt class="py-op">(</tt><tt class="py-name">show</tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">status</tt><tt class="py-op">:</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name" targets="Method nbxmpp.protocol.Presence.setStatus()=nbxmpp.protocol.Presence-class.html#setStatus"><a title="nbxmpp.protocol.Presence.setStatus" class="py-name" href="#" onclick="return doclink('link-307', 'setStatus', 'link-307');">setStatus</a></tt><tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"> </tt>
+<a name="Presence.getPriority"></a><div id="Presence.getPriority-def"><a name="L839"></a><tt class="py-lineno"> 839</tt> <a class="py-toggle" href="#" id="Presence.getPriority-toggle" onclick="return toggle('Presence.getPriority');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getPriority">getPriority</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getPriority-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getPriority-expanded"><a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"><tt class="py-docstring"> Return the priority of the message</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-308', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'priority'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> </tt>
+<a name="Presence.getShow"></a><div id="Presence.getShow-def"><a name="L845"></a><tt class="py-lineno"> 845</tt> <a class="py-toggle" href="#" id="Presence.getShow-toggle" onclick="return toggle('Presence.getShow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getShow">getShow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getShow-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getShow-expanded"><a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"><tt class="py-docstring"> Return the show value of the message</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-309', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'show'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> </tt>
+<a name="Presence.getStatus"></a><div id="Presence.getStatus-def"><a name="L851"></a><tt class="py-lineno"> 851</tt> <a class="py-toggle" href="#" id="Presence.getStatus-toggle" onclick="return toggle('Presence.getStatus');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getStatus">getStatus</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getStatus-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getStatus-expanded"><a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"><tt class="py-docstring"> Return the status string of the message</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-310', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'status'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"> </tt>
+<a name="Presence.setPriority"></a><div id="Presence.setPriority-def"><a name="L857"></a><tt class="py-lineno"> 857</tt> <a class="py-toggle" href="#" id="Presence.setPriority-toggle" onclick="return toggle('Presence.setPriority');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#setPriority">setPriority</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.setPriority-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.setPriority-expanded"><a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"><tt class="py-docstring"> Set the priority of the message</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-311', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'priority'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"> </tt>
+<a name="Presence.setShow"></a><div id="Presence.setShow-def"><a name="L863"></a><tt class="py-lineno"> 863</tt> <a class="py-toggle" href="#" id="Presence.setShow-toggle" onclick="return toggle('Presence.setShow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#setShow">setShow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.setShow-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.setShow-expanded"><a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"><tt class="py-docstring"> Set the show value of the message</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-312', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'show'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> </tt>
+<a name="Presence.setStatus"></a><div id="Presence.setStatus-def"><a name="L869"></a><tt class="py-lineno"> 869</tt> <a class="py-toggle" href="#" id="Presence.setStatus-toggle" onclick="return toggle('Presence.setStatus');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#setStatus">setStatus</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.setStatus-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.setStatus-expanded"><a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"><tt class="py-docstring"> Set the status string of the message</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-313', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'status'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> </tt>
+<a name="Presence._muc_getItemAttr"></a><div id="Presence._muc_getItemAttr-def"><a name="L875"></a><tt class="py-lineno"> 875</tt> <a class="py-toggle" href="#" id="Presence._muc_getItemAttr-toggle" onclick="return toggle('Presence._muc_getItemAttr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#_muc_getItemAttr">_muc_getItemAttr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence._muc_getItemAttr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence._muc_getItemAttr-expanded"><a name="L876"></a><tt class="py-lineno"> 876</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">xtag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-314', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xtag</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-315', 'getNamespace', 'link-263');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-316" class="py-name"><a title="nbxmpp.protocol.NS_MUC_USER" class="py-name" href="#" onclick="return doclink('link-316', 'NS_MUC_USER', 'link-82');">NS_MUC_USER</a></tt><tt class="py-op">,</tt> <tt id="link-317" class="py-name"><a title="nbxmpp.protocol.NS_MUC_ADMIN" class="py-name" href="#" onclick="return doclink('link-317', 'NS_MUC_ADMIN', 'link-84');">NS_MUC_ADMIN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xtag</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-318', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-319" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-319', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"> </tt>
+<a name="Presence._muc_getSubTagDataAttr"></a><div id="Presence._muc_getSubTagDataAttr-def"><a name="L882"></a><tt class="py-lineno"> 882</tt> <a class="py-toggle" href="#" id="Presence._muc_getSubTagDataAttr-toggle" onclick="return toggle('Presence._muc_getSubTagDataAttr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#_muc_getSubTagDataAttr">_muc_getSubTagDataAttr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence._muc_getSubTagDataAttr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence._muc_getSubTagDataAttr-expanded"><a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">xtag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-320" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-320', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xtag</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-321', 'getNamespace', 'link-263');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-322" class="py-name"><a title="nbxmpp.protocol.NS_MUC_USER" class="py-name" href="#" onclick="return doclink('link-322', 'NS_MUC_USER', 'link-82');">NS_MUC_USER</a></tt><tt class="py-op">,</tt> <tt id="link-323" class="py-name"><a title="nbxmpp.protocol.NS_MUC_ADMIN" class="py-name" href="#" onclick="return doclink('link-323', 'NS_MUC_ADMIN', 'link-84');">NS_MUC_ADMIN</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xtag</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-324', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">cchild</tt> <tt class="py-keyword">in</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-325" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-325', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cchild</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-326', 'getData', 'link-240');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">cchild</tt><tt class="py-op">.</tt><tt id="link-327" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-327', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"> </tt>
+<a name="Presence.getRole"></a><div id="Presence.getRole-def"><a name="L891"></a><tt class="py-lineno"> 891</tt> <a class="py-toggle" href="#" id="Presence.getRole-toggle" onclick="return toggle('Presence.getRole');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getRole">getRole</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getRole-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getRole-expanded"><a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"><tt class="py-docstring"> Return the presence role (for groupchat)</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name" targets="Method nbxmpp.protocol.Presence._muc_getItemAttr()=nbxmpp.protocol.Presence-class.html#_muc_getItemAttr"><a title="nbxmpp.protocol.Presence._muc_getItemAttr" class="py-name" href="#" onclick="return doclink('link-328', '_muc_getItemAttr', 'link-328');">_muc_getItemAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-string">'role'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"> </tt>
+<a name="Presence.getAffiliation"></a><div id="Presence.getAffiliation-def"><a name="L897"></a><tt class="py-lineno"> 897</tt> <a class="py-toggle" href="#" id="Presence.getAffiliation-toggle" onclick="return toggle('Presence.getAffiliation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getAffiliation">getAffiliation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getAffiliation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getAffiliation-expanded"><a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"><tt class="py-docstring"> Return the presence affiliation (for groupchat)</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="nbxmpp.protocol.Presence._muc_getItemAttr" class="py-name" href="#" onclick="return doclink('link-329', '_muc_getItemAttr', 'link-328');">_muc_getItemAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-string">'affiliation'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"> </tt>
+<a name="Presence.getNewNick"></a><div id="Presence.getNewNick-def"><a name="L903"></a><tt class="py-lineno"> 903</tt> <a class="py-toggle" href="#" id="Presence.getNewNick-toggle" onclick="return toggle('Presence.getNewNick');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getNewNick">getNewNick</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getNewNick-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getNewNick-expanded"><a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"><tt class="py-docstring"> Return the status code of the presence (for groupchat)</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="nbxmpp.protocol.Presence._muc_getItemAttr" class="py-name" href="#" onclick="return doclink('link-330', '_muc_getItemAttr', 'link-328');">_muc_getItemAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-string">'nick'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> </tt>
+<a name="Presence.getJid"></a><div id="Presence.getJid-def"><a name="L909"></a><tt class="py-lineno"> 909</tt> <a class="py-toggle" href="#" id="Presence.getJid-toggle" onclick="return toggle('Presence.getJid');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getJid">getJid</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getJid-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getJid-expanded"><a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"><tt class="py-docstring"> Return the presence jid (for groupchat)</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="nbxmpp.protocol.Presence._muc_getItemAttr" class="py-name" href="#" onclick="return doclink('link-331', '_muc_getItemAttr', 'link-328');">_muc_getItemAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-string">'jid'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> </tt>
+<a name="Presence.getReason"></a><div id="Presence.getReason-def"><a name="L915"></a><tt class="py-lineno"> 915</tt> <a class="py-toggle" href="#" id="Presence.getReason-toggle" onclick="return toggle('Presence.getReason');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getReason">getReason</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getReason-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getReason-expanded"><a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"><tt class="py-docstring"> Returns the reason of the presence (for groupchat)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name" targets="Method nbxmpp.protocol.Presence._muc_getSubTagDataAttr()=nbxmpp.protocol.Presence-class.html#_muc_getSubTagDataAttr"><a title="nbxmpp.protocol.Presence._muc_getSubTagDataAttr" class="py-name" href="#" onclick="return doclink('link-332', '_muc_getSubTagDataAttr', 'link-332');">_muc_getSubTagDataAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'reason'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> </tt>
+<a name="Presence.getActor"></a><div id="Presence.getActor-def"><a name="L921"></a><tt class="py-lineno"> 921</tt> <a class="py-toggle" href="#" id="Presence.getActor-toggle" onclick="return toggle('Presence.getActor');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getActor">getActor</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getActor-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getActor-expanded"><a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"><tt class="py-docstring"> Return the reason of the presence (for groupchat)</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="nbxmpp.protocol.Presence._muc_getSubTagDataAttr" class="py-name" href="#" onclick="return doclink('link-333', '_muc_getSubTagDataAttr', 'link-332');">_muc_getSubTagDataAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'actor'</tt><tt class="py-op">,</tt> <tt class="py-string">'jid'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"> </tt>
+<a name="Presence.getStatusCode"></a><div id="Presence.getStatusCode-def"><a name="L927"></a><tt class="py-lineno"> 927</tt> <a class="py-toggle" href="#" id="Presence.getStatusCode-toggle" onclick="return toggle('Presence.getStatusCode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Presence-class.html#getStatusCode">getStatusCode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presence.getStatusCode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presence.getStatusCode-expanded"><a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"><tt class="py-docstring"> Return the status code of the presence (for groupchat)</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">xtag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-334', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xtag</tt><tt class="py-op">.</tt><tt id="link-335" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-335', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'status'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-336', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'code'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">attrs</tt> </tt>
+</div></div><a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"> </tt>
+<a name="Iq"></a><div id="Iq-def"><a name="L937"></a><tt class="py-lineno"> 937</tt> <a class="py-toggle" href="#" id="Iq-toggle" onclick="return toggle('Iq');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html">Iq</a><tt class="py-op">(</tt><tt class="py-base-class">Protocol</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Iq-expanded"><a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"><tt class="py-docstring"> XMPP Iq object - get/set dialog mechanism</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"> </tt>
+<a name="Iq.__init__"></a><div id="Iq.__init__-def"><a name="L942"></a><tt class="py-lineno"> 942</tt> <a class="py-toggle" href="#" id="Iq.__init__-toggle" onclick="return toggle('Iq.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">queryNS</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">to</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">frm</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"> <tt class="py-param">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt id="link-337" class="py-name"><a title="nbxmpp.protocol.NS_CLIENT" class="py-name" href="#" onclick="return doclink('link-337', 'NS_CLIENT', 'link-33');">NS_CLIENT</a></tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.__init__-expanded"><a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"><tt class="py-docstring"> You can specify type, query namespace any additional attributes,</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"><tt class="py-docstring"> recipient of the iq, sender of the iq, any additional payload (f.e.</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"><tt class="py-docstring"> jabber:x:data node) and namespace in one go.</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"><tt class="py-docstring"> Alternatively you can pass in the other XML object as the 'node'</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"><tt class="py-docstring"> parameted to replicate it as an iq</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"> <tt id="link-338" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-338', 'Protocol', 'link-267');">Protocol</a></tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-339', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'iq'</tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">to</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">frm</tt><tt class="py-op">=</tt><tt class="py-name">frm</tt><tt class="py-op">,</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">payload</tt><tt class="py-op">:</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name" targets="Method nbxmpp.protocol.Iq.setQueryPayload()=nbxmpp.protocol.Iq-class.html#setQueryPayload"><a title="nbxmpp.protocol.Iq.setQueryPayload" class="py-name" href="#" onclick="return doclink('link-340', 'setQueryPayload', 'link-340');">setQueryPayload</a></tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">queryNS</tt><tt class="py-op">:</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-341" class="py-name" targets="Method nbxmpp.protocol.Iq.setQueryNS()=nbxmpp.protocol.Iq-class.html#setQueryNS"><a title="nbxmpp.protocol.Iq.setQueryNS" class="py-name" href="#" onclick="return doclink('link-341', 'setQueryNS', 'link-341');">setQueryNS</a></tt><tt class="py-op">(</tt><tt class="py-name">queryNS</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"> </tt>
+<a name="Iq.getQuery"></a><div id="Iq.getQuery-def"><a name="L959"></a><tt class="py-lineno"> 959</tt> <a class="py-toggle" href="#" id="Iq.getQuery-toggle" onclick="return toggle('Iq.getQuery');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#getQuery">getQuery</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.getQuery-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.getQuery-expanded"><a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"><tt class="py-docstring"> Return the IQ's child element if it exists, None otherwise.</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"> <tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-342', 'getChildren', 'link-237');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">children</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-343" class="py-name"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-343', 'getType', 'link-170');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">and</tt> \ </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"> <tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-344', 'getName', 'link-238');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'error'</tt><tt class="py-op">:</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"> </tt>
+<a name="Iq.getQueryNS"></a><div id="Iq.getQueryNS-def"><a name="L968"></a><tt class="py-lineno"> 968</tt> <a class="py-toggle" href="#" id="Iq.getQueryNS-toggle" onclick="return toggle('Iq.getQueryNS');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#getQueryNS">getQueryNS</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.getQueryNS-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.getQueryNS-expanded"><a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"><tt class="py-docstring"> Return the namespace of the 'query' child element</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"> <tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name" targets="Method nbxmpp.protocol.Iq.getQuery()=nbxmpp.protocol.Iq-class.html#getQuery"><a title="nbxmpp.protocol.Iq.getQuery" class="py-name" href="#" onclick="return doclink('link-345', 'getQuery', 'link-345');">getQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-346" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-346', 'getNamespace', 'link-263');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"> </tt>
+<a name="Iq.getQuerynode"></a><div id="Iq.getQuerynode-def"><a name="L976"></a><tt class="py-lineno"> 976</tt> <a class="py-toggle" href="#" id="Iq.getQuerynode-toggle" onclick="return toggle('Iq.getQuerynode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#getQuerynode">getQuerynode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.getQuerynode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.getQuerynode-expanded"><a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"><tt class="py-docstring"> Return the 'node' attribute value of the 'query' child element</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"> <tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-347" class="py-name"><a title="nbxmpp.protocol.Iq.getQuery" class="py-name" href="#" onclick="return doclink('link-347', 'getQuery', 'link-345');">getQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-348', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'node'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"> </tt>
+<a name="Iq.getQueryPayload"></a><div id="Iq.getQueryPayload-def"><a name="L984"></a><tt class="py-lineno"> 984</tt> <a class="py-toggle" href="#" id="Iq.getQueryPayload-toggle" onclick="return toggle('Iq.getQueryPayload');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#getQueryPayload">getQueryPayload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.getQueryPayload-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.getQueryPayload-expanded"><a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"><tt class="py-docstring"> Return the 'query' child element payload</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"> <tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-349" class="py-name"><a title="nbxmpp.protocol.Iq.getQuery" class="py-name" href="#" onclick="return doclink('link-349', 'getQuery', 'link-345');">getQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name" targets="Method nbxmpp.simplexml.Node.getPayload()=nbxmpp.simplexml.Node-class.html#getPayload"><a title="nbxmpp.simplexml.Node.getPayload" class="py-name" href="#" onclick="return doclink('link-350', 'getPayload', 'link-350');">getPayload</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"> </tt>
+<a name="Iq.getQueryChildren"></a><div id="Iq.getQueryChildren-def"><a name="L992"></a><tt class="py-lineno"> 992</tt> <a class="py-toggle" href="#" id="Iq.getQueryChildren-toggle" onclick="return toggle('Iq.getQueryChildren');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#getQueryChildren">getQueryChildren</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.getQueryChildren-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.getQueryChildren-expanded"><a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"><tt class="py-docstring"> Return the 'query' child element child nodes</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="nbxmpp.protocol.Iq.getQuery" class="py-name" href="#" onclick="return doclink('link-351', 'getQuery', 'link-345');">getQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-352', 'getChildren', 'link-237');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> </tt>
+<a name="Iq.setQuery"></a><div id="Iq.setQuery-def"><a name="L1000"></a><tt class="py-lineno">1000</tt> <a class="py-toggle" href="#" id="Iq.setQuery-toggle" onclick="return toggle('Iq.setQuery');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#setQuery">setQuery</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.setQuery-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.setQuery-expanded"><a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"><tt class="py-docstring"> Change the name of the query node, creating it if needed. Keep the</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"><tt class="py-docstring"> existing name if none is given (use 'query' if it's a creation).</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"><tt class="py-docstring"> Return the query node.</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-353" class="py-name"><a title="nbxmpp.protocol.Iq.getQuery" class="py-name" href="#" onclick="return doclink('link-353', 'getQuery', 'link-345');">getQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">query</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-354', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-355" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-355', 'name', 'link-165');">name</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-356" class="py-name" targets="Method nbxmpp.simplexml.Node.setName()=nbxmpp.simplexml.Node-class.html#setName"><a title="nbxmpp.simplexml.Node.setName" class="py-name" href="#" onclick="return doclink('link-356', 'setName', 'link-356');">setName</a></tt><tt class="py-op">(</tt><tt id="link-357" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-357', 'name', 'link-165');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">query</tt> </tt>
+</div><a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> </tt>
+<a name="Iq.setQueryNS"></a><div id="Iq.setQueryNS-def"><a name="L1013"></a><tt class="py-lineno">1013</tt> <a class="py-toggle" href="#" id="Iq.setQueryNS-toggle" onclick="return toggle('Iq.setQueryNS');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#setQueryNS">setQueryNS</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.setQueryNS-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.setQueryNS-expanded"><a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"><tt class="py-docstring"> Set the namespace of the 'query' child element</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name" targets="Method nbxmpp.protocol.Iq.setQuery()=nbxmpp.protocol.Iq-class.html#setQuery"><a title="nbxmpp.protocol.Iq.setQuery" class="py-name" href="#" onclick="return doclink('link-358', 'setQuery', 'link-358');">setQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-359', 'setNamespace', 'link-207');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">namespace</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"> </tt>
+<a name="Iq.setQueryPayload"></a><div id="Iq.setQueryPayload-def"><a name="L1019"></a><tt class="py-lineno">1019</tt> <a class="py-toggle" href="#" id="Iq.setQueryPayload-toggle" onclick="return toggle('Iq.setQueryPayload');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#setQueryPayload">setQueryPayload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.setQueryPayload-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.setQueryPayload-expanded"><a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"><tt class="py-docstring"> Set the 'query' child element payload</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-360" class="py-name"><a title="nbxmpp.protocol.Iq.setQuery" class="py-name" href="#" onclick="return doclink('link-360', 'setQuery', 'link-358');">setQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-361" class="py-name" targets="Method nbxmpp.simplexml.Node.setPayload()=nbxmpp.simplexml.Node-class.html#setPayload"><a title="nbxmpp.simplexml.Node.setPayload" class="py-name" href="#" onclick="return doclink('link-361', 'setPayload', 'link-361');">setPayload</a></tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"> </tt>
+<a name="Iq.setQuerynode"></a><div id="Iq.setQuerynode-def"><a name="L1025"></a><tt class="py-lineno">1025</tt> <a class="py-toggle" href="#" id="Iq.setQuerynode-toggle" onclick="return toggle('Iq.setQuerynode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#setQuerynode">setQuerynode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.setQuerynode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.setQuerynode-expanded"><a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"><tt class="py-docstring"> Set the 'node' attribute value of the 'query' child element</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="nbxmpp.protocol.Iq.setQuery" class="py-name" href="#" onclick="return doclink('link-362', 'setQuery', 'link-358');">setQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-363" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-363', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'node'</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"> </tt>
+<a name="Iq.buildReply"></a><div id="Iq.buildReply-def"><a name="L1031"></a><tt class="py-lineno">1031</tt> <a class="py-toggle" href="#" id="Iq.buildReply-toggle" onclick="return toggle('Iq.buildReply');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Iq-class.html#buildReply">buildReply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Iq.buildReply-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Iq.buildReply-expanded"><a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"><tt class="py-docstring"> Build and return another Iq object of specified type. The to, from and</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"><tt class="py-docstring"> query child node of new Iq are pre-set as reply to this Iq.</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-364" class="py-name" targets="Class nbxmpp.protocol.Iq=nbxmpp.protocol.Iq-class.html"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-364', 'Iq', 'link-364');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name"><a title="nbxmpp.protocol.Protocol.getFrom" class="py-name" href="#" onclick="return doclink('link-365', 'getFrom', 'link-294');">getFrom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">frm</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="nbxmpp.protocol.Protocol.getTo" class="py-name" href="#" onclick="return doclink('link-366', 'getTo', 'link-295');">getTo</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-367" class="py-name" targets="Method nbxmpp.protocol.Protocol.getID()=nbxmpp.protocol.Protocol-class.html#getID"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-367', 'getID', 'link-367');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="nbxmpp.protocol.Iq.setQuery" class="py-name" href="#" onclick="return doclink('link-368', 'setQuery', 'link-358');">setQuery</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-369" class="py-name"><a title="nbxmpp.protocol.Iq.getQuery" class="py-name" href="#" onclick="return doclink('link-369', 'getQuery', 'link-345');">getQuery</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-370', 'getName', 'link-238');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-371" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-371', 'setNamespace', 'link-207');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name" targets="Method nbxmpp.protocol.Iq.getQueryNS()=nbxmpp.protocol.Iq-class.html#getQueryNS"><a title="nbxmpp.protocol.Iq.getQueryNS" class="py-name" href="#" onclick="return doclink('link-372', 'getQueryNS', 'link-372');">getQueryNS</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">iq</tt> </tt>
+</div></div><a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"> </tt>
+<a name="Hashes"></a><div id="Hashes-def"><a name="L1041"></a><tt class="py-lineno">1041</tt> <a class="py-toggle" href="#" id="Hashes-toggle" onclick="return toggle('Hashes');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Hashes-class.html">Hashes</a><tt class="py-op">(</tt><tt class="py-base-class">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"><tt class="py-docstring"> Hash elements for various XEPs as defined in XEP-300</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"><tt class="py-string"> RECOMENDED HASH USE:</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"><tt class="py-string"> Algorithm Support</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"><tt class="py-string"> MD2 MUST NOT</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt> <tt class="py-line"><tt class="py-string"> MD4 MUST NOT</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt> <tt class="py-line"><tt class="py-string"> MD5 MAY</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"><tt class="py-string"> SHA-1 MUST</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt> <tt class="py-line"><tt class="py-string"> SHA-256 MUST</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt> <tt class="py-line"><tt class="py-string"> SHA-512 SHOULD</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"> <tt id="link-373" class="py-name" targets="Variable nbxmpp.protocol.Hashes.supported=nbxmpp.protocol.Hashes-class.html#supported"><a title="nbxmpp.protocol.Hashes.supported" class="py-name" href="#" onclick="return doclink('link-373', 'supported', 'link-373');">supported</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'md5'</tt><tt class="py-op">,</tt> <tt class="py-string">'sha-1'</tt><tt class="py-op">,</tt> <tt class="py-string">'sha-256'</tt><tt class="py-op">,</tt> <tt class="py-string">'sha-512'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"> </tt>
+<a name="Hashes.__init__"></a><div id="Hashes.__init__-def"><a name="L1059"></a><tt class="py-lineno">1059</tt> <a class="py-toggle" href="#" id="Hashes.__init__-toggle" onclick="return toggle('Hashes.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Hashes-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nsp</tt><tt class="py-op">=</tt><tt id="link-374" class="py-name"><a title="nbxmpp.protocol.NS_HASHES" class="py-name" href="#" onclick="return doclink('link-374', 'NS_HASHES', 'link-149');">NS_HASHES</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Hashes.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Hashes.__init__-expanded"><a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"> <tt id="link-375" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-375', 'Node', 'link-1');">Node</a></tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-376', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-377" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-377', 'setNamespace', 'link-207');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">nsp</tt><tt class="py-op">)</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="nbxmpp.simplexml.Node.setName" class="py-name" href="#" onclick="return doclink('link-378', 'setName', 'link-356');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'hashes'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"> </tt>
+<a name="Hashes.calculateHash"></a><div id="Hashes.calculateHash-def"><a name="L1064"></a><tt class="py-lineno">1064</tt> <a class="py-toggle" href="#" id="Hashes.calculateHash-toggle" onclick="return toggle('Hashes.calculateHash');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Hashes-class.html#calculateHash">calculateHash</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">algo</tt><tt class="py-op">,</tt> <tt class="py-param">file_string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Hashes.calculateHash-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Hashes.calculateHash-expanded"><a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"><tt class="py-docstring"> Calculate the hash and add it. It is preferable doing it here</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"><tt class="py-docstring"> instead of doing it all over the place in Gajim.</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"> <tt class="py-name">hash_</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"> <tt class="py-comment"># file_string can be a string or a file</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">file_string</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> <tt class="py-comment"># if it is a string</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'md5'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">md5</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'sha-1'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha1</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'sha-256'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha256</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'sha-512'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha512</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hl</tt><tt class="py-op">:</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"> <tt class="py-name">hl</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">file_string</tt><tt class="py-op">)</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"> <tt class="py-name">hash_</tt> <tt class="py-op">=</tt> <tt class="py-name">hl</tt><tt class="py-op">.</tt><tt class="py-name">hexdigest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># if it is a file</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt> <tt class="py-line"> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'md5'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">md5</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'sha-1'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha1</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'sha-256'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha256</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">algo</tt> <tt class="py-op">==</tt> <tt class="py-string">'sha-512'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha512</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hl</tt><tt class="py-op">:</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">file_string</tt><tt class="py-op">:</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"> <tt class="py-name">hl</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"> <tt class="py-name">hash_</tt> <tt class="py-op">=</tt> <tt class="py-name">hl</tt><tt class="py-op">.</tt><tt class="py-name">hexdigest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hash_</tt> </tt>
+</div><a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"> </tt>
+<a name="Hashes.addHash"></a><div id="Hashes.addHash-def"><a name="L1103"></a><tt class="py-lineno">1103</tt> <a class="py-toggle" href="#" id="Hashes.addHash-toggle" onclick="return toggle('Hashes.addHash');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Hashes-class.html#addHash">addHash</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hash_</tt><tt class="py-op">,</tt> <tt class="py-param">algo</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Hashes.addHash-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Hashes.addHash-expanded"><a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"><tt class="py-docstring"> More than one hash can be added. Although it is permitted, it should</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"><tt class="py-docstring"> not be done for big files because it could slow down Gajim.</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-string">'algo'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">algo</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-379', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'hash'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">hash_</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"> </tt>
+<a name="Acks"></a><div id="Acks-def"><a name="L1112"></a><tt class="py-lineno">1112</tt> <a class="py-toggle" href="#" id="Acks-toggle" onclick="return toggle('Acks');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Acks-class.html">Acks</a><tt class="py-op">(</tt><tt class="py-base-class">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Acks-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Acks-expanded"><a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"><tt class="py-docstring"> Acknowledgement elements for Stream Management</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="Acks.__init__"></a><div id="Acks.__init__-def"><a name="L1116"></a><tt class="py-lineno">1116</tt> <a class="py-toggle" href="#" id="Acks.__init__-toggle" onclick="return toggle('Acks.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Acks-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nsp</tt><tt class="py-op">=</tt><tt id="link-380" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-380', 'NS_STREAM_MGMT', 'link-148');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Acks.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Acks.__init__-expanded"><a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"> <tt id="link-381" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-381', 'Node', 'link-1');">Node</a></tt><tt class="py-op">.</tt><tt id="link-382" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-382', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-383', 'setNamespace', 'link-207');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">nsp</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"> </tt>
+<a name="Acks.buildAnswer"></a><div id="Acks.buildAnswer-def"><a name="L1120"></a><tt class="py-lineno">1120</tt> <a class="py-toggle" href="#" id="Acks.buildAnswer-toggle" onclick="return toggle('Acks.buildAnswer');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Acks-class.html#buildAnswer">buildAnswer</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handled</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Acks.buildAnswer-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Acks.buildAnswer-expanded"><a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt> <tt class="py-line"><tt class="py-docstring"> handled is the number of stanzas handled</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="nbxmpp.simplexml.Node.setName" class="py-name" href="#" onclick="return doclink('link-384', 'setName', 'link-356');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-385', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'h'</tt><tt class="py-op">,</tt> <tt class="py-name">handled</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"> </tt>
+<a name="Acks.buildRequest"></a><div id="Acks.buildRequest-def"><a name="L1127"></a><tt class="py-lineno">1127</tt> <a class="py-toggle" href="#" id="Acks.buildRequest-toggle" onclick="return toggle('Acks.buildRequest');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Acks-class.html#buildRequest">buildRequest</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Acks.buildRequest-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Acks.buildRequest-expanded"><a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-386" class="py-name"><a title="nbxmpp.simplexml.Node.setName" class="py-name" href="#" onclick="return doclink('link-386', 'setName', 'link-356');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"> </tt>
+<a name="Acks.buildEnable"></a><div id="Acks.buildEnable-def"><a name="L1130"></a><tt class="py-lineno">1130</tt> <a class="py-toggle" href="#" id="Acks.buildEnable-toggle" onclick="return toggle('Acks.buildEnable');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Acks-class.html#buildEnable">buildEnable</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resume</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Acks.buildEnable-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Acks.buildEnable-expanded"><a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="nbxmpp.simplexml.Node.setName" class="py-name" href="#" onclick="return doclink('link-387', 'setName', 'link-356');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'enable'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resume</tt><tt class="py-op">:</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-388', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'resume'</tt><tt class="py-op">,</tt> <tt class="py-string">'true'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"> </tt>
+<a name="Acks.buildResume"></a><div id="Acks.buildResume-def"><a name="L1135"></a><tt class="py-lineno">1135</tt> <a class="py-toggle" href="#" id="Acks.buildResume-toggle" onclick="return toggle('Acks.buildResume');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Acks-class.html#buildResume">buildResume</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handled</tt><tt class="py-op">,</tt> <tt class="py-param">previd</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Acks.buildResume-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Acks.buildResume-expanded"><a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="nbxmpp.simplexml.Node.setName" class="py-name" href="#" onclick="return doclink('link-389', 'setName', 'link-356');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'resume'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-390" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-390', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'h'</tt><tt class="py-op">,</tt> <tt class="py-name">handled</tt><tt class="py-op">)</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-391', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'previd'</tt><tt class="py-op">,</tt> <tt class="py-name">previd</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"> </tt>
+<a name="ErrorNode"></a><div id="ErrorNode-def"><a name="L1140"></a><tt class="py-lineno">1140</tt> <a class="py-toggle" href="#" id="ErrorNode-toggle" onclick="return toggle('ErrorNode');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.ErrorNode-class.html">ErrorNode</a><tt class="py-op">(</tt><tt class="py-base-class">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ErrorNode-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ErrorNode-expanded"><a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"><tt class="py-docstring"> XMPP-style error element</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"><tt class="py-docstring"> In the case of stanza error should be attached to XMPP stanza.</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"><tt class="py-docstring"> In the case of stream-level errors should be used separately.</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"> </tt>
+<a name="ErrorNode.__init__"></a><div id="ErrorNode.__init__-def"><a name="L1148"></a><tt class="py-lineno">1148</tt> <a class="py-toggle" href="#" id="ErrorNode.__init__-toggle" onclick="return toggle('ErrorNode.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.ErrorNode-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ErrorNode.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ErrorNode.__init__-expanded"><a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"><tt class="py-docstring"> Mandatory parameter: name - name of error condition.</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"><tt class="py-docstring"> Optional parameters: code, typ, text.</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"><tt class="py-docstring"> Used for backwards compartibility with older jabber protocol.</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-392" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-392', 'name', 'link-165');">name</a></tt> <tt class="py-keyword">in</tt> <tt id="link-393" class="py-name"><a title="nbxmpp.ERRORS
+nbxmpp.protocol.ERRORS" class="py-name" href="#" onclick="return doclink('link-393', 'ERRORS', 'link-157');">ERRORS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"> <tt class="py-name">cod</tt><tt class="py-op">,</tt> <tt class="py-name">type_</tt><tt class="py-op">,</tt> <tt class="py-name">txt</tt> <tt class="py-op">=</tt> <tt id="link-394" class="py-name"><a title="nbxmpp.ERRORS
+nbxmpp.protocol.ERRORS" class="py-name" href="#" onclick="return doclink('link-394', 'ERRORS', 'link-157');">ERRORS</a></tt><tt class="py-op">[</tt><tt id="link-395" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-395', 'name', 'link-165');">name</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"> <tt class="py-name">ns</tt> <tt class="py-op">=</tt> <tt id="link-396" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-396', 'name', 'link-165');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"> <tt class="py-name">cod</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">type_</tt><tt class="py-op">,</tt> <tt class="py-name">txt</tt> <tt class="py-op">=</tt> <tt class="py-string">'500'</tt><tt class="py-op">,</tt> <tt id="link-397" class="py-name"><a title="nbxmpp.protocol.NS_STANZAS" class="py-name" href="#" onclick="return doclink('link-397', 'NS_STANZAS', 'link-123');">NS_STANZAS</a></tt><tt class="py-op">,</tt> <tt class="py-string">'cancel'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-name">type_</tt> <tt class="py-op">=</tt> <tt class="py-name">typ</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">code</tt><tt class="py-op">:</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"> <tt class="py-name">cod</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">text</tt><tt class="py-op">:</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-name">txt</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt id="link-398" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-398', 'Node', 'link-1');">Node</a></tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-399', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'error'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt id="link-400" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-400', 'Node', 'link-1');">Node</a></tt><tt class="py-op">(</tt><tt id="link-401" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-401', 'name', 'link-165');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type_</tt><tt class="py-op">:</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-402" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-402', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-name">type_</tt><tt class="py-op">)</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">cod</tt><tt class="py-op">:</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="nbxmpp.simplexml.Node.setName" class="py-name" href="#" onclick="return doclink('link-403', 'setName', 'link-356');">setName</a></tt><tt class="py-op">(</tt><tt class="py-string">'stream:error'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">txt</tt><tt class="py-op">:</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-404', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt id="link-405" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-405', 'Node', 'link-1');">Node</a></tt><tt class="py-op">(</tt><tt class="py-name">ns</tt> <tt class="py-op">+</tt> <tt class="py-string">' text'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">txt</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">cod</tt><tt class="py-op">:</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-406', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'code'</tt><tt class="py-op">,</tt> <tt class="py-name">cod</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"> </tt>
+<a name="Error"></a><div id="Error-def"><a name="L1175"></a><tt class="py-lineno">1175</tt> <a class="py-toggle" href="#" id="Error-toggle" onclick="return toggle('Error');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.Error-class.html">Error</a><tt class="py-op">(</tt><tt class="py-base-class">Protocol</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Error-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Error-expanded"><a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"><tt class="py-docstring"> Used to quickly transform received stanza into error reply</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"> </tt>
+<a name="Error.__init__"></a><div id="Error.__init__-def"><a name="L1180"></a><tt class="py-lineno">1180</tt> <a class="py-toggle" href="#" id="Error.__init__-toggle" onclick="return toggle('Error.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Error-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">,</tt> <tt class="py-param">error</tt><tt class="py-op">,</tt> <tt class="py-param">reply</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Error.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Error.__init__-expanded"><a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"><tt class="py-docstring"> Create error reply basing on the received 'node' stanza and the 'error'</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"><tt class="py-docstring"> error condition</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"><tt class="py-docstring"> If the 'node' is not the received stanza but locally created ('to' and</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"><tt class="py-docstring"> 'from' fields needs not swapping) specify the 'reply' argument as false.</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">:</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"> <tt id="link-407" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-407', 'Protocol', 'link-267');">Protocol</a></tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-408', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">to</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="nbxmpp.protocol.Protocol.getFrom" class="py-name" href="#" onclick="return doclink('link-409', 'getFrom', 'link-294');">getFrom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">frm</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="nbxmpp.protocol.Protocol.getTo" class="py-name" href="#" onclick="return doclink('link-410', 'getTo', 'link-295');">getTo</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"> <tt id="link-411" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-411', 'Protocol', 'link-267');">Protocol</a></tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-412', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name" targets="Method nbxmpp.protocol.Protocol.setError()=nbxmpp.protocol.Protocol-class.html#setError"><a title="nbxmpp.protocol.Protocol.setError" class="py-name" href="#" onclick="return doclink('link-413', 'setError', 'link-413');">setError</a></tt><tt class="py-op">(</tt><tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-414', 'getType', 'link-170');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'error'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-415', '__str__', 'link-197');">__str__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-416" class="py-name" targets="Method nbxmpp.protocol.Error.__dupstr__()=nbxmpp.protocol.Error-class.html#__dupstr__"><a title="nbxmpp.protocol.Error.__dupstr__" class="py-name" href="#" onclick="return doclink('link-416', '__dupstr__', 'link-416');">__dupstr__</a></tt> </tt>
+</div><a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"> </tt>
+<a name="Error.__dupstr__"></a><div id="Error.__dupstr__-def"><a name="L1196"></a><tt class="py-lineno">1196</tt> <a class="py-toggle" href="#" id="Error.__dupstr__-toggle" onclick="return toggle('Error.__dupstr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.Error-class.html#__dupstr__">__dupstr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">dup1</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">dup2</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Error.__dupstr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Error.__dupstr__-expanded"><a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"><tt class="py-docstring"> Dummy function used as preventor of creating error node in reply to error</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"><tt class="py-docstring"> node. I.e. you will not be able to serialise "double" error into string.</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+</div></div><a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"> </tt>
+<a name="DataField"></a><div id="DataField-def"><a name="L1203"></a><tt class="py-lineno">1203</tt> <a class="py-toggle" href="#" id="DataField-toggle" onclick="return toggle('DataField');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html">DataField</a><tt class="py-op">(</tt><tt class="py-base-class">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DataField-expanded"><a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"><tt class="py-docstring"> This class is used in the DataForm class to describe the single data item</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"><tt class="py-docstring"> If you are working with jabber:x:data (XEP-0004, XEP-0068, XEP-0122) then</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"><tt class="py-docstring"> you will need to work with instances of this class.</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"> </tt>
+<a name="DataField.__init__"></a><div id="DataField.__init__-def"><a name="L1211"></a><tt class="py-lineno">1211</tt> <a class="py-toggle" href="#" id="DataField.__init__-toggle" onclick="return toggle('DataField.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">required</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">desc</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"> <tt class="py-param">options</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.__init__-expanded"><a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"><tt class="py-docstring"> Create new data field of specified name,value and type</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"><tt class="py-docstring"> Also 'required','desc' and 'options' fields can be set. Alternatively</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"><tt class="py-docstring"> other XML object can be passed in as the 'node' parameted</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"><tt class="py-docstring"> to replicate it as a new datafiled.</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"> <tt id="link-417" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-417', 'Node', 'link-1');">Node</a></tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-418', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'field'</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-419" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-419', 'name', 'link-165');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name" targets="Method nbxmpp.protocol.DataField.setVar()=nbxmpp.protocol.DataField-class.html#setVar"><a title="nbxmpp.protocol.DataField.setVar" class="py-name" href="#" onclick="return doclink('link-420', 'setVar', 'link-420');">setVar</a></tt><tt class="py-op">(</tt><tt id="link-421" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-421', 'name', 'link-165');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name" targets="Method nbxmpp.protocol.DataField.setValues()=nbxmpp.protocol.DataField-class.html#setValues"><a title="nbxmpp.protocol.DataField.setValues" class="py-name" href="#" onclick="return doclink('link-422', 'setValues', 'link-422');">setValues</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-423" class="py-name" targets="Method nbxmpp.protocol.DataField.setValue()=nbxmpp.protocol.DataField-class.html#setValue"><a title="nbxmpp.protocol.DataField.setValue" class="py-name" href="#" onclick="return doclink('link-423', 'setValue', 'link-423');">setValue</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="nbxmpp.protocol.DataField.setType
+nbxmpp.protocol.DataForm.setType
+nbxmpp.protocol.Protocol.setType" class="py-name" href="#" onclick="return doclink('link-424', 'setType', 'link-258');">setType</a></tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">)</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">node</tt><tt class="py-op">:</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-425" class="py-name"><a title="nbxmpp.protocol.DataField.setType
+nbxmpp.protocol.DataForm.setType
+nbxmpp.protocol.Protocol.setType" class="py-name" href="#" onclick="return doclink('link-425', 'setType', 'link-258');">setType</a></tt><tt class="py-op">(</tt><tt class="py-string">'text-single'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">required</tt><tt class="py-op">:</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-426" class="py-name" targets="Method nbxmpp.protocol.DataField.setRequired()=nbxmpp.protocol.DataField-class.html#setRequired"><a title="nbxmpp.protocol.DataField.setRequired" class="py-name" href="#" onclick="return doclink('link-426', 'setRequired', 'link-426');">setRequired</a></tt><tt class="py-op">(</tt><tt class="py-name">required</tt><tt class="py-op">)</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-427" class="py-name" targets="Method nbxmpp.protocol.DataField.setDesc()=nbxmpp.protocol.DataField-class.html#setDesc"><a title="nbxmpp.protocol.DataField.setDesc" class="py-name" href="#" onclick="return doclink('link-427', 'setDesc', 'link-427');">setDesc</a></tt><tt class="py-op">(</tt><tt class="py-name">desc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-428" class="py-name" targets="Method nbxmpp.protocol.DataField.setOptions()=nbxmpp.protocol.DataField-class.html#setOptions"><a title="nbxmpp.protocol.DataField.setOptions" class="py-name" href="#" onclick="return doclink('link-428', 'setOptions', 'link-428');">setOptions</a></tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1237"></a><tt class="py-lineno">1237</tt> <tt class="py-line"> </tt>
+<a name="DataField.setRequired"></a><div id="DataField.setRequired-def"><a name="L1238"></a><tt class="py-lineno">1238</tt> <a class="py-toggle" href="#" id="DataField.setRequired-toggle" onclick="return toggle('DataField.setRequired');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#setRequired">setRequired</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">req</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.setRequired-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.setRequired-expanded"><a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt> <tt class="py-line"><tt class="py-docstring"> Change the state of the 'required' flag</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">req</tt><tt class="py-op">:</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-429', 'setTag', 'link-260');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name" targets="Method nbxmpp.simplexml.Node.delChild()=nbxmpp.simplexml.Node-class.html#delChild"><a title="nbxmpp.simplexml.Node.delChild" class="py-name" href="#" onclick="return doclink('link-430', 'delChild', 'link-430');">delChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+</div><a name="L1249"></a><tt class="py-lineno">1249</tt> <tt class="py-line"> </tt>
+<a name="DataField.isRequired"></a><div id="DataField.isRequired-def"><a name="L1250"></a><tt class="py-lineno">1250</tt> <a class="py-toggle" href="#" id="DataField.isRequired-toggle" onclick="return toggle('DataField.isRequired');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#isRequired">isRequired</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.isRequired-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.isRequired-expanded"><a name="L1251"></a><tt class="py-lineno">1251</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt> <tt class="py-line"><tt class="py-docstring"> Return in this field a required one</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-431', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1255"></a><tt class="py-lineno">1255</tt> <tt class="py-line"> </tt>
+<a name="DataField.setDesc"></a><div id="DataField.setDesc-def"><a name="L1256"></a><tt class="py-lineno">1256</tt> <a class="py-toggle" href="#" id="DataField.setDesc-toggle" onclick="return toggle('DataField.setDesc');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#setDesc">setDesc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.setDesc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.setDesc-expanded"><a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"><tt class="py-docstring"> Set the description of this field</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-432', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'desc'</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"> </tt>
+<a name="DataField.getDesc"></a><div id="DataField.getDesc-def"><a name="L1262"></a><tt class="py-lineno">1262</tt> <a class="py-toggle" href="#" id="DataField.getDesc-toggle" onclick="return toggle('DataField.getDesc');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#getDesc">getDesc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.getDesc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.getDesc-expanded"><a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"><tt class="py-docstring"> Return the description of this field</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-433" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-433', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'desc'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"> </tt>
+<a name="DataField.setValue"></a><div id="DataField.setValue-def"><a name="L1268"></a><tt class="py-lineno">1268</tt> <a class="py-toggle" href="#" id="DataField.setValue-toggle" onclick="return toggle('DataField.setValue');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#setValue">setValue</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.setValue-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.setValue-expanded"><a name="L1269"></a><tt class="py-lineno">1269</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt> <tt class="py-line"><tt class="py-docstring"> Set the value of this field</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-434" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-434', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1273"></a><tt class="py-lineno">1273</tt> <tt class="py-line"> </tt>
+<a name="DataField.getValue"></a><div id="DataField.getValue-def"><a name="L1274"></a><tt class="py-lineno">1274</tt> <a class="py-toggle" href="#" id="DataField.getValue-toggle" onclick="return toggle('DataField.getValue');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#getValue">getValue</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.getValue-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.getValue-expanded"><a name="L1275"></a><tt class="py-lineno">1275</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-435', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"> </tt>
+<a name="DataField.setValues"></a><div id="DataField.setValues-def"><a name="L1277"></a><tt class="py-lineno">1277</tt> <a class="py-toggle" href="#" id="DataField.setValues-toggle" onclick="return toggle('DataField.setValues');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#setValues">setValues</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">lst</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.setValues-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.setValues-expanded"><a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"><tt class="py-docstring"> Set the values of this field as values-list. Replaces all previous filed</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"><tt class="py-docstring"> values! If you need to just add a value - use addValue method</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-436" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-436', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="nbxmpp.simplexml.Node.delChild" class="py-name" href="#" onclick="return doclink('link-437', 'delChild', 'link-430');">delChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lst</tt><tt class="py-op">:</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-438" class="py-name" targets="Method nbxmpp.protocol.DataField.addValue()=nbxmpp.protocol.DataField-class.html#addValue"><a title="nbxmpp.protocol.DataField.addValue" class="py-name" href="#" onclick="return doclink('link-438', 'addValue', 'link-438');">addValue</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> </tt>
+<a name="DataField.addValue"></a><div id="DataField.addValue-def"><a name="L1287"></a><tt class="py-lineno">1287</tt> <a class="py-toggle" href="#" id="DataField.addValue-toggle" onclick="return toggle('DataField.addValue');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#addValue">addValue</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.addValue-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.addValue-expanded"><a name="L1288"></a><tt class="py-lineno">1288</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"><tt class="py-docstring"> Add one more value to this field. Used in 'get' iq's or such</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-439', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">val</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"> </tt>
+<a name="DataField.getValues"></a><div id="DataField.getValues-def"><a name="L1293"></a><tt class="py-lineno">1293</tt> <a class="py-toggle" href="#" id="DataField.getValues-toggle" onclick="return toggle('DataField.getValues');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#getValues">getValues</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.getValues-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.getValues-expanded"><a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"><tt class="py-docstring"> Return the list of values associated with this field</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">tag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-440" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-440', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-441', 'getData', 'link-240');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>
+</div><a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"> </tt>
+<a name="DataField.getOptions"></a><div id="DataField.getOptions-def"><a name="L1302"></a><tt class="py-lineno">1302</tt> <a class="py-toggle" href="#" id="DataField.getOptions-toggle" onclick="return toggle('DataField.getOptions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#getOptions">getOptions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.getOptions-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.getOptions-expanded"><a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"><tt class="py-docstring"> Return label-option pairs list associated with this field</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">tag</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-442" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-442', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'option'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-443', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'label'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt id="link-444" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-444', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>
+</div><a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"> </tt>
+<a name="DataField.setOptions"></a><div id="DataField.setOptions-def"><a name="L1311"></a><tt class="py-lineno">1311</tt> <a class="py-toggle" href="#" id="DataField.setOptions-toggle" onclick="return toggle('DataField.setOptions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#setOptions">setOptions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">lst</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.setOptions-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.setOptions-expanded"><a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"><tt class="py-docstring"> Set label-option pairs list associated with this field</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-445', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'option'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="nbxmpp.simplexml.Node.delChild" class="py-name" href="#" onclick="return doclink('link-446', 'delChild', 'link-430');">delChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'option'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">opt</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lst</tt><tt class="py-op">:</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-447" class="py-name" targets="Method nbxmpp.protocol.DataField.addOption()=nbxmpp.protocol.DataField-class.html#addOption"><a title="nbxmpp.protocol.DataField.addOption" class="py-name" href="#" onclick="return doclink('link-447', 'addOption', 'link-447');">addOption</a></tt><tt class="py-op">(</tt><tt class="py-name">opt</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1319"></a><tt class="py-lineno">1319</tt> <tt class="py-line"> </tt>
+<a name="DataField.addOption"></a><div id="DataField.addOption-def"><a name="L1320"></a><tt class="py-lineno">1320</tt> <a class="py-toggle" href="#" id="DataField.addOption-toggle" onclick="return toggle('DataField.addOption');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#addOption">addOption</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">opt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.addOption-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.addOption-expanded"><a name="L1321"></a><tt class="py-lineno">1321</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt> <tt class="py-line"><tt class="py-docstring"> Add one more label-option pair to this field</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">opt</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-448" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-448', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'option'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-449', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">,</tt> <tt class="py-name">opt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-450" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-450', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'option'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'label'</tt><tt class="py-op">:</tt> <tt class="py-name">opt</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-451', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt> <tt class="py-line"> <tt class="py-name">opt</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1329"></a><tt class="py-lineno">1329</tt> <tt class="py-line"> </tt>
+<a name="DataField.getType"></a><div id="DataField.getType-def"><a name="L1330"></a><tt class="py-lineno">1330</tt> <a class="py-toggle" href="#" id="DataField.getType-toggle" onclick="return toggle('DataField.getType');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#getType">getType</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.getType-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.getType-expanded"><a name="L1331"></a><tt class="py-lineno">1331</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt> <tt class="py-line"><tt class="py-docstring"> Get type of this field</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-452" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-452', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1335"></a><tt class="py-lineno">1335</tt> <tt class="py-line"> </tt>
+<a name="DataField.setType"></a><div id="DataField.setType-def"><a name="L1336"></a><tt class="py-lineno">1336</tt> <a class="py-toggle" href="#" id="DataField.setType-toggle" onclick="return toggle('DataField.setType');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#setType">setType</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.setType-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.setType-expanded"><a name="L1337"></a><tt class="py-lineno">1337</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt> <tt class="py-line"><tt class="py-docstring"> Set type of this field</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-453', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1341"></a><tt class="py-lineno">1341</tt> <tt class="py-line"> </tt>
+<a name="DataField.getVar"></a><div id="DataField.getVar-def"><a name="L1342"></a><tt class="py-lineno">1342</tt> <a class="py-toggle" href="#" id="DataField.getVar-toggle" onclick="return toggle('DataField.getVar');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#getVar">getVar</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.getVar-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.getVar-expanded"><a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"><tt class="py-docstring"> Get 'var' attribute value of this field</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-454', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'var'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"> </tt>
+<a name="DataField.setVar"></a><div id="DataField.setVar-def"><a name="L1348"></a><tt class="py-lineno">1348</tt> <a class="py-toggle" href="#" id="DataField.setVar-toggle" onclick="return toggle('DataField.setVar');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataField-class.html#setVar">setVar</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataField.setVar-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataField.setVar-expanded"><a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"><tt class="py-docstring"> Set 'var' attribute value of this field</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-455', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'var'</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> </tt>
+<a name="DataForm"></a><div id="DataForm-def"><a name="L1354"></a><tt class="py-lineno">1354</tt> <a class="py-toggle" href="#" id="DataForm-toggle" onclick="return toggle('DataForm');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html">DataForm</a><tt class="py-op">(</tt><tt class="py-base-class">Node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="DataForm-expanded"><a name="L1355"></a><tt class="py-lineno">1355</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"><tt class="py-docstring"> Used for manipulating dataforms in XMPP</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt> <tt class="py-line"><tt class="py-docstring"> Relevant XEPs: 0004, 0068, 0122. Can be used in disco, pub-sub and many</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"><tt class="py-docstring"> other applications.</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="DataForm.__init__"></a><div id="DataForm.__init__-def"><a name="L1361"></a><tt class="py-lineno">1361</tt> <a class="py-toggle" href="#" id="DataForm.__init__-toggle" onclick="return toggle('DataForm.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.__init__-expanded"><a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"><tt class="py-docstring"> Create new dataform of type 'typ'. 'data' is the list of DataField</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"><tt class="py-docstring"> instances that this dataform contains, 'title' - the title string. You</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt> <tt class="py-line"><tt class="py-docstring"> can specify the 'node' argument as the other node to be used as base for</tt> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt> <tt class="py-line"><tt class="py-docstring"> constructing this dataform</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt> <tt class="py-line"><tt class="py-docstring"> title and instructions is optional and SHOULD NOT contain newlines.</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt> <tt class="py-line"><tt class="py-docstring"> Several instructions MAY be present.</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt> <tt class="py-line"><tt class="py-docstring"> 'typ' can be one of ('form' | 'submit' | 'cancel' | 'result' )</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt> <tt class="py-line"><tt class="py-docstring"> 'typ' of reply iq can be ( 'result' | 'set' | 'set' | 'result' ) respectively.</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt> <tt class="py-line"><tt class="py-docstring"> 'cancel' form can not contain any fields. All other forms contains AT LEAST one field.</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt> <tt class="py-line"><tt class="py-docstring"> 'title' MAY be included in forms of type "form" and "result"</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt> <tt class="py-line"> <tt id="link-456" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-456', 'Node', 'link-1');">Node</a></tt><tt class="py-op">.</tt><tt id="link-457" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-457', '__init__', 'link-206');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">:</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt> <tt class="py-line"> <tt class="py-name">newkids</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-458" class="py-name" targets="Variable nbxmpp.stringprepare.NamePrep.n=nbxmpp.stringprepare.NamePrep-class.html#n"><a title="nbxmpp.stringprepare.NamePrep.n" class="py-name" href="#" onclick="return doclink('link-458', 'n', 'link-458');">n</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-459', 'getChildren', 'link-237');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-460" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.n" class="py-name" href="#" onclick="return doclink('link-460', 'n', 'link-458');">n</a></tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-461', 'getName', 'link-238');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'field'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt> <tt class="py-line"> <tt class="py-name">newkids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-462" class="py-name" targets="Class nbxmpp.protocol.DataField=nbxmpp.protocol.DataField-class.html"><a title="nbxmpp.protocol.DataField" class="py-name" href="#" onclick="return doclink('link-462', 'DataField', 'link-462');">DataField</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt id="link-463" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.n" class="py-name" href="#" onclick="return doclink('link-463', 'n', 'link-458');">n</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt> <tt class="py-line"> <tt class="py-name">newkids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-464" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.n" class="py-name" href="#" onclick="return doclink('link-464', 'n', 'link-458');">n</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt> <tt class="py-op">=</tt> <tt class="py-name">newkids</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a title="nbxmpp.protocol.DataField.setType
+nbxmpp.protocol.DataForm.setType
+nbxmpp.protocol.Protocol.setType" class="py-name" href="#" onclick="return doclink('link-465', 'setType', 'link-258');">setType</a></tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">)</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-466" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-466', 'setNamespace', 'link-207');">setNamespace</a></tt><tt class="py-op">(</tt><tt id="link-467" class="py-name"><a title="nbxmpp.protocol.NS_DATA" class="py-name" href="#" onclick="return doclink('link-467', 'NS_DATA', 'link-40');">NS_DATA</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">title</tt><tt class="py-op">:</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name" targets="Method nbxmpp.protocol.DataForm.setTitle()=nbxmpp.protocol.DataForm-class.html#setTitle"><a title="nbxmpp.protocol.DataForm.setTitle" class="py-name" href="#" onclick="return doclink('link-468', 'setTitle', 'link-468');">setTitle</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">)</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt> <tt class="py-line"> <tt class="py-name">newdata</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-469" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-469', 'name', 'link-165');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-470" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-470', 'keys', 'link-252');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt> <tt class="py-line"> <tt class="py-name">newdata</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-471" class="py-name"><a title="nbxmpp.protocol.DataField" class="py-name" href="#" onclick="return doclink('link-471', 'DataField', 'link-462');">DataField</a></tt><tt class="py-op">(</tt><tt id="link-472" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-472', 'name', 'link-165');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt id="link-473" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-473', 'name', 'link-165');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">newdata</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-474" class="py-name" targets="Method nbxmpp.protocol.DataForm.addInstructions()=nbxmpp.protocol.DataForm-class.html#addInstructions"><a title="nbxmpp.protocol.DataForm.addInstructions" class="py-name" href="#" onclick="return doclink('link-474', 'addInstructions', 'link-474');">addInstructions</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'DataField'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-475" class="py-name"><a title="nbxmpp.protocol.DataField" class="py-name" href="#" onclick="return doclink('link-475', 'DataField', 'link-462');">DataField</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">child</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1401"></a><tt class="py-lineno">1401</tt> <tt class="py-line"> </tt>
+<a name="DataForm.getType"></a><div id="DataForm.getType-def"><a name="L1402"></a><tt class="py-lineno">1402</tt> <a class="py-toggle" href="#" id="DataForm.getType-toggle" onclick="return toggle('DataForm.getType');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#getType">getType</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.getType-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.getType-expanded"><a name="L1403"></a><tt class="py-lineno">1403</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt> <tt class="py-line"><tt class="py-docstring"> Return the type of dataform</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-476', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1407"></a><tt class="py-lineno">1407</tt> <tt class="py-line"> </tt>
+<a name="DataForm.setType"></a><div id="DataForm.setType-def"><a name="L1408"></a><tt class="py-lineno">1408</tt> <a class="py-toggle" href="#" id="DataForm.setType-toggle" onclick="return toggle('DataForm.setType');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#setType">setType</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.setType-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.setType-expanded"><a name="L1409"></a><tt class="py-lineno">1409</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt> <tt class="py-line"><tt class="py-docstring"> Set the type of dataform</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-477" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-477', 'setAttr', 'link-229');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1413"></a><tt class="py-lineno">1413</tt> <tt class="py-line"> </tt>
+<a name="DataForm.getTitle"></a><div id="DataForm.getTitle-def"><a name="L1414"></a><tt class="py-lineno">1414</tt> <a class="py-toggle" href="#" id="DataForm.getTitle-toggle" onclick="return toggle('DataForm.getTitle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#getTitle">getTitle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.getTitle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.getTitle-expanded"><a name="L1415"></a><tt class="py-lineno">1415</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt> <tt class="py-line"><tt class="py-docstring"> Return the title of dataform</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-478" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-478', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'title'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1419"></a><tt class="py-lineno">1419</tt> <tt class="py-line"> </tt>
+<a name="DataForm.setTitle"></a><div id="DataForm.setTitle-def"><a name="L1420"></a><tt class="py-lineno">1420</tt> <a class="py-toggle" href="#" id="DataForm.setTitle-toggle" onclick="return toggle('DataForm.setTitle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#setTitle">setTitle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.setTitle-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.setTitle-expanded"><a name="L1421"></a><tt class="py-lineno">1421</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt> <tt class="py-line"><tt class="py-docstring"> Set the title of dataform</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-479" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-479', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'title'</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1425"></a><tt class="py-lineno">1425</tt> <tt class="py-line"> </tt>
+<a name="DataForm.getInstructions"></a><div id="DataForm.getInstructions-def"><a name="L1426"></a><tt class="py-lineno">1426</tt> <a class="py-toggle" href="#" id="DataForm.getInstructions-toggle" onclick="return toggle('DataForm.getInstructions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#getInstructions">getInstructions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.getInstructions-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.getInstructions-expanded"><a name="L1427"></a><tt class="py-lineno">1427</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt> <tt class="py-line"><tt class="py-docstring"> Return the instructions of dataform</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-480" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-480', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'instructions'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1431"></a><tt class="py-lineno">1431</tt> <tt class="py-line"> </tt>
+<a name="DataForm.setInstructions"></a><div id="DataForm.setInstructions-def"><a name="L1432"></a><tt class="py-lineno">1432</tt> <a class="py-toggle" href="#" id="DataForm.setInstructions-toggle" onclick="return toggle('DataForm.setInstructions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#setInstructions">setInstructions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.setInstructions-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.setInstructions-expanded"><a name="L1433"></a><tt class="py-lineno">1433</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt> <tt class="py-line"><tt class="py-docstring"> Set the instructions of dataform</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-481" class="py-name"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-481', 'setTagData', 'link-278');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'instructions'</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1437"></a><tt class="py-lineno">1437</tt> <tt class="py-line"> </tt>
+<a name="DataForm.addInstructions"></a><div id="DataForm.addInstructions-def"><a name="L1438"></a><tt class="py-lineno">1438</tt> <a class="py-toggle" href="#" id="DataForm.addInstructions-toggle" onclick="return toggle('DataForm.addInstructions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#addInstructions">addInstructions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.addInstructions-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.addInstructions-expanded"><a name="L1439"></a><tt class="py-lineno">1439</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt> <tt class="py-line"><tt class="py-docstring"> Add one more instruction to the dataform</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-482" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-482', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-string">'instructions'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">text</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1443"></a><tt class="py-lineno">1443</tt> <tt class="py-line"> </tt>
+<a name="DataForm.getField"></a><div id="DataForm.getField-def"><a name="L1444"></a><tt class="py-lineno">1444</tt> <a class="py-toggle" href="#" id="DataForm.getField-toggle" onclick="return toggle('DataForm.getField');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#getField">getField</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.getField-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.getField-expanded"><a name="L1445"></a><tt class="py-lineno">1445</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt> <tt class="py-line"><tt class="py-docstring"> Return the datafield object with name 'name' (if exists)</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-483" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-483', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'field'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'var'</tt><tt class="py-op">:</tt> <tt id="link-484" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-484', 'name', 'link-165');">name</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1449"></a><tt class="py-lineno">1449</tt> <tt class="py-line"> </tt>
+<a name="DataForm.setField"></a><div id="DataForm.setField-def"><a name="L1450"></a><tt class="py-lineno">1450</tt> <a class="py-toggle" href="#" id="DataForm.setField-toggle" onclick="return toggle('DataForm.setField');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#setField">setField</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.setField-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.setField-expanded"><a name="L1451"></a><tt class="py-lineno">1451</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt> <tt class="py-line"><tt class="py-docstring"> Create if nessessary or get the existing datafield object with name</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt> <tt class="py-line"><tt class="py-docstring"> 'name' and return it</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-485" class="py-name" targets="Method nbxmpp.protocol.DataForm.getField()=nbxmpp.protocol.DataForm-class.html#getField"><a title="nbxmpp.protocol.DataForm.getField" class="py-name" href="#" onclick="return doclink('link-485', 'getField', 'link-485');">getField</a></tt><tt class="py-op">(</tt><tt id="link-486" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-486', 'name', 'link-165');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">f</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-487', 'addChild', 'link-259');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt id="link-488" class="py-name"><a title="nbxmpp.protocol.DataField" class="py-name" href="#" onclick="return doclink('link-488', 'DataField', 'link-462');">DataField</a></tt><tt class="py-op">(</tt><tt id="link-489" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-489', 'name', 'link-165');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1459"></a><tt class="py-lineno">1459</tt> <tt class="py-line"> </tt>
+<a name="DataForm.asDict"></a><div id="DataForm.asDict-def"><a name="L1460"></a><tt class="py-lineno">1460</tt> <a class="py-toggle" href="#" id="DataForm.asDict-toggle" onclick="return toggle('DataForm.asDict');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#asDict">asDict</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.asDict-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.asDict-expanded"><a name="L1461"></a><tt class="py-lineno">1461</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt> <tt class="py-line"><tt class="py-docstring"> Represent dataform as simple dictionary mapping of datafield names to</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt> <tt class="py-line"><tt class="py-docstring"> their values</tt> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">field</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-490" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-490', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'field'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt> <tt class="py-line"> <tt id="link-491" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-491', 'name', 'link-165');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-492" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-492', 'getAttr', 'link-217');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'var'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt> <tt class="py-line"> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-493" class="py-name"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-493', 'getType', 'link-170');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'-multi'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-494" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-494', 'getTags', 'link-215');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt> <tt class="py-line"> <tt class="py-name">val</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt id="link-495" class="py-name"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-495', 'getData', 'link-240');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">field</tt><tt class="py-op">.</tt><tt id="link-496" class="py-name"><a title="nbxmpp.simplexml.Node.getTagData" class="py-name" href="#" onclick="return doclink('link-496', 'getTagData', 'link-272');">getTagData</a></tt><tt class="py-op">(</tt><tt class="py-string">'value'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt id="link-497" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-497', 'name', 'link-165');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-498" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-498', 'getTag', 'link-236');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'instructions'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt class="py-string">'instructions'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name" targets="Method nbxmpp.protocol.DataForm.getInstructions()=nbxmpp.protocol.DataForm-class.html#getInstructions"><a title="nbxmpp.protocol.DataForm.getInstructions" class="py-name" href="#" onclick="return doclink('link-499', 'getInstructions', 'link-499');">getInstructions</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>
+</div><a name="L1479"></a><tt class="py-lineno">1479</tt> <tt class="py-line"> </tt>
+<a name="DataForm.__getitem__"></a><div id="DataForm.__getitem__-def"><a name="L1480"></a><tt class="py-lineno">1480</tt> <a class="py-toggle" href="#" id="DataForm.__getitem__-toggle" onclick="return toggle('DataForm.__getitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.__getitem__-expanded"><a name="L1481"></a><tt class="py-lineno">1481</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt> <tt class="py-line"><tt class="py-docstring"> Simple dictionary interface for getting datafields values by their names</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-500" class="py-name"><a title="nbxmpp.protocol.DataForm.getField" class="py-name" href="#" onclick="return doclink('link-500', 'getField', 'link-485');">getField</a></tt><tt class="py-op">(</tt><tt id="link-501" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-501', 'name', 'link-165');">name</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name" targets="Method nbxmpp.protocol.DataField.getValue()=nbxmpp.protocol.DataField-class.html#getValue"><a title="nbxmpp.protocol.DataField.getValue" class="py-name" href="#" onclick="return doclink('link-502', 'getValue', 'link-502');">getValue</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IndexError</tt><tt class="py-op">(</tt><tt class="py-string">'No such field'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1488"></a><tt class="py-lineno">1488</tt> <tt class="py-line"> </tt>
+<a name="DataForm.__setitem__"></a><div id="DataForm.__setitem__-def"><a name="L1489"></a><tt class="py-lineno">1489</tt> <a class="py-toggle" href="#" id="DataForm.__setitem__-toggle" onclick="return toggle('DataForm.__setitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.protocol.DataForm-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DataForm.__setitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="DataForm.__setitem__-expanded"><a name="L1490"></a><tt class="py-lineno">1490</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt> <tt class="py-line"><tt class="py-docstring"> Simple dictionary interface for setting datafields values by their names</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-503" class="py-name" targets="Method nbxmpp.protocol.DataForm.setField()=nbxmpp.protocol.DataForm-class.html#setField"><a title="nbxmpp.protocol.DataForm.setField" class="py-name" href="#" onclick="return doclink('link-503', 'setField', 'link-503');">setField</a></tt><tt class="py-op">(</tt><tt id="link-504" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-504', 'name', 'link-165');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-505" class="py-name"><a title="nbxmpp.protocol.DataField.setValue" class="py-name" href="#" onclick="return doclink('link-505', 'setValue', 'link-423');">setValue</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1494"></a><tt class="py-lineno">1494</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Acks-class.html b/doc/apidocs/nbxmpp.protocol.Acks-class.html
new file mode 100644
index 0000000..558fb8c
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Acks-class.html
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Acks</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Acks
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Acks-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Acks</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_2" name="uml_class_diagram_for_nbxmpp_p_2">
+<area shape="rect" id="node42" href="nbxmpp.protocol.Acks-class.html#__init__" title="Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if needed and separated from it by a space), attrs dictionary as the set of arguments, payload list as the set of textual strings and child nodes that this node carries within itself and &quot;parent&quot; argument that is another node that this one will be the child of. Also the __init__ can be provided with &quot;node&quot; argument that is either a text string containing exactly one node or another Node instance to begin with. If both &quot;node&quot; and other arguments is provided then the node initially created as replica of &quot;node&quot; provided and then modified to be compliant with other arguments." alt="" coords="172,391,404,409"/>
+<area shape="rect" id="node42" href="nbxmpp.protocol.Acks-class.html#buildAnswer" title="handled is the number of stanzas handled" alt="" coords="172,409,404,428"/>
+<area shape="rect" id="node42" href="nbxmpp.protocol.Acks-class.html#buildRequest" title="nbxmpp.protocol.Acks.buildRequest" alt="" coords="172,428,404,447"/>
+<area shape="rect" id="node42" href="nbxmpp.protocol.Acks-class.html#buildEnable" title="nbxmpp.protocol.Acks.buildEnable" alt="" coords="172,447,404,465"/>
+<area shape="rect" id="node42" href="nbxmpp.protocol.Acks-class.html#buildResume" title="nbxmpp.protocol.Acks.buildResume" alt="" coords="172,465,404,484"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.Acks-class.html" title="Acknowledgement elements for Stream Management" alt="" coords="160,358,416,490"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="17,31,559,49"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="17,52,559,71"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="17,71,559,89"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="17,89,559,108"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="17,108,559,127"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="17,127,559,145"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="17,145,559,164"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="17,164,559,183"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="17,183,559,201"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="17,201,559,220"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="17,220,559,239"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="17,239,559,257"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="17,257,559,276"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="17,276,559,295"/>
+<area shape="rect" id="node43" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="17,313,559,332"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="5,6,571,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_2.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Acknowledgement elements for Stream Management
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Acks-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">nsp</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sm:2</code><code class="variable-quote">'</code></span>)</span><br />
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Acks-class.html#buildAnswer" class="summary-sig-name">buildAnswer</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handled</span>)</span><br />
+ handled is the number of stanzas handled</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildAnswer">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Acks-class.html#buildRequest" class="summary-sig-name">buildRequest</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildRequest">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Acks-class.html#buildEnable" class="summary-sig-name">buildEnable</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resume</span>=<span class="summary-sig-default">False</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildEnable">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Acks-class.html#buildResume" class="summary-sig-name">buildResume</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">handled</span>,
+ <span class="summary-sig-arg">previd</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildResume">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">nsp</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:sm:2</code><code class="variable-quote">'</code></span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="buildAnswer"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">buildAnswer</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handled</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildAnswer">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ handled is the number of stanzas handled
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="buildRequest"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">buildRequest</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildRequest">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="buildEnable"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">buildEnable</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resume</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildEnable">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="buildResume"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">buildResume</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">handled</span>,
+ <span class="sig-arg">previd</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Acks.buildResume">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.BOSHBody-class.html b/doc/apidocs/nbxmpp.protocol.BOSHBody-class.html
new file mode 100644
index 0000000..d83dea1
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.BOSHBody-class.html
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.BOSHBody</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;BOSHBody
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.BOSHBody-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BOSHBody</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#BOSHBody">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_3" name="uml_class_diagram_for_nbxmpp_p_3">
+<area shape="rect" id="node44" href="nbxmpp.protocol.BOSHBody-class.html#__init__" title="Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if needed and separated from it by a space), attrs dictionary as the set of arguments, payload list as the set of textual strings and child nodes that this node carries within itself and &quot;parent&quot; argument that is another node that this one will be the child of. Also the __init__ can be provided with &quot;node&quot; argument that is either a text string containing exactly one node or another Node instance to begin with. If both &quot;node&quot; and other arguments is provided then the node initially created as replica of &quot;node&quot; provided and then modified to be compliant with other arguments." alt="" coords="129,391,445,409"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.BOSHBody-class.html" title="&lt;body&gt; tag that wraps usual XMPP stanzas in XMPP over BOSH" alt="" coords="117,358,456,415"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="17,31,559,49"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="17,52,559,71"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="17,71,559,89"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="17,89,559,108"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="17,108,559,127"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="17,127,559,145"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="17,145,559,164"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="17,164,559,183"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="17,183,559,201"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="17,201,559,220"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="17,220,559,239"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="17,239,559,257"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="17,257,559,276"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="17,276,559,295"/>
+<area shape="rect" id="node45" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="17,313,559,332"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="5,6,571,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_3.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+&lt;body&gt; tag that wraps usual XMPP stanzas in XMPP over BOSH
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.BOSHBody-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">payload</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#BOSHBody.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">payload</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#BOSHBody.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.BadFormat-class.html b/doc/apidocs/nbxmpp.protocol.BadFormat-class.html
new file mode 100644
index 0000000..e241710
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.BadFormat-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.BadFormat</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;BadFormat
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.BadFormat-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BadFormat</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#BadFormat">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_4" name="uml_class_diagram_for_nbxmpp_p_4">
+<area shape="rect" id="node1" href="nbxmpp.protocol.BadFormat-class.html" title="nbxmpp.protocol.BadFormat" alt="" coords="53,443,149,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node49" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_4.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_4" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.BadNamespacePrefix-class.html b/doc/apidocs/nbxmpp.protocol.BadNamespacePrefix-class.html
new file mode 100644
index 0000000..daeb00f
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.BadNamespacePrefix-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.BadNamespacePrefix</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;BadNamespacePrefix
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.BadNamespacePrefix-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BadNamespacePrefix</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#BadNamespacePrefix">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_5" name="uml_class_diagram_for_nbxmpp_p_5">
+<area shape="rect" id="node1" href="nbxmpp.protocol.BadNamespacePrefix-class.html" title="nbxmpp.protocol.BadNamespacePrefix" alt="" coords="21,443,184,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node53" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_5.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_5" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Conflict-class.html b/doc/apidocs/nbxmpp.protocol.Conflict-class.html
new file mode 100644
index 0000000..8737cf8
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Conflict-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Conflict</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Conflict
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Conflict-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Conflict</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Conflict">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_6" name="uml_class_diagram_for_nbxmpp_p_6">
+<area shape="rect" id="node1" href="nbxmpp.protocol.Conflict-class.html" title="nbxmpp.protocol.Conflict" alt="" coords="65,443,137,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node57" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_6.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_6" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.ConnectionTimeout-class.html b/doc/apidocs/nbxmpp.protocol.ConnectionTimeout-class.html
new file mode 100644
index 0000000..0b10f04
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.ConnectionTimeout-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.ConnectionTimeout</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;ConnectionTimeout
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.ConnectionTimeout-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ConnectionTimeout</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ConnectionTimeout">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_7" name="uml_class_diagram_for_nbxmpp_p_7">
+<area shape="rect" id="node1" href="nbxmpp.protocol.ConnectionTimeout-class.html" title="nbxmpp.protocol.ConnectionTimeout" alt="" coords="27,443,176,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node61" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_7.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_7" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.DataField-class.html b/doc/apidocs/nbxmpp.protocol.DataField-class.html
new file mode 100644
index 0000000..ee1aac1
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.DataField-class.html
@@ -0,0 +1,950 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.DataField</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;DataField
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.DataField-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DataField</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_8" name="uml_class_diagram_for_nbxmpp_p_8">
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#__init__" title="Create new data field of specified name,value and type" alt="" coords="17,391,677,409"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#setRequired" title="Change the state of the &#39;required&#39; flag" alt="" coords="17,409,677,428"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#isRequired" title="Return in this field a required one" alt="" coords="17,428,677,447"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#setDesc" title="Set the description of this field" alt="" coords="17,447,677,465"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#getDesc" title="Return the description of this field" alt="" coords="17,465,677,484"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#setValue" title="Set the value of this field" alt="" coords="17,484,677,503"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#getValue" title="nbxmpp.protocol.DataField.getValue" alt="" coords="17,503,677,521"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#setValues" title="Set the values of this field as values&#45;list. Replaces all previous filed values! If you need to just add a value &#45; use addValue method" alt="" coords="17,521,677,540"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#addValue" title="Add one more value to this field. Used in &#39;get&#39; iq&#39;s or such" alt="" coords="17,540,677,559"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#getValues" title="Return the list of values associated with this field" alt="" coords="17,559,677,577"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#getOptions" title="Return label&#45;option pairs list associated with this field" alt="" coords="17,577,677,596"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#setOptions" title="Set label&#45;option pairs list associated with this field" alt="" coords="17,596,677,615"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#addOption" title="Add one more label&#45;option pair to this field" alt="" coords="17,615,677,633"/>
+<area shape="rect" id="node62" href="nbxmpp.protocol.DataField-class.html#setVar" title="Set &#39;var&#39; attribute value of this field" alt="" coords="17,652,677,671"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.DataField-class.html" title="This class is used in the DataForm class to describe the single data item" alt="" coords="5,358,688,677"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="77,31,619,49"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="77,52,619,71"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="77,71,619,89"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="77,89,619,108"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="77,108,619,127"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="77,127,619,145"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="77,145,619,164"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="77,164,619,183"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="77,183,619,201"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="77,201,619,220"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="77,220,619,239"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="77,239,619,257"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="77,257,619,276"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="77,276,619,295"/>
+<area shape="rect" id="node63" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="77,313,619,332"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="65,6,631,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_8.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_8" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>This class is used in the DataForm class to describe the single data item</p>
+<p>If you are working with jabber:x:data (XEP-0004, XEP-0068, XEP-0122) then
+you will need to work with instances of this class.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">value</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">required</span>=<span class="summary-sig-default">0</span>,
+ <span class="summary-sig-arg">desc</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">options</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Create new data field of specified name,value and type</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#setRequired" class="summary-sig-name">setRequired</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">req</span>=<span class="summary-sig-default">1</span>)</span><br />
+ Change the state of the 'required' flag</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setRequired">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#isRequired" class="summary-sig-name">isRequired</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return in this field a required one</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.isRequired">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#setDesc" class="summary-sig-name">setDesc</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">desc</span>)</span><br />
+ Set the description of this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setDesc">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#getDesc" class="summary-sig-name">getDesc</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the description of this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getDesc">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#setValue" class="summary-sig-name">setValue</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the value of this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setValue">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#getValue" class="summary-sig-name">getValue</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getValue">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#setValues" class="summary-sig-name">setValues</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">lst</span>)</span><br />
+ Set the values of this field as values-list. Replaces all previous filed
+values! If you need to just add a value - use addValue method</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setValues">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#addValue" class="summary-sig-name">addValue</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Add one more value to this field. Used in 'get' iq's or such</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.addValue">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#getValues" class="summary-sig-name">getValues</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the list of values associated with this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getValues">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#getOptions" class="summary-sig-name">getOptions</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return label-option pairs list associated with this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getOptions">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#setOptions" class="summary-sig-name">setOptions</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">lst</span>)</span><br />
+ Set label-option pairs list associated with this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setOptions">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#addOption" class="summary-sig-name">addOption</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">opt</span>)</span><br />
+ Add one more label-option pair to this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.addOption">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#getType" class="summary-sig-name">getType</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Get type of this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getType">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#setType" class="summary-sig-name">setType</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set type of this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setType">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#getVar" class="summary-sig-name">getVar</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Get 'var' attribute value of this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getVar">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataField-class.html#setVar" class="summary-sig-name">setVar</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set 'var' attribute value of this field</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setVar">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">value</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">required</span>=<span class="sig-default">0</span>,
+ <span class="sig-arg">desc</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">options</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Create new data field of specified name,value and type</p>
+<p>Also 'required','desc' and 'options' fields can be set. Alternatively
+other XML object can be passed in as the 'node' parameted
+to replicate it as a new datafiled.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="setRequired"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setRequired</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">req</span>=<span class="sig-default">1</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setRequired">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Change the state of the 'required' flag
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="isRequired"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">isRequired</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.isRequired">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return in this field a required one
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setDesc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setDesc</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">desc</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setDesc">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the description of this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getDesc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getDesc</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getDesc">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the description of this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setValue"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setValue</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setValue">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the value of this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getValue"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getValue</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getValue">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setValues"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setValues</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">lst</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setValues">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the values of this field as values-list. Replaces all previous filed
+values! If you need to just add a value - use addValue method
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="addValue"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">addValue</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.addValue">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Add one more value to this field. Used in 'get' iq's or such
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getValues"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getValues</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getValues">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the list of values associated with this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getOptions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getOptions</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getOptions">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return label-option pairs list associated with this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setOptions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setOptions</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">lst</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setOptions">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set label-option pairs list associated with this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="addOption"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">addOption</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">opt</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.addOption">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Add one more label-option pair to this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getType"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getType</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getType">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get type of this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setType"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setType</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setType">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set type of this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getVar"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getVar</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.getVar">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get 'var' attribute value of this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setVar"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setVar</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataField.setVar">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set 'var' attribute value of this field
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.DataForm-class.html b/doc/apidocs/nbxmpp.protocol.DataForm-class.html
new file mode 100644
index 0000000..eda1034
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.DataForm-class.html
@@ -0,0 +1,817 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.DataForm</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;DataForm
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.DataForm-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DataForm</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_9" name="uml_class_diagram_for_nbxmpp_p_9">
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#__init__" title="Create new dataform of type &#39;typ&#39;. &#39;data&#39; is the list of DataField instances that this dataform contains, &#39;title&#39; &#45; the title string. &#160;You can specify the &#39;node&#39; argument as the other node to be used as base for constructing this dataform" alt="" coords="97,391,477,409"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#getType" title="Return the type of dataform" alt="" coords="97,409,477,428"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#setType" title="Set the type of dataform" alt="" coords="97,428,477,447"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#getTitle" title="Return the title of dataform" alt="" coords="97,447,477,465"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#setTitle" title="Set the title of dataform" alt="" coords="97,465,477,484"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#getInstructions" title="Return the instructions of dataform" alt="" coords="97,484,477,503"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#setInstructions" title="Set the instructions of dataform" alt="" coords="97,503,477,521"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#addInstructions" title="Add one more instruction to the dataform" alt="" coords="97,521,477,540"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#getField" title="Return the datafield object with name &#39;name&#39; (if exists)" alt="" coords="97,540,477,559"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#setField" title="Create if nessessary or get the existing datafield object with name &#39;name&#39; and return it" alt="" coords="97,559,477,577"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#asDict" title="Represent dataform as simple dictionary mapping of datafield names to their values" alt="" coords="97,577,477,596"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#__getitem__" title="Simple dictionary interface for getting datafields values by their names" alt="" coords="97,596,477,615"/>
+<area shape="rect" id="node64" href="nbxmpp.protocol.DataForm-class.html#__setitem__" title="Simple dictionary interface for setting datafields values by their names" alt="" coords="97,615,477,633"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.DataForm-class.html" title="Used for manipulating dataforms in XMPP" alt="" coords="85,358,488,639"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="17,31,559,49"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="17,52,559,71"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="17,71,559,89"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="17,89,559,108"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="17,108,559,127"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="17,127,559,145"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="17,145,559,164"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="17,164,559,183"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="17,183,559,201"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="17,201,559,220"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="17,220,559,239"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="17,239,559,257"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="17,257,559,276"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="17,276,559,295"/>
+<area shape="rect" id="node65" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="17,313,559,332"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="5,6,571,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_9.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_9" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Used for manipulating dataforms in XMPP</p>
+<p>Relevant XEPs: 0004, 0068, 0122. Can be used in disco, pub-sub and many
+other applications.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">data</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Create new dataform of type 'typ'. 'data' is the list of DataField
+instances that this dataform contains, 'title' - the title string. You
+can specify the 'node' argument as the other node to be used as base for
+constructing this dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#getType" class="summary-sig-name">getType</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the type of dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getType">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#setType" class="summary-sig-name">setType</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">typ</span>)</span><br />
+ Set the type of dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setType">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#getTitle" class="summary-sig-name">getTitle</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the title of dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getTitle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#setTitle" class="summary-sig-name">setTitle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">text</span>)</span><br />
+ Set the title of dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setTitle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#getInstructions" class="summary-sig-name">getInstructions</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the instructions of dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getInstructions">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#setInstructions" class="summary-sig-name">setInstructions</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">text</span>)</span><br />
+ Set the instructions of dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setInstructions">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#addInstructions" class="summary-sig-name">addInstructions</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">text</span>)</span><br />
+ Add one more instruction to the dataform</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.addInstructions">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#getField" class="summary-sig-name">getField</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>)</span><br />
+ Return the datafield object with name 'name' (if exists)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getField">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#setField" class="summary-sig-name">setField</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>)</span><br />
+ Create if nessessary or get the existing datafield object with name
+'name' and return it</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setField">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#asDict" class="summary-sig-name">asDict</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Represent dataform as simple dictionary mapping of datafield names to
+their values</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.asDict">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>)</span><br />
+ Simple dictionary interface for getting datafields values by their names</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.__getitem__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.DataForm-class.html#__setitem__" class="summary-sig-name">__setitem__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Simple dictionary interface for setting datafields values by their names</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.__setitem__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">data</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">title</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Create new dataform of type 'typ'. 'data' is the list of DataField
+instances that this dataform contains, 'title' - the title string. You
+can specify the 'node' argument as the other node to be used as base for
+constructing this dataform</p>
+<p>title and instructions is optional and SHOULD NOT contain newlines.
+Several instructions MAY be present.
+'typ' can be one of ('form' | 'submit' | 'cancel' | 'result' )
+'typ' of reply iq can be ( 'result' | 'set' | 'set' | 'result' ) respectively.
+'cancel' form can not contain any fields. All other forms contains AT LEAST one field.
+'title' MAY be included in forms of type &quot;form&quot; and &quot;result&quot;</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="getType"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getType</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getType">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the type of dataform
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setType"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setType</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">typ</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setType">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the type of dataform
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTitle"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTitle</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getTitle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the title of dataform
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setTitle"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setTitle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">text</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setTitle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the title of dataform
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getInstructions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getInstructions</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getInstructions">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the instructions of dataform
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setInstructions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setInstructions</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">text</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setInstructions">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the instructions of dataform
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="addInstructions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">addInstructions</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">text</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.addInstructions">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Add one more instruction to the dataform
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getField"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getField</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.getField">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the datafield object with name 'name' (if exists)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setField"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setField</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.setField">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Create if nessessary or get the existing datafield object with name
+'name' and return it
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="asDict"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">asDict</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.asDict">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Represent dataform as simple dictionary mapping of datafield names to
+their values
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__getitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>)</span>
+ <br /><em class="fname">(Indexing operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.__getitem__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Simple dictionary interface for getting datafields values by their names
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.simplexml.Node-class.html#__getitem__">simplexml.Node.__getitem__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__setitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__setitem__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">val</span>)</span>
+ <br /><em class="fname">(Index assignment operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#DataForm.__setitem__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Simple dictionary interface for setting datafields values by their names
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.simplexml.Node-class.html#__setitem__">simplexml.Node.__setitem__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Error-class.html b/doc/apidocs/nbxmpp.protocol.Error-class.html
new file mode 100644
index 0000000..1d67408
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Error-class.html
@@ -0,0 +1,410 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Error</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Error
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Error-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Error">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_10" name="uml_class_diagram_for_nbxmpp_p_10">
+<area shape="rect" id="node66" href="nbxmpp.protocol.Error-class.html#__init__" title="Create error reply basing on the received &#39;node&#39; stanza and the &#39;error&#39; error condition" alt="" coords="148,729,427,748"/>
+<area shape="rect" id="node66" href="nbxmpp.protocol.Error-class.html#__dupstr__" title="Dummy function used as preventor of creating error node in reply to error node. I.e. you will not be able to serialise &quot;double&quot; error into string." alt="" coords="148,748,427,767"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.Error-class.html" title="Used to quickly transform received stanza into error reply" alt="" coords="136,697,437,773"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getTo" title="Return value of the &#39;to&#39; attribute" alt="" coords="197,391,377,409"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getFrom" title="Return value of the &#39;from&#39; attribute" alt="" coords="197,409,377,428"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getTimestamp" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="197,428,377,447"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getTimestamp2" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="197,447,377,465"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getID" title="Return the value of the &#39;id&#39; attribute" alt="" coords="197,465,377,484"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#setTo" title="Set the value of the &#39;to&#39; attribute" alt="" coords="197,484,377,503"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getType" title="Return the value of the &#39;type&#39; attribute" alt="" coords="197,503,377,521"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#setFrom" title="Set the value of the &#39;from&#39; attribute" alt="" coords="197,521,377,540"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#setType" title="Set the value of the &#39;type&#39; attribute" alt="" coords="197,540,377,559"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#setID" title="Set the value of the &#39;id&#39; attribute" alt="" coords="197,559,377,577"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getError" title="Return the error&#45;condition (if present) or the textual description of the error (otherwise)" alt="" coords="197,577,377,596"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getErrorMsg" title="Return the textual description of the error (if present) or the error condition" alt="" coords="197,596,377,615"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#getErrorCode" title="Return the error code. Obsolete." alt="" coords="197,615,377,633"/>
+<area shape="rect" id="node67" href="nbxmpp.protocol.Protocol-class.html#__setitem__" title="Set the item &#39;item&#39; to the value &#39;val&#39;" alt="" coords="197,652,377,671"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.Protocol-class.html" title="A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs and messages" alt="" coords="185,358,388,677"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="17,31,559,49"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="17,52,559,71"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="17,71,559,89"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="17,89,559,108"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="17,108,559,127"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="17,127,559,145"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="17,145,559,164"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="17,164,559,183"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="17,183,559,201"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="17,201,559,220"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="17,220,559,239"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="17,239,559,257"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="17,257,559,276"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="17,276,559,295"/>
+<area shape="rect" id="node68" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="17,313,559,332"/>
+<area shape="rect" id="node3" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="5,6,571,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_10.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_10" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Used to quickly transform received stanza into error reply
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Error-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">node</span>,
+ <span class="summary-sig-arg">error</span>,
+ <span class="summary-sig-arg">reply</span>=<span class="summary-sig-default">1</span>)</span><br />
+ Create error reply basing on the received 'node' stanza and the 'error'
+error condition</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Error.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Error-class.html#__dupstr__" class="summary-sig-name">__dupstr__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">dup1</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">dup2</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Dummy function used as preventor of creating error node in reply to error
+node. I.e. you will not be able to serialise &quot;double&quot; error into string.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Error.__dupstr__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.protocol.Protocol-class.html">Protocol</a></code></b>:
+ <code><a href="nbxmpp.protocol.Protocol-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getError">getError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorCode">getErrorCode</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorMsg">getErrorMsg</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getFrom">getFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getID">getID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getProperties">getProperties</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getStatusConditions">getStatusConditions</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp">getTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp2">getTimestamp2</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTo">getTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getType">getType</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setError">setError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setFrom">setFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setID">setID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTimestamp">setTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTo">setTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setType">setType</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">node</span>,
+ <span class="sig-arg">error</span>,
+ <span class="sig-arg">reply</span>=<span class="sig-default">1</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Error.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Create error reply basing on the received 'node' stanza and the 'error'
+error condition</p>
+<p>If the 'node' is not the received stanza but locally created ('to' and
+'from' fields needs not swapping) specify the 'reply' argument as false.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__dupstr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__dupstr__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">dup1</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">dup2</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Error.__dupstr__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Dummy function used as preventor of creating error node in reply to error
+node. I.e. you will not be able to serialise &quot;double&quot; error into string.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.ErrorNode-class.html b/doc/apidocs/nbxmpp.protocol.ErrorNode-class.html
new file mode 100644
index 0000000..e890758
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.ErrorNode-class.html
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.ErrorNode</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;ErrorNode
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.ErrorNode-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ErrorNode</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ErrorNode">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_11" name="uml_class_diagram_for_nbxmpp_p_11">
+<area shape="rect" id="node69" href="nbxmpp.protocol.ErrorNode-class.html#__init__" title="Mandatory parameter: name &#45; name of error condition. Optional parameters: code, typ, text. Used for backwards compartibility with older jabber protocol." alt="" coords="104,391,471,409"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.ErrorNode-class.html" title="XMPP&#45;style error element" alt="" coords="92,358,481,415"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="17,31,559,49"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="17,52,559,71"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="17,71,559,89"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="17,89,559,108"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="17,108,559,127"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="17,127,559,145"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="17,145,559,164"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="17,164,559,183"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="17,183,559,201"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="17,201,559,220"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="17,220,559,239"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="17,239,559,257"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="17,257,559,276"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="17,276,559,295"/>
+<area shape="rect" id="node70" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="17,313,559,332"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="5,6,571,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_11.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_11" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>XMPP-style error element</p>
+<p>In the case of stanza error should be attached to XMPP stanza.
+In the case of stream-level errors should be used separately.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.ErrorNode-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">code</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">text</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Mandatory parameter: name - name of error condition.
+Optional parameters: code, typ, text.
+Used for backwards compartibility with older jabber protocol.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ErrorNode.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">code</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">text</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ErrorNode.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Mandatory parameter: name - name of error condition.
+Optional parameters: code, typ, text.
+Used for backwards compartibility with older jabber protocol.
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Hashes-class.html b/doc/apidocs/nbxmpp.protocol.Hashes-class.html
new file mode 100644
index 0000000..297d5d6
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Hashes-class.html
@@ -0,0 +1,475 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Hashes</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Hashes
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Hashes-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Hashes</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Hashes">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_12" name="uml_class_diagram_for_nbxmpp_p_12">
+<area shape="rect" id="node71" href="nbxmpp.protocol.Hashes-class.html#supported" title="nbxmpp.protocol.Hashes.supported" alt="" coords="159,383,416,401"/>
+<area shape="rect" id="node71" href="nbxmpp.protocol.Hashes-class.html#__init__" title="Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if needed and separated from it by a space), attrs dictionary as the set of arguments, payload list as the set of textual strings and child nodes that this node carries within itself and &quot;parent&quot; argument that is another node that this one will be the child of. Also the __init__ can be provided with &quot;node&quot; argument that is either a text string containing exactly one node or another Node instance to begin with. If both &quot;node&quot; and other arguments is provided then the node initially created as replica of &quot;node&quot; provided and then modified to be compliant with other arguments." alt="" coords="159,404,416,423"/>
+<area shape="rect" id="node71" href="nbxmpp.protocol.Hashes-class.html#calculateHash" title="Calculate the hash and add it. It is preferable doing it here instead of doing it all over the place in Gajim." alt="" coords="159,423,416,441"/>
+<area shape="rect" id="node71" href="nbxmpp.protocol.Hashes-class.html#addHash" title="More than one hash can be added. Although it is permitted, it should not be done for big files because it could slow down Gajim." alt="" coords="159,441,416,460"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.Hashes-class.html" title="Hash elements for various XEPs as defined in XEP&#45;300" alt="" coords="147,358,427,466"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="17,31,559,49"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="17,52,559,71"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="17,71,559,89"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="17,89,559,108"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="17,108,559,127"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="17,127,559,145"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="17,145,559,164"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="17,164,559,183"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="17,183,559,201"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="17,201,559,220"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="17,220,559,239"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="17,239,559,257"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="17,257,559,276"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="17,276,559,295"/>
+<area shape="rect" id="node72" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="17,313,559,332"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="5,6,571,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_12.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_12" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Hash elements for various XEPs as defined in XEP-300
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Hashes-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">nsp</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hashes:0</code><code class="variable-quote">'</code></span>)</span><br />
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Hashes.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Hashes-class.html#calculateHash" class="summary-sig-name">calculateHash</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">algo</span>,
+ <span class="summary-sig-arg">file_string</span>)</span><br />
+ Calculate the hash and add it. It is preferable doing it here
+instead of doing it all over the place in Gajim.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Hashes.calculateHash">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Hashes-class.html#addHash" class="summary-sig-name">addHash</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">hash_</span>,
+ <span class="summary-sig-arg">algo</span>)</span><br />
+ More than one hash can be added. Although it is permitted, it should
+not be done for big files because it could slow down Gajim.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Hashes.addHash">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.protocol.Hashes-class.html#supported" class="summary-name">supported</a> = <code title="('md5', 'sha-1', 'sha-256', 'sha-512')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">md5</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">sha-1</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">sha-256</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">sha-512</code><code class="variable-quote">'</code><code class="variable-group">)</code></code>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">nsp</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">urn:xmpp:hashes:0</code><code class="variable-quote">'</code></span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Hashes.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="calculateHash"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">calculateHash</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">algo</span>,
+ <span class="sig-arg">file_string</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Hashes.calculateHash">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Calculate the hash and add it. It is preferable doing it here
+instead of doing it all over the place in Gajim.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="addHash"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">addHash</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">hash_</span>,
+ <span class="sig-arg">algo</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Hashes.addHash">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ More than one hash can be added. Although it is permitted, it should
+not be done for big files because it could slow down Gajim.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variable Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariableDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="supported"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">supported</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">md5</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">sha-1</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">sha-256</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">sha-512</code><code class="variable-quote">'</code><code class="variable-group">)</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:05 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.HostGone-class.html b/doc/apidocs/nbxmpp.protocol.HostGone-class.html
new file mode 100644
index 0000000..6df630b
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.HostGone-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.HostGone</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;HostGone
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.HostGone-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class HostGone</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#HostGone">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_13" name="uml_class_diagram_for_nbxmpp_p_13">
+<area shape="rect" id="node1" href="nbxmpp.protocol.HostGone-class.html" title="nbxmpp.protocol.HostGone" alt="" coords="57,443,148,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node76" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node75" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node75" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_13.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_13" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.HostUnknown-class.html b/doc/apidocs/nbxmpp.protocol.HostUnknown-class.html
new file mode 100644
index 0000000..761c6b0
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.HostUnknown-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.HostUnknown</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;HostUnknown
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.HostUnknown-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class HostUnknown</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#HostUnknown">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_14" name="uml_class_diagram_for_nbxmpp_p_14">
+<area shape="rect" id="node1" href="nbxmpp.protocol.HostUnknown-class.html" title="nbxmpp.protocol.HostUnknown" alt="" coords="45,443,160,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node80" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node79" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node79" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_14.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_14" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.ImproperAddressing-class.html b/doc/apidocs/nbxmpp.protocol.ImproperAddressing-class.html
new file mode 100644
index 0000000..158a1ed
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.ImproperAddressing-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.ImproperAddressing</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;ImproperAddressing
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.ImproperAddressing-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ImproperAddressing</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ImproperAddressing">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_15" name="uml_class_diagram_for_nbxmpp_p_15">
+<area shape="rect" id="node1" href="nbxmpp.protocol.ImproperAddressing-class.html" title="nbxmpp.protocol.ImproperAddressing" alt="" coords="25,443,180,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node84" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node83" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node83" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_15.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_15" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.InternalServerError-class.html b/doc/apidocs/nbxmpp.protocol.InternalServerError-class.html
new file mode 100644
index 0000000..d833183
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.InternalServerError-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.InternalServerError</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;InternalServerError
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.InternalServerError-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InternalServerError</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#InternalServerError">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_16" name="uml_class_diagram_for_nbxmpp_p_16">
+<area shape="rect" id="node1" href="nbxmpp.protocol.InternalServerError-class.html" title="nbxmpp.protocol.InternalServerError" alt="" coords="29,443,176,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node88" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node87" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node87" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_16.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_16" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.InvalidFrom-class.html b/doc/apidocs/nbxmpp.protocol.InvalidFrom-class.html
new file mode 100644
index 0000000..2dfe00f
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.InvalidFrom-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.InvalidFrom</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;InvalidFrom
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.InvalidFrom-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InvalidFrom</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#InvalidFrom">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_17" name="uml_class_diagram_for_nbxmpp_p_17">
+<area shape="rect" id="node1" href="nbxmpp.protocol.InvalidFrom-class.html" title="nbxmpp.protocol.InvalidFrom" alt="" coords="53,443,152,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node92" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node91" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node91" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_17.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_17" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.InvalidID-class.html b/doc/apidocs/nbxmpp.protocol.InvalidID-class.html
new file mode 100644
index 0000000..0d2047a
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.InvalidID-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.InvalidID</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;InvalidID
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.InvalidID-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InvalidID</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#InvalidID">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_18" name="uml_class_diagram_for_nbxmpp_p_18">
+<area shape="rect" id="node1" href="nbxmpp.protocol.InvalidID-class.html" title="nbxmpp.protocol.InvalidID" alt="" coords="63,443,140,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node96" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node95" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node95" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_18.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_18" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.InvalidNamespace-class.html b/doc/apidocs/nbxmpp.protocol.InvalidNamespace-class.html
new file mode 100644
index 0000000..969f616
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.InvalidNamespace-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.InvalidNamespace</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;InvalidNamespace
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.InvalidNamespace-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InvalidNamespace</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#InvalidNamespace">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_19" name="uml_class_diagram_for_nbxmpp_p_19">
+<area shape="rect" id="node1" href="nbxmpp.protocol.InvalidNamespace-class.html" title="nbxmpp.protocol.InvalidNamespace" alt="" coords="31,443,172,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node99" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node99" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_19.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_19" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.InvalidXML-class.html b/doc/apidocs/nbxmpp.protocol.InvalidXML-class.html
new file mode 100644
index 0000000..5a3e55c
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.InvalidXML-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.InvalidXML</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;InvalidXML
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.InvalidXML-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InvalidXML</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#InvalidXML">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_20" name="uml_class_diagram_for_nbxmpp_p_20">
+<area shape="rect" id="node1" href="nbxmpp.protocol.InvalidXML-class.html" title="nbxmpp.protocol.InvalidXML" alt="" coords="56,443,147,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node104" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node103" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node103" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_20.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_20" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Iq-class.html b/doc/apidocs/nbxmpp.protocol.Iq-class.html
new file mode 100644
index 0000000..2bc652f
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Iq-class.html
@@ -0,0 +1,765 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Iq</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Iq
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Iq-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Iq</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_21" name="uml_class_diagram_for_nbxmpp_p_21">
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#__init__" title="You can specify type, query namespace any additional attributes, recipient of the iq, sender of the iq, any additional payload (f.e. jabber:x:data node) and namespace in one go." alt="" coords="17,729,796,748"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#getQuery" title="Return the IQ&#39;s child element if it exists, None otherwise." alt="" coords="17,748,796,767"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#getQueryNS" title="Return the namespace of the &#39;query&#39; child element" alt="" coords="17,767,796,785"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#getQuerynode" title="Return the &#39;node&#39; attribute value of the &#39;query&#39; child element" alt="" coords="17,785,796,804"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#getQueryPayload" title="Return the &#39;query&#39; child element payload" alt="" coords="17,804,796,823"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#getQueryChildren" title="Return the &#39;query&#39; child element child nodes" alt="" coords="17,823,796,841"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#setQuery" title="Change the name of the query node, creating it if needed. Keep the existing name if none is given (use &#39;query&#39; if it&#39;s a creation). Return the query node." alt="" coords="17,841,796,860"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#setQueryNS" title="Set the namespace of the &#39;query&#39; child element" alt="" coords="17,860,796,879"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#setQueryPayload" title="Set the &#39;query&#39; child element payload" alt="" coords="17,879,796,897"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#setQuerynode" title="Set the &#39;node&#39; attribute value of the &#39;query&#39; child element" alt="" coords="17,897,796,916"/>
+<area shape="rect" id="node105" href="nbxmpp.protocol.Iq-class.html#buildReply" title="Build and return another Iq object of specified type. The to, from and query child node of new Iq are pre&#45;set as reply to this Iq." alt="" coords="17,916,796,935"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.Iq-class.html" title="XMPP Iq object &#45; get/set dialog mechanism" alt="" coords="5,697,808,941"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getTo" title="Return value of the &#39;to&#39; attribute" alt="" coords="316,391,496,409"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getFrom" title="Return value of the &#39;from&#39; attribute" alt="" coords="316,409,496,428"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getTimestamp" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="316,428,496,447"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getTimestamp2" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="316,447,496,465"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getID" title="Return the value of the &#39;id&#39; attribute" alt="" coords="316,465,496,484"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#setTo" title="Set the value of the &#39;to&#39; attribute" alt="" coords="316,484,496,503"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getType" title="Return the value of the &#39;type&#39; attribute" alt="" coords="316,503,496,521"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#setFrom" title="Set the value of the &#39;from&#39; attribute" alt="" coords="316,521,496,540"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#setType" title="Set the value of the &#39;type&#39; attribute" alt="" coords="316,540,496,559"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#setID" title="Set the value of the &#39;id&#39; attribute" alt="" coords="316,559,496,577"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getError" title="Return the error&#45;condition (if present) or the textual description of the error (otherwise)" alt="" coords="316,577,496,596"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getErrorMsg" title="Return the textual description of the error (if present) or the error condition" alt="" coords="316,596,496,615"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#getErrorCode" title="Return the error code. Obsolete." alt="" coords="316,615,496,633"/>
+<area shape="rect" id="node106" href="nbxmpp.protocol.Protocol-class.html#__setitem__" title="Set the item &#39;item&#39; to the value &#39;val&#39;" alt="" coords="316,652,496,671"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.Protocol-class.html" title="A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs and messages" alt="" coords="304,358,507,677"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="136,31,677,49"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="136,52,677,71"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="136,71,677,89"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="136,89,677,108"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="136,108,677,127"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="136,127,677,145"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="136,145,677,164"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="136,164,677,183"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="136,183,677,201"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="136,201,677,220"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="136,220,677,239"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="136,239,677,257"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="136,257,677,276"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="136,276,677,295"/>
+<area shape="rect" id="node107" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="136,313,677,332"/>
+<area shape="rect" id="node3" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="124,6,689,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_21.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_21" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+XMPP Iq object - get/set dialog mechanism
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">queryNS</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">to</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">frm</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">payload</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ You can specify type, query namespace any additional attributes,
+recipient of the iq, sender of the iq, any additional payload (f.e.
+jabber:x:data node) and namespace in one go.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#getQuery" class="summary-sig-name">getQuery</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the IQ's child element if it exists, None otherwise.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQuery">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#getQueryNS" class="summary-sig-name">getQueryNS</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the namespace of the 'query' child element</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQueryNS">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#getQuerynode" class="summary-sig-name">getQuerynode</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the 'node' attribute value of the 'query' child element</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQuerynode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#getQueryPayload" class="summary-sig-name">getQueryPayload</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the 'query' child element payload</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQueryPayload">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#getQueryChildren" class="summary-sig-name">getQueryChildren</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the 'query' child element child nodes</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQueryChildren">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#setQuery" class="summary-sig-name">setQuery</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Change the name of the query node, creating it if needed. Keep the
+existing name if none is given (use 'query' if it's a creation).
+Return the query node.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQuery">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#setQueryNS" class="summary-sig-name">setQueryNS</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">namespace</span>)</span><br />
+ Set the namespace of the 'query' child element</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQueryNS">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#setQueryPayload" class="summary-sig-name">setQueryPayload</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">payload</span>)</span><br />
+ Set the 'query' child element payload</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQueryPayload">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#setQuerynode" class="summary-sig-name">setQuerynode</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">node</span>)</span><br />
+ Set the 'node' attribute value of the 'query' child element</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQuerynode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Iq-class.html#buildReply" class="summary-sig-name">buildReply</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">typ</span>)</span><br />
+ Build and return another Iq object of specified type. The to, from and
+query child node of new Iq are pre-set as reply to this Iq.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.buildReply">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.protocol.Protocol-class.html">Protocol</a></code></b>:
+ <code><a href="nbxmpp.protocol.Protocol-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getError">getError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorCode">getErrorCode</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorMsg">getErrorMsg</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getFrom">getFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getID">getID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getProperties">getProperties</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getStatusConditions">getStatusConditions</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp">getTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp2">getTimestamp2</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTo">getTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getType">getType</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setError">setError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setFrom">setFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setID">setID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTimestamp">setTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTo">setTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setType">setType</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">queryNS</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">to</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">frm</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">payload</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>You can specify type, query namespace any additional attributes,
+recipient of the iq, sender of the iq, any additional payload (f.e.
+jabber:x:data node) and namespace in one go.</p>
+<p>Alternatively you can pass in the other XML object as the 'node'
+parameted to replicate it as an iq</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="getQuery"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getQuery</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQuery">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the IQ's child element if it exists, None otherwise.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getQueryNS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getQueryNS</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQueryNS">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the namespace of the 'query' child element
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getQuerynode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getQuerynode</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQuerynode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the 'node' attribute value of the 'query' child element
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getQueryPayload"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getQueryPayload</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQueryPayload">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the 'query' child element payload
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getQueryChildren"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getQueryChildren</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.getQueryChildren">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the 'query' child element child nodes
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setQuery"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setQuery</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQuery">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Change the name of the query node, creating it if needed. Keep the
+existing name if none is given (use 'query' if it's a creation).
+Return the query node.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setQueryNS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setQueryNS</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">namespace</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQueryNS">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the namespace of the 'query' child element
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setQueryPayload"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setQueryPayload</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">payload</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQueryPayload">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the 'query' child element payload
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setQuerynode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setQuerynode</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">node</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.setQuerynode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the 'node' attribute value of the 'query' child element
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="buildReply"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">buildReply</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">typ</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Iq.buildReply">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Build and return another Iq object of specified type. The to, from and
+query child node of new Iq are pre-set as reply to this Iq.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.JID-class.html b/doc/apidocs/nbxmpp.protocol.JID-class.html
new file mode 100644
index 0000000..accfd79
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.JID-class.html
@@ -0,0 +1,657 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.JID</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;JID
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.JID-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class JID</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID">source&nbsp;code</a></span></p>
+JID can be built from string, modified, compared, serialised into string
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">domain</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">resource</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
+ JID can be specified as string (jid argument) or as separate parts</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#getNode" class="summary-sig-name">getNode</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the node part of the JID</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getNode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#setNode" class="summary-sig-name">setNode</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">node</span>)</span><br />
+ Set the node part of the JID to new value. Specify None to remove
+the node part</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.setNode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#getDomain" class="summary-sig-name">getDomain</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the domain part of the JID</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getDomain">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#setDomain" class="summary-sig-name">setDomain</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">domain</span>)</span><br />
+ Set the domain part of the JID to new value</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.setDomain">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#getResource" class="summary-sig-name">getResource</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the resource part of the JID</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getResource">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#setResource" class="summary-sig-name">setResource</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resource</span>)</span><br />
+ Set the resource part of the JID to new value. Specify None to remove the
+resource part</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.setResource">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#getStripped" class="summary-sig-name">getStripped</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the bare representation of JID. I.e. string value w/o resource</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getStripped">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#__eq__" class="summary-sig-name">__eq__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">other</span>)</span><br />
+ Compare the JID to another instance or to string for equality</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__eq__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#__ne__" class="summary-sig-name">__ne__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">other</span>)</span><br />
+ Compare the JID to another instance or to string for non-equality</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__ne__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#bareMatch" class="summary-sig-name">bareMatch</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">other</span>)</span><br />
+ Compare the node and domain parts of the JID's for equality</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.bareMatch">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">wresource</span>=<span class="summary-sig-default">1</span>)</span><br />
+ Serialise JID into string</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__str__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.JID-class.html#__hash__" class="summary-sig-name">__hash__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Produce hash of the JID, Allows to use JID objects as keys of the
+dictionary</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__hash__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">node</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">domain</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">resource</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>JID can be specified as string (jid argument) or as separate parts</p>
+<p>Examples:
+JID(<a class="rst-reference external" href="mailto:'node&#64;domain/resource" target="_top">'node&#64;domain/resource</a>')
+JID(node='node',domain='domain.org')</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getNode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getNode</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getNode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the node part of the JID
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setNode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setNode</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">node</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.setNode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the node part of the JID to new value. Specify None to remove
+the node part
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getDomain"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getDomain</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getDomain">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the domain part of the JID
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setDomain"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setDomain</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">domain</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.setDomain">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the domain part of the JID to new value
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getResource"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getResource</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getResource">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the resource part of the JID
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setResource"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setResource</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resource</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.setResource">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the resource part of the JID to new value. Specify None to remove the
+resource part
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getStripped"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getStripped</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.getStripped">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the bare representation of JID. I.e. string value w/o resource
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__eq__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__eq__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">other</span>)</span>
+ <br /><em class="fname">(Equality operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__eq__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Compare the JID to another instance or to string for equality
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__ne__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__ne__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">other</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__ne__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Compare the JID to another instance or to string for non-equality
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="bareMatch"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">bareMatch</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">other</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.bareMatch">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Compare the node and domain parts of the JID's for equality
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">wresource</span>=<span class="sig-default">1</span>)</span>
+ <br /><em class="fname">(Informal representation operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__str__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Serialise JID into string
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__hash__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__hash__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Hashing function)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#JID.__hash__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Produce hash of the JID, Allows to use JID objects as keys of the
+dictionary
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Message-class.html b/doc/apidocs/nbxmpp.protocol.Message-class.html
new file mode 100644
index 0000000..3464774
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Message-class.html
@@ -0,0 +1,776 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Message</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Message
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Message-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Message</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_22" name="uml_class_diagram_for_nbxmpp_p_22">
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#__init__" title="You can specify recipient, text of message, type of message any additional attributes, sender of the message, any additional payload (f.e. jabber:x:delay element) and namespace in one go." alt="" coords="17,729,1083,748"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#getBody" title="Return text of the message" alt="" coords="17,748,1083,767"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#getXHTML" title="Return serialized xhtml&#45;im element text of the message" alt="" coords="17,767,1083,785"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#getSubject" title="Return subject of the message" alt="" coords="17,785,1083,804"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#getThread" title="Return thread of the message" alt="" coords="17,804,1083,823"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#setBody" title="Set the text of the message" alt="" coords="17,823,1083,841"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#setXHTML" title="Sets the xhtml text of the message (XEP&#45;0071). The parameter is the &quot;inner html&quot; to the body." alt="" coords="17,841,1083,860"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#setSubject" title="Set the subject of the message" alt="" coords="17,860,1083,879"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#setThread" title="Set the thread of the message" alt="" coords="17,879,1083,897"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#buildReply" title="Builds and returns another message object with specified text. The to, from, thread and type properties of new message are pre&#45;set as reply to this message" alt="" coords="17,897,1083,916"/>
+<area shape="rect" id="node108" href="nbxmpp.protocol.Message-class.html#getStatusCode" title="Return the status code of the message (for groupchat config change)" alt="" coords="17,916,1083,935"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.Message-class.html" title="XMPP Message stanza &#45; &quot;push&quot; mechanism" alt="" coords="5,697,1093,941"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getTo" title="Return value of the &#39;to&#39; attribute" alt="" coords="460,391,640,409"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getFrom" title="Return value of the &#39;from&#39; attribute" alt="" coords="460,409,640,428"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getTimestamp" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="460,428,640,447"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getTimestamp2" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="460,447,640,465"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getID" title="Return the value of the &#39;id&#39; attribute" alt="" coords="460,465,640,484"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#setTo" title="Set the value of the &#39;to&#39; attribute" alt="" coords="460,484,640,503"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getType" title="Return the value of the &#39;type&#39; attribute" alt="" coords="460,503,640,521"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#setFrom" title="Set the value of the &#39;from&#39; attribute" alt="" coords="460,521,640,540"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#setType" title="Set the value of the &#39;type&#39; attribute" alt="" coords="460,540,640,559"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#setID" title="Set the value of the &#39;id&#39; attribute" alt="" coords="460,559,640,577"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getError" title="Return the error&#45;condition (if present) or the textual description of the error (otherwise)" alt="" coords="460,577,640,596"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getErrorMsg" title="Return the textual description of the error (if present) or the error condition" alt="" coords="460,596,640,615"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#getErrorCode" title="Return the error code. Obsolete." alt="" coords="460,615,640,633"/>
+<area shape="rect" id="node109" href="nbxmpp.protocol.Protocol-class.html#__setitem__" title="Set the item &#39;item&#39; to the value &#39;val&#39;" alt="" coords="460,652,640,671"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.Protocol-class.html" title="A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs and messages" alt="" coords="448,358,651,677"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="280,31,821,49"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="280,52,821,71"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="280,71,821,89"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="280,89,821,108"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="280,108,821,127"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="280,127,821,145"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="280,145,821,164"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="280,164,821,183"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="280,183,821,201"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="280,201,821,220"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="280,220,821,239"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="280,239,821,257"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="280,257,821,276"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="280,276,821,295"/>
+<area shape="rect" id="node110" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="280,313,821,332"/>
+<area shape="rect" id="node3" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="268,6,833,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_22.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_22" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+XMPP Message stanza - &quot;push&quot; mechanism
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">to</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">body</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">xhtml</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">subject</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">frm</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">payload</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">timestamp</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ You can specify recipient, text of message, type of message any
+additional attributes, sender of the message, any additional payload
+(f.e. jabber:x:delay element) and namespace in one go.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#getBody" class="summary-sig-name">getBody</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return text of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getBody">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#getXHTML" class="summary-sig-name">getXHTML</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">xmllang</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Return serialized xhtml-im element text of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getXHTML">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#getSubject" class="summary-sig-name">getSubject</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return subject of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getSubject">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#getThread" class="summary-sig-name">getThread</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return thread of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getThread">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#setBody" class="summary-sig-name">setBody</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the text of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setBody">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#setXHTML" class="summary-sig-name">setXHTML</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>,
+ <span class="summary-sig-arg">xmllang</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Sets the xhtml text of the message (XEP-0071). The parameter is the
+&quot;inner html&quot; to the body.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setXHTML">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#setSubject" class="summary-sig-name">setSubject</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the subject of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setSubject">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#setThread" class="summary-sig-name">setThread</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the thread of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setThread">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#buildReply" class="summary-sig-name">buildReply</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">text</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Builds and returns another message object with specified text. The to,
+from, thread and type properties of new message are pre-set as reply to
+this message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.buildReply">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Message-class.html#getStatusCode" class="summary-sig-name">getStatusCode</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the status code of the message (for groupchat config change)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getStatusCode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.protocol.Protocol-class.html">Protocol</a></code></b>:
+ <code><a href="nbxmpp.protocol.Protocol-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getError">getError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorCode">getErrorCode</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorMsg">getErrorMsg</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getFrom">getFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getID">getID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getProperties">getProperties</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getStatusConditions">getStatusConditions</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp">getTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp2">getTimestamp2</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTo">getTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getType">getType</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setError">setError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setFrom">setFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setID">setID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTimestamp">setTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTo">setTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setType">setType</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">to</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">body</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">xhtml</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">subject</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">frm</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">payload</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">timestamp</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>You can specify recipient, text of message, type of message any
+additional attributes, sender of the message, any additional payload
+(f.e. jabber:x:delay element) and namespace in one go.</p>
+<p>Alternatively you can pass in the other XML object as the 'node'
+parameted to replicate it as message</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="getBody"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getBody</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getBody">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return text of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getXHTML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getXHTML</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">xmllang</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getXHTML">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Return serialized xhtml-im element text of the message</p>
+<p>TODO: Returning a DOM could make rendering faster.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getSubject"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getSubject</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getSubject">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return subject of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getThread"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getThread</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getThread">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return thread of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setBody"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setBody</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setBody">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the text of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setXHTML"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setXHTML</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>,
+ <span class="sig-arg">xmllang</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setXHTML">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Sets the xhtml text of the message (XEP-0071). The parameter is the
+&quot;inner html&quot; to the body.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setSubject"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setSubject</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setSubject">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the subject of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setThread"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setThread</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.setThread">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the thread of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="buildReply"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">buildReply</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">text</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.buildReply">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Builds and returns another message object with specified text. The to,
+from, thread and type properties of new message are pre-set as reply to
+this message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getStatusCode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getStatusCode</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Message.getStatusCode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the status code of the message (for groupchat config change)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.NodeProcessed-class.html b/doc/apidocs/nbxmpp.protocol.NodeProcessed-class.html
new file mode 100644
index 0000000..08bd2f5
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.NodeProcessed-class.html
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.NodeProcessed</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;NodeProcessed
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.NodeProcessed-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NodeProcessed</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#NodeProcessed">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_23" name="uml_class_diagram_for_nbxmpp_p_23">
+<area shape="rect" id="node1" href="nbxmpp.protocol.NodeProcessed-class.html" title="Exception that should be raised by handler when the handling should be stopped" alt="" coords="39,379,164,423"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node113" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_23.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_23" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Exception that should be raised by handler when the handling should be
+stopped
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.NotAuthorized-class.html b/doc/apidocs/nbxmpp.protocol.NotAuthorized-class.html
new file mode 100644
index 0000000..6a13a00
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.NotAuthorized-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.NotAuthorized</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;NotAuthorized
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.NotAuthorized-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NotAuthorized</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#NotAuthorized">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_24" name="uml_class_diagram_for_nbxmpp_p_24">
+<area shape="rect" id="node1" href="nbxmpp.protocol.NotAuthorized-class.html" title="nbxmpp.protocol.NotAuthorized" alt="" coords="43,443,160,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node117" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_24.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_24" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.PolicyViolation-class.html b/doc/apidocs/nbxmpp.protocol.PolicyViolation-class.html
new file mode 100644
index 0000000..ec4199d
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.PolicyViolation-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.PolicyViolation</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;PolicyViolation
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.PolicyViolation-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PolicyViolation</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#PolicyViolation">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_25" name="uml_class_diagram_for_nbxmpp_p_25">
+<area shape="rect" id="node1" href="nbxmpp.protocol.PolicyViolation-class.html" title="nbxmpp.protocol.PolicyViolation" alt="" coords="44,443,161,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node120" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node120" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_25.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_25" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Presence-class.html b/doc/apidocs/nbxmpp.protocol.Presence-class.html
new file mode 100644
index 0000000..49047e8
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Presence-class.html
@@ -0,0 +1,950 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Presence</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Presence
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Presence-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Presence</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_26" name="uml_class_diagram_for_nbxmpp_p_26">
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#__init__" title="You can specify recipient, type of message, priority, show and status values any additional attributes, sender of the presence, timestamp, any additional payload (f.e. jabber:x:delay element) and namespace in one go. Alternatively you can pass in the other XML object as the &#39;node&#39; parameted to replicate it as presence" alt="" coords="17,729,1085,748"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getPriority" title="Return the priority of the message" alt="" coords="17,748,1085,767"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getShow" title="Return the show value of the message" alt="" coords="17,767,1085,785"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getStatus" title="Return the status string of the message" alt="" coords="17,785,1085,804"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#setPriority" title="Set the priority of the message" alt="" coords="17,804,1085,823"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#setShow" title="Set the show value of the message" alt="" coords="17,823,1085,841"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#setStatus" title="Set the status string of the message" alt="" coords="17,841,1085,860"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getRole" title="Return the presence role (for groupchat)" alt="" coords="17,860,1085,879"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getAffiliation" title="Return the presence affiliation (for groupchat)" alt="" coords="17,879,1085,897"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getNewNick" title="Return the status code of the presence (for groupchat)" alt="" coords="17,897,1085,916"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getJid" title="Return the presence jid (for groupchat)" alt="" coords="17,916,1085,935"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getReason" title="Returns the reason of the presence (for groupchat)" alt="" coords="17,935,1085,953"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getActor" title="Return the reason of the presence (for groupchat)" alt="" coords="17,953,1085,972"/>
+<area shape="rect" id="node122" href="nbxmpp.protocol.Presence-class.html#getStatusCode" title="Return the status code of the presence (for groupchat)" alt="" coords="17,972,1085,991"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.Presence-class.html" title="nbxmpp.protocol.Presence" alt="" coords="5,697,1096,997"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getTo" title="Return value of the &#39;to&#39; attribute" alt="" coords="461,391,641,409"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getFrom" title="Return value of the &#39;from&#39; attribute" alt="" coords="461,409,641,428"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getTimestamp" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="461,428,641,447"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getTimestamp2" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="461,447,641,465"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getID" title="Return the value of the &#39;id&#39; attribute" alt="" coords="461,465,641,484"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#setTo" title="Set the value of the &#39;to&#39; attribute" alt="" coords="461,484,641,503"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getType" title="Return the value of the &#39;type&#39; attribute" alt="" coords="461,503,641,521"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#setFrom" title="Set the value of the &#39;from&#39; attribute" alt="" coords="461,521,641,540"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#setType" title="Set the value of the &#39;type&#39; attribute" alt="" coords="461,540,641,559"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#setID" title="Set the value of the &#39;id&#39; attribute" alt="" coords="461,559,641,577"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getError" title="Return the error&#45;condition (if present) or the textual description of the error (otherwise)" alt="" coords="461,577,641,596"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getErrorMsg" title="Return the textual description of the error (if present) or the error condition" alt="" coords="461,596,641,615"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#getErrorCode" title="Return the error code. Obsolete." alt="" coords="461,615,641,633"/>
+<area shape="rect" id="node123" href="nbxmpp.protocol.Protocol-class.html#__setitem__" title="Set the item &#39;item&#39; to the value &#39;val&#39;" alt="" coords="461,652,641,671"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.Protocol-class.html" title="A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs and messages" alt="" coords="449,358,652,677"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="281,31,823,49"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="281,52,823,71"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="281,71,823,89"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="281,89,823,108"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="281,108,823,127"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="281,127,823,145"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="281,145,823,164"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="281,164,823,183"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="281,183,823,201"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="281,201,823,220"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="281,220,823,239"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="281,239,823,257"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="281,257,823,276"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="281,276,823,295"/>
+<area shape="rect" id="node124" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="281,313,823,332"/>
+<area shape="rect" id="node3" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="269,6,835,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_26.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_26" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">to</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">priority</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">show</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">status</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">frm</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">timestamp</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">payload</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code></span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ You can specify recipient, type of message, priority, show and status
+values any additional attributes, sender of the presence, timestamp, any
+additional payload (f.e. jabber:x:delay element) and namespace in one go.
+Alternatively you can pass in the other XML object as the 'node'
+parameted to replicate it as presence</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getPriority" class="summary-sig-name">getPriority</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the priority of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getPriority">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getShow" class="summary-sig-name">getShow</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the show value of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getShow">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getStatus" class="summary-sig-name">getStatus</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the status string of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getStatus">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#setPriority" class="summary-sig-name">setPriority</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the priority of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.setPriority">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#setShow" class="summary-sig-name">setShow</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the show value of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.setShow">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#setStatus" class="summary-sig-name">setStatus</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the status string of the message</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.setStatus">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#_muc_getItemAttr" class="summary-sig-name" onclick="show_private();">_muc_getItemAttr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">attr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence._muc_getItemAttr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#_muc_getSubTagDataAttr" class="summary-sig-name" onclick="show_private();">_muc_getSubTagDataAttr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">attr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence._muc_getSubTagDataAttr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getRole" class="summary-sig-name">getRole</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the presence role (for groupchat)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getRole">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getAffiliation" class="summary-sig-name">getAffiliation</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the presence affiliation (for groupchat)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getAffiliation">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getNewNick" class="summary-sig-name">getNewNick</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the status code of the presence (for groupchat)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getNewNick">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getJid" class="summary-sig-name">getJid</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the presence jid (for groupchat)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getJid">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getReason" class="summary-sig-name">getReason</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Returns the reason of the presence (for groupchat)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getReason">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getActor" class="summary-sig-name">getActor</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the reason of the presence (for groupchat)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getActor">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Presence-class.html#getStatusCode" class="summary-sig-name">getStatusCode</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the status code of the presence (for groupchat)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getStatusCode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.protocol.Protocol-class.html">Protocol</a></code></b>:
+ <code><a href="nbxmpp.protocol.Protocol-class.html#__setitem__">__setitem__</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getError">getError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorCode">getErrorCode</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getErrorMsg">getErrorMsg</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getFrom">getFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getID">getID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getProperties">getProperties</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getStatusConditions">getStatusConditions</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp">getTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp2">getTimestamp2</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getTo">getTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#getType">getType</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setError">setError</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setFrom">setFrom</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setID">setID</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTimestamp">setTimestamp</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setTo">setTo</a></code>,
+ <code><a href="nbxmpp.protocol.Protocol-class.html#setType">setType</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">to</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">priority</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">show</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">status</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">frm</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">timestamp</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">payload</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">jabber:client</code><code class="variable-quote">'</code></span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ You can specify recipient, type of message, priority, show and status
+values any additional attributes, sender of the presence, timestamp, any
+additional payload (f.e. jabber:x:delay element) and namespace in one go.
+Alternatively you can pass in the other XML object as the 'node'
+parameted to replicate it as presence
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="getPriority"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getPriority</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getPriority">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the priority of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getShow"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getShow</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getShow">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the show value of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getStatus"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getStatus</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getStatus">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the status string of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setPriority"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setPriority</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.setPriority">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the priority of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setShow"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setShow</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.setShow">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the show value of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setStatus"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setStatus</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.setStatus">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the status string of the message
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_muc_getItemAttr"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_muc_getItemAttr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">attr</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence._muc_getItemAttr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_muc_getSubTagDataAttr"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_muc_getSubTagDataAttr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">attr</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence._muc_getSubTagDataAttr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getRole"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getRole</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getRole">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the presence role (for groupchat)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getAffiliation"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getAffiliation</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getAffiliation">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the presence affiliation (for groupchat)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getNewNick"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getNewNick</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getNewNick">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the status code of the presence (for groupchat)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getJid"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getJid</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getJid">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the presence jid (for groupchat)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getReason"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getReason</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getReason">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Returns the reason of the presence (for groupchat)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getActor"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getActor</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getActor">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the reason of the presence (for groupchat)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getStatusCode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getStatusCode</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Presence.getStatusCode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the status code of the presence (for groupchat)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.Protocol-class.html b/doc/apidocs/nbxmpp.protocol.Protocol-class.html
new file mode 100644
index 0000000..1c1998b
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.Protocol-class.html
@@ -0,0 +1,1040 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.Protocol</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;Protocol
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.Protocol-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Protocol</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_27" name="uml_class_diagram_for_nbxmpp_p_27">
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#__init__" title="Constructor, name is the name of the stanza i.e. &#39;message&#39; or &#39;presence&#39;or &#39;iq&#39;" alt="" coords="17,391,851,409"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getTo" title="Return value of the &#39;to&#39; attribute" alt="" coords="17,409,851,428"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getFrom" title="Return value of the &#39;from&#39; attribute" alt="" coords="17,428,851,447"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getTimestamp" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="17,447,851,465"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getTimestamp2" title="Return the timestamp in the &#39;yyyymmddThhmmss&#39; format" alt="" coords="17,465,851,484"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getID" title="Return the value of the &#39;id&#39; attribute" alt="" coords="17,484,851,503"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#setTo" title="Set the value of the &#39;to&#39; attribute" alt="" coords="17,503,851,521"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getType" title="Return the value of the &#39;type&#39; attribute" alt="" coords="17,521,851,540"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#setFrom" title="Set the value of the &#39;from&#39; attribute" alt="" coords="17,540,851,559"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#setType" title="Set the value of the &#39;type&#39; attribute" alt="" coords="17,559,851,577"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#setID" title="Set the value of the &#39;id&#39; attribute" alt="" coords="17,577,851,596"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getError" title="Return the error&#45;condition (if present) or the textual description of the error (otherwise)" alt="" coords="17,596,851,615"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#getErrorMsg" title="Return the textual description of the error (if present) or the error condition" alt="" coords="17,615,851,633"/>
+<area shape="rect" id="node125" href="nbxmpp.protocol.Protocol-class.html#__setitem__" title="Set the item &#39;item&#39; to the value &#39;val&#39;" alt="" coords="17,652,851,671"/>
+<area shape="rect" id="node1" href="nbxmpp.protocol.Protocol-class.html" title="A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs and messages" alt="" coords="5,358,861,677"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.Presence-class.html" title="nbxmpp.protocol.Presence" alt="" coords="236,697,332,735"/>
+<area shape="rect" id="node3" href="nbxmpp.protocol.Iq-class.html" title="XMPP Iq object &#45; get/set dialog mechanism" alt="" coords="361,697,409,735"/>
+<area shape="rect" id="node4" href="nbxmpp.protocol.Message-class.html" title="XMPP Message stanza &#45; &quot;push&quot; mechanism" alt="" coords="439,697,532,735"/>
+<area shape="rect" id="node6" href="nbxmpp.protocol.Error-class.html" title="Used to quickly transform received stanza into error reply" alt="" coords="561,697,628,735"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="164,31,705,49"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="164,52,705,71"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="164,71,705,89"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="164,89,705,108"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="164,108,705,127"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="164,127,705,145"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="164,145,705,164"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="164,164,705,183"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="164,183,705,201"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="164,201,705,220"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="164,220,705,239"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="164,239,705,257"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="164,257,705,276"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#getNamespace" title="Return the namespace of node" alt="" coords="164,276,705,295"/>
+<area shape="rect" id="node126" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="164,313,705,332"/>
+<area shape="rect" id="node5" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="152,6,717,338"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_27.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_27" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs
+and messages
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">to</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">typ</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">frm</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">payload</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">timestamp</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">xmlns</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Constructor, name is the name of the stanza
+i.e. 'message' or 'presence'or 'iq'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getTo" class="summary-sig-name">getTo</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return value of the 'to' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getTo">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getFrom" class="summary-sig-name">getFrom</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return value of the 'from' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getFrom">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp" class="summary-sig-name">getTimestamp</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the timestamp in the 'yyyymmddThhmmss' format</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getTimestamp">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getTimestamp2" class="summary-sig-name">getTimestamp2</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the timestamp in the 'yyyymmddThhmmss' format</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getTimestamp2">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getID" class="summary-sig-name">getID</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the value of the 'id' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getID">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#setTo" class="summary-sig-name">setTo</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the value of the 'to' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setTo">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getType" class="summary-sig-name">getType</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the value of the 'type' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getType">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#setFrom" class="summary-sig-name">setFrom</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the value of the 'from' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setFrom">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#setType" class="summary-sig-name">setType</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the value of the 'type' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setType">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#setID" class="summary-sig-name">setID</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the value of the 'id' attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setID">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getError" class="summary-sig-name">getError</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the error-condition (if present) or the textual description
+of the error (otherwise)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getError">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getErrorMsg" class="summary-sig-name">getErrorMsg</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the textual description of the error (if present)
+or the error condition</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getErrorMsg">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getErrorCode" class="summary-sig-name">getErrorCode</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the error code. Obsolete.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getErrorCode">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getStatusConditions" class="summary-sig-name">getStatusConditions</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the status conditions list as defined in XEP-0306.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getStatusConditions">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#setError" class="summary-sig-name">setError</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">error</span>,
+ <span class="summary-sig-arg">code</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Set the error code. Obsolete. Use error-conditions instead</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setError">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#setTimestamp" class="summary-sig-name">setTimestamp</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Set the timestamp. timestamp should be the yyyymmddThhmmss string</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setTimestamp">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#getProperties" class="summary-sig-name">getProperties</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the list of namespaces to which belongs the direct childs of element</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getProperties">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.protocol.Protocol-class.html#__setitem__" class="summary-sig-name">__setitem__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">item</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set the item 'item' to the value 'val'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.__setitem__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#addData">addData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getData">getData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getName">getName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setData">setData</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setName">setName</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a></code>,
+ <code><a href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a></code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.Node-class.html">simplexml.Node</a></code></b>:
+ <code><a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION">FORCE_NODE_RECREATION</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">to</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">typ</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">frm</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">payload</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">timestamp</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">xmlns</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Constructor, name is the name of the stanza
+i.e. 'message' or 'presence'or 'iq'</p>
+<p>to is the value of 'to' attribure, 'typ' - 'type' attribute
+frn - from attribure, attrs - other attributes mapping,
+payload - same meaning as for simplexml payload definition
+timestamp - the time value that needs to be stamped over stanza
+xmlns - namespace of top stanza node
+node - parsed or unparsed stana to be taken as prototype.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTo"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTo</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getTo">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return value of the 'to' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getFrom"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getFrom</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getFrom">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return value of the 'from' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTimestamp"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTimestamp</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getTimestamp">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the timestamp in the 'yyyymmddThhmmss' format
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTimestamp2"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTimestamp2</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getTimestamp2">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the timestamp in the 'yyyymmddThhmmss' format
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getID</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getID">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the value of the 'id' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setTo"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setTo</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setTo">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the value of the 'to' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getType"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getType</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getType">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the value of the 'type' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setFrom"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setFrom</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setFrom">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the value of the 'from' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setType"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setType</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setType">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the value of the 'type' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setID</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setID">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the value of the 'id' attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getError"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getError</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getError">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the error-condition (if present) or the textual description
+of the error (otherwise)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getErrorMsg"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getErrorMsg</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getErrorMsg">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the textual description of the error (if present)
+or the error condition
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getErrorCode"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getErrorCode</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getErrorCode">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the error code. Obsolete.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getStatusConditions"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getStatusConditions</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getStatusConditions">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the status conditions list as defined in XEP-0306.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setError"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setError</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">error</span>,
+ <span class="sig-arg">code</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setError">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the error code. Obsolete. Use error-conditions instead
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setTimestamp"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setTimestamp</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.setTimestamp">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the timestamp. timestamp should be the yyyymmddThhmmss string
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getProperties"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getProperties</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.getProperties">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the list of namespaces to which belongs the direct childs of element
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__setitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__setitem__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">item</span>,
+ <span class="sig-arg">val</span>)</span>
+ <br /><em class="fname">(Index assignment operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#Protocol.__setitem__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set the item 'item' to the value 'val'
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.simplexml.Node-class.html#__setitem__">simplexml.Node.__setitem__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.RemoteConnectionFailed-class.html b/doc/apidocs/nbxmpp.protocol.RemoteConnectionFailed-class.html
new file mode 100644
index 0000000..8a71ee6
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.RemoteConnectionFailed-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.RemoteConnectionFailed</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;RemoteConnectionFailed
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.RemoteConnectionFailed-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class RemoteConnectionFailed</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#RemoteConnectionFailed">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_28" name="uml_class_diagram_for_nbxmpp_p_28">
+<area shape="rect" id="node1" href="nbxmpp.protocol.RemoteConnectionFailed-class.html" title="nbxmpp.protocol.RemoteConnectionFailed" alt="" coords="11,443,192,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node134" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node133" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node133" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_28.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_28" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:06 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.ResourceConstraint-class.html b/doc/apidocs/nbxmpp.protocol.ResourceConstraint-class.html
new file mode 100644
index 0000000..27e575a
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.ResourceConstraint-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.ResourceConstraint</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;ResourceConstraint
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.ResourceConstraint-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ResourceConstraint</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#ResourceConstraint">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_29" name="uml_class_diagram_for_nbxmpp_p_29">
+<area shape="rect" id="node1" href="nbxmpp.protocol.ResourceConstraint-class.html" title="nbxmpp.protocol.ResourceConstraint" alt="" coords="27,443,176,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node137" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node137" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_29.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_29" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.RestrictedXML-class.html b/doc/apidocs/nbxmpp.protocol.RestrictedXML-class.html
new file mode 100644
index 0000000..a88e18d
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.RestrictedXML-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.RestrictedXML</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;RestrictedXML
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.RestrictedXML-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class RestrictedXML</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#RestrictedXML">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_30" name="uml_class_diagram_for_nbxmpp_p_30">
+<area shape="rect" id="node1" href="nbxmpp.protocol.RestrictedXML-class.html" title="nbxmpp.protocol.RestrictedXML" alt="" coords="45,443,160,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node141" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node141" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_30.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_30" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.SeeOtherHost-class.html b/doc/apidocs/nbxmpp.protocol.SeeOtherHost-class.html
new file mode 100644
index 0000000..282de79
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.SeeOtherHost-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.SeeOtherHost</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;SeeOtherHost
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.SeeOtherHost-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SeeOtherHost</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#SeeOtherHost">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_31" name="uml_class_diagram_for_nbxmpp_p_31">
+<area shape="rect" id="node1" href="nbxmpp.protocol.SeeOtherHost-class.html" title="nbxmpp.protocol.SeeOtherHost" alt="" coords="44,443,161,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node146" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node145" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node145" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_31.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_31" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.StreamError-class.html b/doc/apidocs/nbxmpp.protocol.StreamError-class.html
new file mode 100644
index 0000000..888cfda
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.StreamError-class.html
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.StreamError</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;StreamError
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.StreamError-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class StreamError</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#StreamError">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_32" name="uml_class_diagram_for_nbxmpp_p_32">
+<area shape="rect" id="node1" href="nbxmpp.protocol.HostGone-class.html" title="nbxmpp.protocol.HostGone" alt="" coords="5,443,107,482"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.BadNamespacePrefix-class.html" title="nbxmpp.protocol.BadNamespacePrefix" alt="" coords="136,443,309,482"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="2039,31,2208,49"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="2039,49,2208,68"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="2039,71,2208,89"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="2039,89,2208,108"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x[y]" alt="" coords="2039,108,2208,127"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x[i:j]" alt="" coords="2039,127,2208,145"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="helper for pickle" alt="" coords="2039,145,2208,164"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="repr(x)" alt="" coords="2039,164,2208,183"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="2039,183,2208,201"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="2039,201,2208,220"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="str(x)" alt="" coords="2039,220,2208,239"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="2039,239,2208,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="2027,6,2219,263"/>
+<area shape="rect" id="node148" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="2055,316,2192,335"/>
+<area shape="rect" id="node148" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="2055,335,2192,353"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="2043,283,2203,359"/>
+<area shape="rect" id="node4" href="nbxmpp.protocol.UnsupportedEncoding-class.html" title="nbxmpp.protocol.UnsupportedEncoding" alt="" coords="339,443,515,482"/>
+<area shape="rect" id="node5" href="nbxmpp.protocol.RemoteConnectionFailed-class.html" title="nbxmpp.protocol.RemoteConnectionFailed" alt="" coords="544,443,736,482"/>
+<area shape="rect" id="node6" href="nbxmpp.protocol.InvalidNamespace-class.html" title="nbxmpp.protocol.InvalidNamespace" alt="" coords="765,443,917,482"/>
+<area shape="rect" id="node7" href="nbxmpp.protocol.PolicyViolation-class.html" title="nbxmpp.protocol.PolicyViolation" alt="" coords="947,443,1075,482"/>
+<area shape="rect" id="node13" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="2071,379,2175,423"/>
+<area shape="rect" id="node9" href="nbxmpp.protocol.UnsupportedStanzaType-class.html" title="nbxmpp.protocol.UnsupportedStanzaType" alt="" coords="1104,443,1296,482"/>
+<area shape="rect" id="node10" href="nbxmpp.protocol.SystemShutdown-class.html" title="nbxmpp.protocol.SystemShutdown" alt="" coords="1325,443,1475,482"/>
+<area shape="rect" id="node11" href="nbxmpp.protocol.BadFormat-class.html" title="nbxmpp.protocol.BadFormat" alt="" coords="1504,443,1611,482"/>
+<area shape="rect" id="node12" href="nbxmpp.protocol.ImproperAddressing-class.html" title="nbxmpp.protocol.ImproperAddressing" alt="" coords="1640,443,1805,482"/>
+<area shape="rect" id="node14" href="nbxmpp.protocol.InvalidID-class.html" title="nbxmpp.protocol.InvalidID" alt="" coords="1835,443,1923,482"/>
+<area shape="rect" id="node15" href="nbxmpp.protocol.XMLNotWellFormed-class.html" title="nbxmpp.protocol.XMLNotWellFormed" alt="" coords="1952,443,2109,482"/>
+<area shape="rect" id="node16" href="nbxmpp.protocol.ConnectionTimeout-class.html" title="nbxmpp.protocol.ConnectionTimeout" alt="" coords="2139,443,2299,482"/>
+<area shape="rect" id="node17" href="nbxmpp.protocol.RestrictedXML-class.html" title="nbxmpp.protocol.RestrictedXML" alt="" coords="2328,443,2453,482"/>
+<area shape="rect" id="node18" href="nbxmpp.protocol.Conflict-class.html" title="nbxmpp.protocol.Conflict" alt="" coords="2483,443,2565,482"/>
+<area shape="rect" id="node19" href="nbxmpp.protocol.InvalidFrom-class.html" title="nbxmpp.protocol.InvalidFrom" alt="" coords="2595,443,2704,482"/>
+<area shape="rect" id="node20" href="nbxmpp.protocol.HostUnknown-class.html" title="nbxmpp.protocol.HostUnknown" alt="" coords="2733,443,2859,482"/>
+<area shape="rect" id="node21" href="nbxmpp.protocol.InvalidXML-class.html" title="nbxmpp.protocol.InvalidXML" alt="" coords="2888,443,2989,482"/>
+<area shape="rect" id="node22" href="nbxmpp.protocol.InternalServerError-class.html" title="nbxmpp.protocol.InternalServerError" alt="" coords="3019,443,3176,482"/>
+<area shape="rect" id="node23" href="nbxmpp.protocol.ResourceConstraint-class.html" title="nbxmpp.protocol.ResourceConstraint" alt="" coords="3205,443,3365,482"/>
+<area shape="rect" id="node24" href="nbxmpp.protocol.SeeOtherHost-class.html" title="nbxmpp.protocol.SeeOtherHost" alt="" coords="3395,443,3523,482"/>
+<area shape="rect" id="node25" href="nbxmpp.protocol.UnsupportedVersion-class.html" title="nbxmpp.protocol.UnsupportedVersion" alt="" coords="3552,443,3717,482"/>
+<area shape="rect" id="node26" href="nbxmpp.protocol.NotAuthorized-class.html" title="nbxmpp.protocol.NotAuthorized" alt="" coords="3747,443,3875,482"/>
+<area shape="rect" id="node27" href="nbxmpp.protocol.UndefinedCondition-class.html" title="nbxmpp.protocol.UndefinedCondition" alt="" coords="3904,443,4064,482"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_32.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_32" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Base exception class for stream errors
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.SystemShutdown-class.html b/doc/apidocs/nbxmpp.protocol.SystemShutdown-class.html
new file mode 100644
index 0000000..363bb29
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.SystemShutdown-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.SystemShutdown</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;SystemShutdown
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.SystemShutdown-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SystemShutdown</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#SystemShutdown">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_33" name="uml_class_diagram_for_nbxmpp_p_33">
+<area shape="rect" id="node1" href="nbxmpp.protocol.SystemShutdown-class.html" title="nbxmpp.protocol.SystemShutdown" alt="" coords="33,443,172,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node177" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_33.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_33" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.UndefinedCondition-class.html b/doc/apidocs/nbxmpp.protocol.UndefinedCondition-class.html
new file mode 100644
index 0000000..e1c2834
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.UndefinedCondition-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.UndefinedCondition</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;UndefinedCondition
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.UndefinedCondition-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UndefinedCondition</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#UndefinedCondition">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_34" name="uml_class_diagram_for_nbxmpp_p_34">
+<area shape="rect" id="node1" href="nbxmpp.protocol.UndefinedCondition-class.html" title="nbxmpp.protocol.UndefinedCondition" alt="" coords="27,443,176,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node181" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_34.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_34" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.UnsupportedEncoding-class.html b/doc/apidocs/nbxmpp.protocol.UnsupportedEncoding-class.html
new file mode 100644
index 0000000..832cf8e
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.UnsupportedEncoding-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.UnsupportedEncoding</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;UnsupportedEncoding
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.UnsupportedEncoding-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UnsupportedEncoding</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#UnsupportedEncoding">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_35" name="uml_class_diagram_for_nbxmpp_p_35">
+<area shape="rect" id="node1" href="nbxmpp.protocol.UnsupportedEncoding-class.html" title="nbxmpp.protocol.UnsupportedEncoding" alt="" coords="19,443,184,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node185" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node184" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node184" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_35.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_35" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.UnsupportedStanzaType-class.html b/doc/apidocs/nbxmpp.protocol.UnsupportedStanzaType-class.html
new file mode 100644
index 0000000..74a9374
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.UnsupportedStanzaType-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.UnsupportedStanzaType</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;UnsupportedStanzaType
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.UnsupportedStanzaType-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UnsupportedStanzaType</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#UnsupportedStanzaType">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_36" name="uml_class_diagram_for_nbxmpp_p_36">
+<area shape="rect" id="node1" href="nbxmpp.protocol.UnsupportedStanzaType-class.html" title="nbxmpp.protocol.UnsupportedStanzaType" alt="" coords="11,443,192,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node188" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node188" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_36.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_36" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.UnsupportedVersion-class.html b/doc/apidocs/nbxmpp.protocol.UnsupportedVersion-class.html
new file mode 100644
index 0000000..6fcc9b2
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.UnsupportedVersion-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.UnsupportedVersion</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;UnsupportedVersion
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.UnsupportedVersion-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UnsupportedVersion</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#UnsupportedVersion">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_37" name="uml_class_diagram_for_nbxmpp_p_37">
+<area shape="rect" id="node1" href="nbxmpp.protocol.UnsupportedVersion-class.html" title="nbxmpp.protocol.UnsupportedVersion" alt="" coords="24,443,179,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node193" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node192" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node192" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_37.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_37" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.protocol.XMLNotWellFormed-class.html b/doc/apidocs/nbxmpp.protocol.XMLNotWellFormed-class.html
new file mode 100644
index 0000000..9f61265
--- /dev/null
+++ b/doc/apidocs/nbxmpp.protocol.XMLNotWellFormed-class.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.protocol.XMLNotWellFormed</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.protocol-module.html">Module&nbsp;protocol</a> ::
+ Class&nbsp;XMLNotWellFormed
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.protocol.XMLNotWellFormed-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class XMLNotWellFormed</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.protocol-pysrc.html#XMLNotWellFormed">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_38" name="uml_class_diagram_for_nbxmpp_p_38">
+<area shape="rect" id="node1" href="nbxmpp.protocol.XMLNotWellFormed-class.html" title="nbxmpp.protocol.XMLNotWellFormed" alt="" coords="28,443,175,487"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.StreamError-class.html" title="Base exception class for stream errors" alt="" coords="49,379,153,423"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,187,49"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,187,68"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,71,187,89"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,89,187,108"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,187,127"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,187,145"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,187,164"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,187,183"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,183,187,201"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,187,220"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,187,239"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,187,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,197,263"/>
+<area shape="rect" id="node196" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,171,335"/>
+<area shape="rect" id="node196" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,171,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="21,283,181,359"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_38.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_38" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.proxy_connectors-module.html b/doc/apidocs/nbxmpp.proxy_connectors-module.html
new file mode 100644
index 0000000..c45f4f7
--- /dev/null
+++ b/doc/apidocs/nbxmpp.proxy_connectors-module.html
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.proxy_connectors</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;proxy_connectors
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.proxy_connectors-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module proxy_connectors</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html">source&nbsp;code</a></span></p>
+<p>Module containing classes for proxy connecting. So far its HTTP CONNECT and
+SOCKS5 proxy</p>
+<p>Authentication to NTLM (Microsoft implementation) proxies can be next.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.proxy_connectors.ProxyConnector-class.html" class="summary-name">ProxyConnector</a><br />
+ Interface for proxy-connecting object - when tunnneling XMPP over proxies,
+some connecting process usually has to be done before opening stream. Proxy
+connectors are used right after TCP connection is estabilished
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html" class="summary-name">HTTPCONNECTConnector</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html" class="summary-name">SOCKS5Connector</a><br />
+ SOCKS5 proxy connection class. Allows to use SOCKS5 proxies with
+(optionally) simple authentication (only USERNAME/PASSWORD auth)
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.proxy_connectors-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.proxy_connectors')">logging.getLogger('nbxmpp.proxy_connectors')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.proxy_connectors-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="struct">struct</span>,
+ <span title="socket">socket</span>,
+ <span title="base64">base64</span>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.proxy_connectors')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.proxy_connectors-pysrc.html b/doc/apidocs/nbxmpp.proxy_connectors-pysrc.html
new file mode 100644
index 0000000..2b4ecdc
--- /dev/null
+++ b/doc/apidocs/nbxmpp.proxy_connectors-pysrc.html
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.proxy_connectors</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;proxy_connectors
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.proxy_connectors-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.proxy_connectors-module.html">Module nbxmpp.proxy_connectors</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## proxy_connectors.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## based on transports_nb.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2004 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## modified by Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## modified by Tomas Karasek &lt;tom.to.the.k@gmail.com&gt;</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">Module containing classes for proxy connecting. So far its HTTP CONNECT and</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">SOCKS5 proxy</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring">Authentication to NTLM (Microsoft implementation) proxies can be next.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">struct</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">,</tt> <tt class="py-name">base64</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-0', 'log', 'link-0');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.proxy_connectors'</tt><tt class="py-op">)</tt> </tt>
+<a name="ProxyConnector"></a><div id="ProxyConnector-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <a class="py-toggle" href="#" id="ProxyConnector-toggle" onclick="return toggle('ProxyConnector');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a><tt class="py-op">:</tt> </tt>
+</div><div id="ProxyConnector-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ProxyConnector-expanded"><a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> Interface for proxy-connecting object - when tunnneling XMPP over proxies,</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring"> some connecting process usually has to be done before opening stream. Proxy</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"> connectors are used right after TCP connection is estabilished</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
+<a name="ProxyConnector.__init__"></a><div id="ProxyConnector.__init__-def"><a name="L36"></a><tt class="py-lineno"> 36</tt> <a class="py-toggle" href="#" id="ProxyConnector.__init__-toggle" onclick="return toggle('ProxyConnector.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">send_method</tt><tt class="py-op">,</tt> <tt class="py-param">onreceive</tt><tt class="py-op">,</tt> <tt class="py-param">old_on_receive</tt><tt class="py-op">,</tt> <tt class="py-param">on_success</tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-param">on_failure</tt><tt class="py-op">,</tt> <tt class="py-param">xmpp_server</tt><tt class="py-op">,</tt> <tt class="py-param">proxy_creds</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProxyConnector.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ProxyConnector.__init__-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> Creates proxy connector, starts connecting immediately and gives control</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> back to transport afterwards</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> :param send_method: transport send method</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> :param onreceive: method to set on_receive callbacks</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> :param old_on_receive: on_receive callback that should be set when</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> proxy connection was successful</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> :param on_success: called after proxy connection was successfully opened</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> :param on_failure: called when errors occured while connecting</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> :param xmpp_server: tuple of (hostname, port)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> :param proxy_creds: tuple of (proxy_user, proxy_credentials)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-1', 'send', 'link-1');">send</a></tt> <tt class="py-op">=</tt> <tt class="py-name">send_method</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-2', 'onreceive', 'link-2');">onreceive</a></tt> <tt class="py-op">=</tt> <tt id="link-3" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-3', 'onreceive', 'link-2');">onreceive</a></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_on_receive</tt> <tt class="py-op">=</tt> <tt class="py-name">old_on_receive</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_success</tt> <tt class="py-op">=</tt> <tt class="py-name">on_success</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">on_failure</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_server</tt> <tt class="py-op">=</tt> <tt class="py-name">xmpp_server</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy_creds</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_on_receive</tt> <tt class="py-op">=</tt> <tt class="py-name">old_on_receive</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Method nbxmpp.proxy_connectors.HTTPCONNECTConnector.start_connecting()=nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#start_connecting,Method nbxmpp.proxy_connectors.ProxyConnector.start_connecting()=nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting,Method nbxmpp.proxy_connectors.SOCKS5Connector.start_connecting()=nbxmpp.proxy_connectors.SOCKS5Connector-class.html#start_connecting"><a title="nbxmpp.proxy_connectors.HTTPCONNECTConnector.start_connecting
+nbxmpp.proxy_connectors.ProxyConnector.start_connecting
+nbxmpp.proxy_connectors.SOCKS5Connector.start_connecting" class="py-name" href="#" onclick="return doclink('link-4', 'start_connecting', 'link-4');">start_connecting</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="ProxyConnector.get_instance"></a><div id="ProxyConnector.get_instance-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="ProxyConnector.get_instance-toggle" onclick="return toggle('ProxyConnector.get_instance');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance">get_instance</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProxyConnector.get_instance-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ProxyConnector.get_instance-expanded"><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> Factory Method for object creation</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> Use this instead of directly initializing the class in order to make unit</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> testing much easier.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt>
+<a name="ProxyConnector.start_connecting"></a><div id="ProxyConnector.start_connecting-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="ProxyConnector.start_connecting-toggle" onclick="return toggle('ProxyConnector.start_connecting');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting">start_connecting</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProxyConnector.start_connecting-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ProxyConnector.start_connecting-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt> </tt>
+</div><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt>
+<a name="ProxyConnector.connecting_over"></a><div id="ProxyConnector.connecting_over-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="ProxyConnector.connecting_over-toggle" onclick="return toggle('ProxyConnector.connecting_over');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over">connecting_over</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProxyConnector.connecting_over-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ProxyConnector.connecting_over-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-5', 'onreceive', 'link-2');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_on_receive</tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_success</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt>
+<a name="HTTPCONNECTConnector"></a><div id="HTTPCONNECTConnector-def"><a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="HTTPCONNECTConnector-toggle" onclick="return toggle('HTTPCONNECTConnector');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html">HTTPCONNECTConnector</a><tt class="py-op">(</tt><tt class="py-base-class">ProxyConnector</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTTPCONNECTConnector-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="HTTPCONNECTConnector-expanded"><a name="HTTPCONNECTConnector.start_connecting"></a><div id="HTTPCONNECTConnector.start_connecting-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="HTTPCONNECTConnector.start_connecting-toggle" onclick="return toggle('HTTPCONNECTConnector.start_connecting');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#start_connecting">start_connecting</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTTPCONNECTConnector.start_connecting-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HTTPCONNECTConnector.start_connecting-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> Connect to a proxy, supply login and password to it (if were specified</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> while creating instance). Instruct proxy to make connection to the target</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> server.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt id="link-6" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-6', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Proxy server contacted, performing authentification'</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">connector</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'CONNECT %s:%s HTTP/1.1'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_server</tt><tt class="py-op">,</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-string">'Proxy-Connection: Keep-Alive'</tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-string">'Pragma: no-cache'</tt><tt class="py-op">,</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-string">'Host: %s:%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_server</tt><tt class="py-op">,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-string">'User-Agent: Gajim'</tt><tt class="py-op">]</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt><tt class="py-op">:</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s:%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-name">credentials</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">connector</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Proxy-Authorization: Basic '</tt><tt class="py-op">+</tt><tt class="py-name">credentials</tt><tt class="py-op">)</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">connector</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-7', 'onreceive', 'link-2');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method nbxmpp.proxy_connectors.HTTPCONNECTConnector._on_headers_sent()=nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#_on_headers_sent"><a title="nbxmpp.proxy_connectors.HTTPCONNECTConnector._on_headers_sent" class="py-name" href="#" onclick="return doclink('link-8', '_on_headers_sent', 'link-8');">_on_headers_sent</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-9', 'send', 'link-1');">send</a></tt><tt class="py-op">(</tt><tt class="py-string">'\r\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">connector</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt>
+<a name="HTTPCONNECTConnector._on_headers_sent"></a><div id="HTTPCONNECTConnector._on_headers_sent-def"><a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="HTTPCONNECTConnector._on_headers_sent-toggle" onclick="return toggle('HTTPCONNECTConnector._on_headers_sent');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#_on_headers_sent">_on_headers_sent</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reply</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HTTPCONNECTConnector._on_headers_sent-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HTTPCONNECTConnector._on_headers_sent-expanded"><a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reply</tt> <tt class="py-op">=</tt> <tt class="py-name">reply</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">proto</tt><tt class="py-op">,</tt> <tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-op">=</tt> <tt class="py-name">reply</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt id="link-10" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-10', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"_on_headers_sent:"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-comment">#traceback.print_exc()</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">code</tt> <tt class="py-op">&lt;&gt;</tt> <tt class="py-string">'200'</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-11', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply: %s %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">proto</tt><tt class="py-op">,</tt> <tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">reply</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method nbxmpp.proxy_connectors.ProxyConnector.connecting_over()=nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over"><a title="nbxmpp.proxy_connectors.ProxyConnector.connecting_over" class="py-name" href="#" onclick="return doclink('link-12', 'connecting_over', 'link-12');">connecting_over</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
+<a name="SOCKS5Connector"></a><div id="SOCKS5Connector-def"><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="SOCKS5Connector-toggle" onclick="return toggle('SOCKS5Connector');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html">SOCKS5Connector</a><tt class="py-op">(</tt><tt class="py-base-class">ProxyConnector</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SOCKS5Connector-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SOCKS5Connector-expanded"><a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> SOCKS5 proxy connection class. Allows to use SOCKS5 proxies with</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> (optionally) simple authentication (only USERNAME/PASSWORD auth)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> </tt>
+<a name="SOCKS5Connector.start_connecting"></a><div id="SOCKS5Connector.start_connecting-def"><a name="L126"></a><tt class="py-lineno">126</tt> <a class="py-toggle" href="#" id="SOCKS5Connector.start_connecting-toggle" onclick="return toggle('SOCKS5Connector.start_connecting');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#start_connecting">start_connecting</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SOCKS5Connector.start_connecting-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SOCKS5Connector.start_connecting-expanded"><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt id="link-13" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-13', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Proxy server contacted, performing authentification'</tt><tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt><tt class="py-op">:</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">to_send</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x05\x02\x00\x02'</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">to_send</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x05\x01\x00'</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-14', 'onreceive', 'link-2');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method nbxmpp.proxy_connectors.SOCKS5Connector._on_greeting_sent()=nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_greeting_sent"><a title="nbxmpp.proxy_connectors.SOCKS5Connector._on_greeting_sent" class="py-name" href="#" onclick="return doclink('link-15', '_on_greeting_sent', 'link-15');">_on_greeting_sent</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-16', 'send', 'link-1');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">to_send</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt>
+<a name="SOCKS5Connector._on_greeting_sent"></a><div id="SOCKS5Connector._on_greeting_sent-def"><a name="L135"></a><tt class="py-lineno">135</tt> <a class="py-toggle" href="#" id="SOCKS5Connector._on_greeting_sent-toggle" onclick="return toggle('SOCKS5Connector._on_greeting_sent');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_greeting_sent">_on_greeting_sent</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reply</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SOCKS5Connector._on_greeting_sent-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SOCKS5Connector._on_greeting_sent-expanded"><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">reply</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\x05'</tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt id="link-17" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-17', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'\x00'</tt><tt class="py-op">:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method nbxmpp.proxy_connectors.SOCKS5Connector._on_proxy_auth()=nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_proxy_auth"><a title="nbxmpp.proxy_connectors.SOCKS5Connector._on_proxy_auth" class="py-name" href="#" onclick="return doclink('link-18', '_on_proxy_auth', 'link-18');">_on_proxy_auth</a></tt><tt class="py-op">(</tt><tt class="py-string">'\x01\x00'</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'\x02'</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">to_send</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x01'</tt> <tt class="py-op">+</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt> <tt class="py-op">+</tt>\ </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-19', 'onreceive', 'link-2');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="nbxmpp.proxy_connectors.SOCKS5Connector._on_proxy_auth" class="py-name" href="#" onclick="return doclink('link-20', '_on_proxy_auth', 'link-18');">_on_proxy_auth</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-21', 'send', 'link-1');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">to_send</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'\xff'</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-22', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Authentification to proxy impossible: no acceptable '</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-string">'auth method'</tt><tt class="py-op">)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Authentification to proxy impossible: no '</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-string">'acceptable authentification method'</tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-23', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> </tt>
+<a name="SOCKS5Connector._on_proxy_auth"></a><div id="SOCKS5Connector._on_proxy_auth-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="SOCKS5Connector._on_proxy_auth-toggle" onclick="return toggle('SOCKS5Connector._on_proxy_auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_proxy_auth">_on_proxy_auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reply</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SOCKS5Connector._on_proxy_auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SOCKS5Connector._on_proxy_auth-expanded"><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">reply</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt id="link-24" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-24', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\x01'</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt id="link-25" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-25', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\x00'</tt><tt class="py-op">:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt id="link-26" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-26', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Authentification to proxy failed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Authentification to proxy failed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-27', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Authentification successfull. Jabber server contacted.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-comment"># Request connection</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-string">"\x05\x01\x00"</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-comment"># If the given destination address is an IP address, we'll</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-comment"># use the IPv4 address request even if remote resolving was specified.</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ipaddr</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">inet_aton</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_server</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">req</tt> <tt class="py-op">+</tt> <tt class="py-string">"\x01"</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ipaddr</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">:</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-comment"># Well it's not an IP number, so it's probably a DNS name.</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-comment"># if self.__proxy[3]==True:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-comment"># Resolve remotely</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ipaddr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">req</tt> <tt class="py-op">+</tt> <tt class="py-string">"\x03"</tt> <tt class="py-op">+</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_server</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_server</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-comment"># else:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-comment"># # Resolve locally</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-comment"># self.ipaddr = socket.inet_aton(socket.gethostbyname(self.xmpp_server[0]))</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-comment"># req = req + "\x01" + ipaddr</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">req</tt> <tt class="py-op">+</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">"&gt;H"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">xmpp_server</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-28', 'onreceive', 'link-2');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method nbxmpp.proxy_connectors.SOCKS5Connector._on_req_sent()=nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_req_sent"><a title="nbxmpp.proxy_connectors.SOCKS5Connector._on_req_sent" class="py-name" href="#" onclick="return doclink('link-29', '_on_req_sent', 'link-29');">_on_req_sent</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-30', 'send', 'link-1');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> </tt>
+<a name="SOCKS5Connector._on_req_sent"></a><div id="SOCKS5Connector._on_req_sent-def"><a name="L200"></a><tt class="py-lineno">200</tt> <a class="py-toggle" href="#" id="SOCKS5Connector._on_req_sent-toggle" onclick="return toggle('SOCKS5Connector._on_req_sent');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_req_sent">_on_req_sent</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reply</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SOCKS5Connector._on_req_sent-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SOCKS5Connector._on_req_sent-expanded"><a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">reply</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">10</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-31', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\x05'</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-32', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">"\x00"</tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-comment"># Connection failed</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">&lt;</tt><tt class="py-number">9</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">errors</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'general SOCKS server failure'</tt><tt class="py-op">,</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-string">'connection not allowed by ruleset'</tt><tt class="py-op">,</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-string">'Network unreachable'</tt><tt class="py-op">,</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-string">'Host unreachable'</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-string">'Connection refused'</tt><tt class="py-op">,</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-string">'TTL expired'</tt><tt class="py-op">,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-string">'Command not supported'</tt><tt class="py-op">,</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-string">'Address type not supported'</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-op">]</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">txt</tt> <tt class="py-op">=</tt> <tt class="py-name">errors</tt><tt class="py-op">[</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">txt</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid proxy reply'</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-33', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-name">txt</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-name">txt</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-comment"># Get the bound address/port</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">"\x01"</tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">begin</tt><tt class="py-op">,</tt> <tt id="link-34" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.end()=nbxmpp.idlequeue.IdleCommand-class.html#end"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-34', 'end', 'link-34');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-number">7</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">"\x03"</tt><tt class="py-op">:</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">begin</tt><tt class="py-op">,</tt> <tt id="link-35" class="py-name"><a title="nbxmpp.idlequeue.IdleCommand.end" class="py-name" href="#" onclick="return doclink('link-35', 'end', 'link-34');">end</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt> <tt class="py-op">+</tt> <tt class="py-name">reply</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt id="link-36" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-36', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_failure</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid proxy reply'</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="nbxmpp.proxy_connectors.ProxyConnector.connecting_over" class="py-name" href="#" onclick="return doclink('link-37', 'connecting_over', 'link-12');">connecting_over</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html b/doc/apidocs/nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html
new file mode 100644
index 0000000..d829ada
--- /dev/null
+++ b/doc/apidocs/nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.proxy_connectors.HTTPCONNECTConnector</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.proxy_connectors-module.html">Module&nbsp;proxy_connectors</a> ::
+ Class&nbsp;HTTPCONNECTConnector
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class HTTPCONNECTConnector</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#HTTPCONNECTConnector">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_39" name="uml_class_diagram_for_nbxmpp_p_39">
+<area shape="rect" id="node198" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#start_connecting" title="Connect to a proxy, supply login and password to it (if were specified while creating instance). Instruct proxy to make connection to the target server." alt="" coords="327,153,489,172"/>
+<area shape="rect" id="node1" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html" title="nbxmpp.proxy_connectors.HTTPCONNECTConnector" alt="" coords="315,121,501,178"/>
+<area shape="rect" id="node199" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__" title="Creates proxy connector, starts connecting immediately and gives control back to transport afterwards" alt="" coords="17,39,797,57"/>
+<area shape="rect" id="node199" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance" title="Factory Method for object creation" alt="" coords="17,57,797,76"/>
+<area shape="rect" id="node199" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over" title="nbxmpp.proxy_connectors.ProxyConnector.connecting_over" alt="" coords="17,76,797,95"/>
+<area shape="rect" id="node2" href="nbxmpp.proxy_connectors.ProxyConnector-class.html" title="Interface for proxy&#45;connecting object &#45; when tunnneling XMPP over proxies, some connecting process usually has to be done before opening stream. Proxy connectors are used right after TCP connection is estabilished" alt="" coords="5,6,808,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_39.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_39" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#start_connecting" class="summary-sig-name">start_connecting</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Connect to a proxy, supply login and password to it (if were specified
+while creating instance). Instruct proxy to make connection to the target
+server.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#HTTPCONNECTConnector.start_connecting">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html#_on_headers_sent" class="summary-sig-name" onclick="show_private();">_on_headers_sent</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">reply</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#HTTPCONNECTConnector._on_headers_sent">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a></code></b>:
+ <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__">__init__</a></code>,
+ <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over">connecting_over</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a></code></b>:
+ <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="start_connecting"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">start_connecting</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#HTTPCONNECTConnector.start_connecting">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Connect to a proxy, supply login and password to it (if were specified
+while creating instance). Instruct proxy to make connection to the target
+server.
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting">ProxyConnector.start_connecting</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_headers_sent"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_headers_sent</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">reply</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#HTTPCONNECTConnector._on_headers_sent">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.proxy_connectors.ProxyConnector-class.html b/doc/apidocs/nbxmpp.proxy_connectors.ProxyConnector-class.html
new file mode 100644
index 0000000..039526a
--- /dev/null
+++ b/doc/apidocs/nbxmpp.proxy_connectors.ProxyConnector-class.html
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.proxy_connectors.ProxyConnector</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.proxy_connectors-module.html">Module&nbsp;proxy_connectors</a> ::
+ Class&nbsp;ProxyConnector
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.proxy_connectors.ProxyConnector-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ProxyConnector</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_40" name="uml_class_diagram_for_nbxmpp_p_40">
+<area shape="rect" id="node200" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__" title="Creates proxy connector, starts connecting immediately and gives control back to transport afterwards" alt="" coords="17,39,797,57"/>
+<area shape="rect" id="node200" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance" title="Factory Method for object creation" alt="" coords="17,57,797,76"/>
+<area shape="rect" id="node200" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting" title="nbxmpp.proxy_connectors.ProxyConnector.start_connecting" alt="" coords="17,76,797,95"/>
+<area shape="rect" id="node200" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over" title="nbxmpp.proxy_connectors.ProxyConnector.connecting_over" alt="" coords="17,95,797,113"/>
+<area shape="rect" id="node1" href="nbxmpp.proxy_connectors.ProxyConnector-class.html" title="Interface for proxy&#45;connecting object &#45; when tunnneling XMPP over proxies, some connecting process usually has to be done before opening stream. Proxy connectors are used right after TCP connection is estabilished" alt="" coords="5,6,808,119"/>
+<area shape="rect" id="node2" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html" title="nbxmpp.proxy_connectors.HTTPCONNECTConnector" alt="" coords="207,139,404,178"/>
+<area shape="rect" id="node3" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html" title="SOCKS5 proxy connection class. Allows to use SOCKS5 proxies with (optionally) simple authentication (only USERNAME/PASSWORD auth)" alt="" coords="433,139,588,178"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_40.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_40" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Interface for proxy-connecting object - when tunnneling XMPP over proxies,
+some connecting process usually has to be done before opening stream. Proxy
+connectors are used right after TCP connection is estabilished
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">send_method</span>,
+ <span class="summary-sig-arg">onreceive</span>,
+ <span class="summary-sig-arg">old_on_receive</span>,
+ <span class="summary-sig-arg">on_success</span>,
+ <span class="summary-sig-arg">on_failure</span>,
+ <span class="summary-sig-arg">xmpp_server</span>,
+ <span class="summary-sig-arg">proxy_creds</span>=<span class="summary-sig-default"><code class="variable-group">(</code>None<code class="variable-op">, </code>None<code class="variable-group">)</code></span>)</span><br />
+ Creates proxy connector, starts connecting immediately and gives control
+back to transport afterwards</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting" class="summary-sig-name">start_connecting</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.start_connecting">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over" class="summary-sig-name">connecting_over</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.connecting_over">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance" class="summary-sig-name">get_instance</a>(<span class="summary-sig-arg">cls</span>,
+ <span class="summary-sig-arg">*args</span>,
+ <span class="summary-sig-arg">**kwargs</span>)</span><br />
+ Factory Method for object creation</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.get_instance">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">send_method</span>,
+ <span class="sig-arg">onreceive</span>,
+ <span class="sig-arg">old_on_receive</span>,
+ <span class="sig-arg">on_success</span>,
+ <span class="sig-arg">on_failure</span>,
+ <span class="sig-arg">xmpp_server</span>,
+ <span class="sig-arg">proxy_creds</span>=<span class="sig-default"><code class="variable-group">(</code>None<code class="variable-op">, </code>None<code class="variable-group">)</code></span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Creates proxy connector, starts connecting immediately and gives control
+back to transport afterwards
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>send_method</code></strong> - transport send method</li>
+ <li><strong class="pname"><code>onreceive</code></strong> - method to set on_receive callbacks</li>
+ <li><strong class="pname"><code>old_on_receive</code></strong> - on_receive callback that should be set when
+proxy connection was successful</li>
+ <li><strong class="pname"><code>on_success</code></strong> - called after proxy connection was successfully opened</li>
+ <li><strong class="pname"><code>on_failure</code></strong> - called when errors occured while connecting</li>
+ <li><strong class="pname"><code>xmpp_server</code></strong> - tuple of (hostname, port)</li>
+ <li><strong class="pname"><code>proxy_creds</code></strong> - tuple of (proxy_user, proxy_credentials)</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_instance"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_instance</span>(<span class="sig-arg">cls</span>,
+ <span class="sig-arg">*args</span>,
+ <span class="sig-arg">**kwargs</span>)</span>
+ <br /><em class="fname">Class Method</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.get_instance">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Factory Method for object creation</p>
+<p>Use this instead of directly initializing the class in order to make unit
+testing much easier.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="start_connecting"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">start_connecting</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.start_connecting">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="connecting_over"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">connecting_over</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#ProxyConnector.connecting_over">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.proxy_connectors.SOCKS5Connector-class.html b/doc/apidocs/nbxmpp.proxy_connectors.SOCKS5Connector-class.html
new file mode 100644
index 0000000..0144654
--- /dev/null
+++ b/doc/apidocs/nbxmpp.proxy_connectors.SOCKS5Connector-class.html
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.proxy_connectors.SOCKS5Connector</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.proxy_connectors-module.html">Module&nbsp;proxy_connectors</a> ::
+ Class&nbsp;SOCKS5Connector
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SOCKS5Connector</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_p_41" name="uml_class_diagram_for_nbxmpp_p_41">
+<area shape="rect" id="node203" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#start_connecting" title="nbxmpp.proxy_connectors.SOCKS5Connector.start_connecting" alt="" coords="335,153,481,172"/>
+<area shape="rect" id="node1" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html" title="SOCKS5 proxy connection class. Allows to use SOCKS5 proxies with (optionally) simple authentication (only USERNAME/PASSWORD auth)" alt="" coords="323,121,493,178"/>
+<area shape="rect" id="node204" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__" title="Creates proxy connector, starts connecting immediately and gives control back to transport afterwards" alt="" coords="17,39,797,57"/>
+<area shape="rect" id="node204" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance" title="Factory Method for object creation" alt="" coords="17,57,797,76"/>
+<area shape="rect" id="node204" href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over" title="nbxmpp.proxy_connectors.ProxyConnector.connecting_over" alt="" coords="17,76,797,95"/>
+<area shape="rect" id="node2" href="nbxmpp.proxy_connectors.ProxyConnector-class.html" title="Interface for proxy&#45;connecting object &#45; when tunnneling XMPP over proxies, some connecting process usually has to be done before opening stream. Proxy connectors are used right after TCP connection is estabilished" alt="" coords="5,6,808,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_p_41.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_p_41" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+SOCKS5 proxy connection class. Allows to use SOCKS5 proxies with
+(optionally) simple authentication (only USERNAME/PASSWORD auth)
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#start_connecting" class="summary-sig-name">start_connecting</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector.start_connecting">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_greeting_sent" class="summary-sig-name" onclick="show_private();">_on_greeting_sent</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">reply</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector._on_greeting_sent">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_proxy_auth" class="summary-sig-name" onclick="show_private();">_on_proxy_auth</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">reply</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector._on_proxy_auth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html#_on_req_sent" class="summary-sig-name" onclick="show_private();">_on_req_sent</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">reply</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector._on_req_sent">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a></code></b>:
+ <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__">__init__</a></code>,
+ <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#connecting_over">connecting_over</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html">ProxyConnector</a></code></b>:
+ <code><a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="start_connecting"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">start_connecting</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector.start_connecting">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.proxy_connectors.ProxyConnector-class.html#start_connecting">ProxyConnector.start_connecting</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_greeting_sent"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_greeting_sent</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">reply</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector._on_greeting_sent">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_proxy_auth"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_proxy_auth</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">reply</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector._on_proxy_auth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_req_sent"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_req_sent</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">reply</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.proxy_connectors-pysrc.html#SOCKS5Connector._on_req_sent">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.roster_nb-module.html b/doc/apidocs/nbxmpp.roster_nb-module.html
new file mode 100644
index 0000000..9d17b96
--- /dev/null
+++ b/doc/apidocs/nbxmpp.roster_nb-module.html
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.roster_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;roster_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.roster_nb-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module roster_nb</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html">source&nbsp;code</a></span></p>
+Simple roster implementation. Can be used though for different tasks like
+mass-renaming of contacts.
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.roster_nb.NonBlockingRoster-class.html" class="summary-name">NonBlockingRoster</a><br />
+ Defines a plenty of methods that will allow you to manage roster. Also
+automatically track presences from remote JIDs taking into account that
+every JID can have multiple resources connected. Does not currently support
+'error' presences. You can also use mapping interface for access to the
+internal representation of contacts in roster
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.roster_nb-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.roster_nb')">logging.getLogger('nbxmpp.roster_nb')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.roster_nb-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <a href="nbxmpp.protocol.JID-class.html" title="nbxmpp.protocol.JID">JID</a>,
+ <a href="nbxmpp.protocol.Iq-class.html" title="nbxmpp.protocol.Iq">Iq</a>,
+ <a href="nbxmpp.protocol.Presence-class.html" title="nbxmpp.protocol.Presence">Presence</a>,
+ <a href="nbxmpp.simplexml.Node-class.html" title="nbxmpp.protocol.Node">Node</a>,
+ <a href="nbxmpp.protocol.NodeProcessed-class.html" title="nbxmpp.protocol.NodeProcessed">NodeProcessed</a>,
+ <span title="nbxmpp.protocol.NS_MUC_USER">NS_MUC_USER</span>,
+ <span title="nbxmpp.protocol.NS_ROSTER">NS_ROSTER</span>,
+ <a href="nbxmpp.plugin.PlugIn-class.html" title="nbxmpp.plugin.PlugIn">PlugIn</a>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.roster_nb')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.roster_nb-pysrc.html b/doc/apidocs/nbxmpp.roster_nb-pysrc.html
new file mode 100644
index 0000000..bf2f268
--- /dev/null
+++ b/doc/apidocs/nbxmpp.roster_nb-pysrc.html
@@ -0,0 +1,647 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.roster_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;roster_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.roster_nb-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.roster_nb-module.html">Module nbxmpp.roster_nb</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## roster_nb.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## based on roster.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2005 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## modified by Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># $Id: roster.py,v 1.17 2005/05/02 08:38:49 snakeru Exp $</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">Simple roster implementation. Can be used though for different tasks like</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring">mass-renaming of contacts.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-0', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Class nbxmpp.protocol.JID=nbxmpp.protocol.JID-class.html"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-1', 'JID', 'link-1');">JID</a></tt><tt class="py-op">,</tt> <tt id="link-2" class="py-name" targets="Class nbxmpp.protocol.Iq=nbxmpp.protocol.Iq-class.html"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-2', 'Iq', 'link-2');">Iq</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Class nbxmpp.protocol.Presence=nbxmpp.protocol.Presence-class.html"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-3', 'Presence', 'link-3');">Presence</a></tt><tt class="py-op">,</tt> <tt id="link-4" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-4', 'Node', 'link-4');">Node</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Class nbxmpp.protocol.NodeProcessed=nbxmpp.protocol.NodeProcessed-class.html"><a title="nbxmpp.protocol.NodeProcessed" class="py-name" href="#" onclick="return doclink('link-5', 'NodeProcessed', 'link-5');">NodeProcessed</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Variable nbxmpp.protocol.NS_MUC_USER=nbxmpp.protocol-module.html#NS_MUC_USER"><a title="nbxmpp.protocol.NS_MUC_USER" class="py-name" href="#" onclick="return doclink('link-6', 'NS_MUC_USER', 'link-6');">NS_MUC_USER</a></tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name" targets="Variable nbxmpp.protocol.NS_ROSTER=nbxmpp.protocol-module.html#NS_ROSTER"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-7', 'NS_ROSTER', 'link-7');">NS_ROSTER</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugin()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugin,Method nbxmpp.auth_nb.NonBlockingNonSASL.plugin()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin,Method nbxmpp.auth_nb.SASL.plugin()=nbxmpp.auth_nb.SASL-class.html#plugin,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugin()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin,Module nbxmpp.plugin=nbxmpp.plugin-module.html,Method nbxmpp.roster_nb.NonBlockingRoster.plugin()=nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin,Method nbxmpp.tls_nb.NonBlockingTLS.plugin()=nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin,Method nbxmpp.transports_nb.NonBlockingTransport.plugin()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin"><a title="nbxmpp.auth_nb.NonBlockingBind.plugin
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin
+nbxmpp.auth_nb.SASL.plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin
+nbxmpp.plugin
+nbxmpp.roster_nb.NonBlockingRoster.plugin
+nbxmpp.tls_nb.NonBlockingTLS.plugin
+nbxmpp.transports_nb.NonBlockingTransport.plugin" class="py-name" href="#" onclick="return doclink('link-8', 'plugin', 'link-8');">plugin</a></tt> <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn,Method nbxmpp.dispatcher_nb.Dispatcher.PlugIn()=nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn,Class nbxmpp.plugin.PlugIn=nbxmpp.plugin.PlugIn-class.html,Method nbxmpp.plugin.PlugIn.PlugIn()=nbxmpp.plugin.PlugIn-class.html#PlugIn"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-9', 'PlugIn', 'link-9');">PlugIn</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-10', 'log', 'link-10');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.roster_nb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster"></a><div id="NonBlockingRoster-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="NonBlockingRoster-toggle" onclick="return toggle('NonBlockingRoster');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html">NonBlockingRoster</a><tt class="py-op">(</tt><tt class="py-base-class">PlugIn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingRoster-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> Defines a plenty of methods that will allow you to manage roster. Also</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> automatically track presences from remote JIDs taking into account that</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"> every JID can have multiple resources connected. Does not currently support</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> 'error' presences. You can also use mapping interface for access to the</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"> internal representation of contacts in roster</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.__init__"></a><div id="NonBlockingRoster.__init__-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.__init__-toggle" onclick="return toggle('NonBlockingRoster.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">version</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.__init__-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> Init internal variables</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-11', 'PlugIn', 'link-9');">PlugIn</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-12', '__init__', 'link-12');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">version</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exported_methods</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient.getRoster()=nbxmpp.client_nb.NonBlockingClient-class.html#getRoster,Method nbxmpp.roster_nb.NonBlockingRoster.getRoster()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getRoster"><a title="nbxmpp.client_nb.NonBlockingClient.getRoster
+nbxmpp.roster_nb.NonBlockingRoster.getRoster" class="py-name" href="#" onclick="return doclink('link-13', 'getRoster', 'link-13');">getRoster</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">received_from_server</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.Request"></a><div id="NonBlockingRoster.Request-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.Request-toggle" onclick="return toggle('NonBlockingRoster.Request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Request">Request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">force</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.Request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.Request-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> Request roster from server if it were not yet requested (or if the</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> 'force' argument is set)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">force</tt><tt class="py-op">:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-14', 'Iq', 'link-2');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-15', 'NS_ROSTER', 'link-7');">NS_ROSTER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method nbxmpp.simplexml.Node.setTagAttr()=nbxmpp.simplexml.Node-class.html#setTagAttr"><a title="nbxmpp.simplexml.Node.setTagAttr" class="py-name" href="#" onclick="return doclink('link-16', 'setTagAttr', 'link-16');">setTagAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">,</tt> <tt class="py-string">'ver'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">version</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">id_</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#getAnID"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID" class="py-name" href="#" onclick="return doclink('link-17', 'getAnID', 'link-17');">getAnID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method nbxmpp.protocol.Protocol.setID()=nbxmpp.protocol.Protocol-class.html#setID"><a title="nbxmpp.protocol.Protocol.setID" class="py-name" href="#" onclick="return doclink('link-18', 'setID', 'link-18');">setID</a></tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-19', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt id="link-20" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-20', 'log', 'link-10');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Roster requested from server'</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">id_</tt> </tt>
+</div><a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.RosterIqHandler"></a><div id="NonBlockingRoster.RosterIqHandler-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.RosterIqHandler-toggle" onclick="return toggle('NonBlockingRoster.RosterIqHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#RosterIqHandler">RosterIqHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">dis</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.RosterIqHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.RosterIqHandler-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> Subscription tracker. Used internally for setting items state in internal</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> roster representation</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">sender</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-21', 'getAttr', 'link-21');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sender</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sender</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method nbxmpp.protocol.JID.bareMatch()=nbxmpp.protocol.JID-class.html#bareMatch"><a title="nbxmpp.protocol.JID.bareMatch" class="py-name" href="#" onclick="return doclink('link-22', 'bareMatch', 'link-22');">bareMatch</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">User</tt> <tt class="py-op">+</tt> <tt class="py-string">'@'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-23', 'getTag', 'link-23');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">query</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">received_from_server</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method nbxmpp.simplexml.Node.getTagAttr()=nbxmpp.simplexml.Node-class.html#getTagAttr"><a title="nbxmpp.simplexml.Node.getTagAttr" class="py-name" href="#" onclick="return doclink('link-24', 'getTagAttr', 'link-24');">getTagAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">,</tt> <tt class="py-string">'ver'</tt><tt class="py-op">)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method nbxmpp.simplexml.Node.getTags()=nbxmpp.simplexml.Node-class.html#getTags"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-25', 'getTags', 'link-25');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">jid</tt><tt class="py-op">=</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-26', 'getAttr', 'link-21');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'jid'</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-27', 'getAttr', 'link-21');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'subscription'</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-string">'remove'</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-comment"># Looks like we have a workaround</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-comment"># raise NodeProcessed # a MUST</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-28', 'log', 'link-10');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Setting roster item %s...'</tt> <tt class="py-op">%</tt> <tt class="py-name">jid</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-29', 'getAttr', 'link-21');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'name'</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'ask'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-30', 'getAttr', 'link-21');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'ask'</tt><tt class="py-op">)</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'subscription'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-31', 'getAttr', 'link-21');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'subscription'</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'groups'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'resources'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">group</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-32', 'getTags', 'link-25');">getTags</a></tt><tt class="py-op">(</tt><tt class="py-string">'group'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">group</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method nbxmpp.simplexml.Node.getData()=nbxmpp.simplexml.Node-class.html#getData"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-33', 'getData', 'link-33');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'groups'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'groups'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">group</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-34', 'getData', 'link-33');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">User</tt><tt class="py-op">+</tt><tt class="py-string">'@'</tt><tt class="py-op">+</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'resources'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-string">'name'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'ask'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'subscription'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'groups'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-op">}</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">=</tt><tt class="py-number">1</tt> </tt>
+</div><a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-comment"># Looks like we have a workaround</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-comment"># raise NodeProcessed # a MUST. Otherwise you'll get back an &lt;iq type='error'/&gt;</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.PresenceHandler"></a><div id="NonBlockingRoster.PresenceHandler-def"><a name="L107"></a><tt class="py-lineno">107</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.PresenceHandler-toggle" onclick="return toggle('NonBlockingRoster.PresenceHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#PresenceHandler">PresenceHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">dis</tt><tt class="py-op">,</tt> <tt class="py-param">pres</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.PresenceHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.PresenceHandler-expanded"><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> Presence tracker. Used internally for setting items' resources state in</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> internal roster representation</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-35', 'getTag', 'link-23');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-36" class="py-name"><a title="nbxmpp.protocol.NS_MUC_USER" class="py-name" href="#" onclick="return doclink('link-36', 'NS_MUC_USER', 'link-6');">NS_MUC_USER</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">jid</tt><tt class="py-op">=</tt><tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method nbxmpp.protocol.Protocol.getFrom()=nbxmpp.protocol.Protocol-class.html#getFrom"><a title="nbxmpp.protocol.Protocol.getFrom" class="py-name" href="#" onclick="return doclink('link-37', 'getFrom', 'link-37');">getFrom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">jid</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-comment"># If no from attribue, it's from server</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">jid</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">jid</tt><tt class="py-op">=</tt><tt id="link-38" class="py-name"><a title="nbxmpp.protocol.JID" class="py-name" href="#" onclick="return doclink('link-38', 'JID', 'link-1');">JID</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method nbxmpp.protocol.JID.getStripped()=nbxmpp.protocol.JID-class.html#getStripped"><a title="nbxmpp.protocol.JID.getStripped" class="py-name" href="#" onclick="return doclink('link-39', 'getStripped', 'link-39');">getStripped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="nbxmpp.protocol.JID.getStripped" class="py-name" href="#" onclick="return doclink('link-40', 'getStripped', 'link-39');">getStripped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'name'</tt><tt class="py-op">:</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-string">'ask'</tt><tt class="py-op">:</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-string">'subscription'</tt><tt class="py-op">:</tt><tt class="py-string">'none'</tt><tt class="py-op">,</tt><tt class="py-string">'groups'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-string">'Not in roster'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-string">'resources'</tt><tt class="py-op">:</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">}</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="nbxmpp.protocol.JID.getStripped" class="py-name" href="#" onclick="return doclink('link-41', 'getStripped', 'link-39');">getStripped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">!=</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="nbxmpp.protocol.JID.getStripped" class="py-name" href="#" onclick="return doclink('link-42', 'getStripped', 'link-39');">getStripped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="nbxmpp.protocol.JID.getStripped" class="py-name" href="#" onclick="return doclink('link-43', 'getStripped', 'link-39');">getStripped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method nbxmpp.protocol.DataField.getType()=nbxmpp.protocol.DataField-class.html#getType,Method nbxmpp.protocol.DataForm.getType()=nbxmpp.protocol.DataForm-class.html#getType,Method nbxmpp.protocol.Protocol.getType()=nbxmpp.protocol.Protocol-class.html#getType"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.protocol.DataForm.getType
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-44', 'getType', 'link-44');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt id="link-45" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-45', 'log', 'link-10');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Setting roster item %s for resource %s...'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="nbxmpp.protocol.JID.getStripped" class="py-name" href="#" onclick="return doclink('link-46', 'getStripped', 'link-39');">getStripped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method nbxmpp.protocol.JID.getResource()=nbxmpp.protocol.JID-class.html#getResource"><a title="nbxmpp.protocol.JID.getResource" class="py-name" href="#" onclick="return doclink('link-47', 'getResource', 'link-47');">getResource</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="nbxmpp.protocol.JID.getResource" class="py-name" href="#" onclick="return doclink('link-48', 'getResource', 'link-47');">getResource</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">res</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-string">'show'</tt><tt class="py-op">:</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-string">'priority'</tt><tt class="py-op">:</tt><tt class="py-string">'0'</tt><tt class="py-op">,</tt><tt class="py-string">'timestamp'</tt><tt class="py-op">:</tt><tt class="py-name">None</tt><tt class="py-op">}</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-49', 'getTag', 'link-23');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'show'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">res</tt><tt class="py-op">[</tt><tt class="py-string">'show'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method nbxmpp.protocol.Presence.getShow()=nbxmpp.protocol.Presence-class.html#getShow,Method nbxmpp.roster_nb.NonBlockingRoster.getShow()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getShow"><a title="nbxmpp.protocol.Presence.getShow
+nbxmpp.roster_nb.NonBlockingRoster.getShow" class="py-name" href="#" onclick="return doclink('link-50', 'getShow', 'link-50');">getShow</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-51', 'getTag', 'link-23');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'status'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">res</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method nbxmpp.protocol.Presence.getStatus()=nbxmpp.protocol.Presence-class.html#getStatus,Method nbxmpp.roster_nb.NonBlockingRoster.getStatus()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getStatus"><a title="nbxmpp.protocol.Presence.getStatus
+nbxmpp.roster_nb.NonBlockingRoster.getStatus" class="py-name" href="#" onclick="return doclink('link-52', 'getStatus', 'link-52');">getStatus</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-53', 'getTag', 'link-23');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'priority'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">res</tt><tt class="py-op">[</tt><tt class="py-string">'priority'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method nbxmpp.protocol.Presence.getPriority()=nbxmpp.protocol.Presence-class.html#getPriority,Method nbxmpp.roster_nb.NonBlockingRoster.getPriority()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getPriority"><a title="nbxmpp.protocol.Presence.getPriority
+nbxmpp.roster_nb.NonBlockingRoster.getPriority" class="py-name" href="#" onclick="return doclink('link-54', 'getPriority', 'link-54');">getPriority</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method nbxmpp.protocol.Protocol.getTimestamp()=nbxmpp.protocol.Protocol-class.html#getTimestamp"><a title="nbxmpp.protocol.Protocol.getTimestamp" class="py-name" href="#" onclick="return doclink('link-55', 'getTimestamp', 'link-55');">getTimestamp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method nbxmpp.protocol.Protocol.setTimestamp()=nbxmpp.protocol.Protocol-class.html#setTimestamp"><a title="nbxmpp.protocol.Protocol.setTimestamp" class="py-name" href="#" onclick="return doclink('link-56', 'setTimestamp', 'link-56');">setTimestamp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">res</tt><tt class="py-op">[</tt><tt class="py-string">'timestamp'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">pres</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="nbxmpp.protocol.Protocol.getTimestamp" class="py-name" href="#" onclick="return doclink('link-57', 'getTimestamp', 'link-55');">getTimestamp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">typ</tt><tt class="py-op">==</tt><tt class="py-string">'unavailable'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="nbxmpp.protocol.JID.getResource" class="py-name" href="#" onclick="return doclink('link-58', 'getResource', 'link-47');">getResource</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">del</tt> <tt class="py-name">item</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="nbxmpp.protocol.JID.getResource" class="py-name" href="#" onclick="return doclink('link-59', 'getResource', 'link-47');">getResource</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-comment"># Need to handle type='error' also</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster._getItemData"></a><div id="NonBlockingRoster._getItemData-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="NonBlockingRoster._getItemData-toggle" onclick="return toggle('NonBlockingRoster._getItemData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_getItemData">_getItemData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">,</tt> <tt class="py-param">dataname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster._getItemData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster._getItemData-expanded"><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> Return specific jid's representation in internal format. Used internally</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">jid</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">+</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">dataname</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster._getResourceData"></a><div id="NonBlockingRoster._getResourceData-def"><a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="NonBlockingRoster._getResourceData-toggle" onclick="return toggle('NonBlockingRoster._getResourceData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_getResourceData">_getResourceData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">,</tt> <tt class="py-param">dataname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster._getResourceData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster._getResourceData-expanded"><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> Return specific jid's resource representation in internal format. Used</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> internally</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-name">resource</tt> <tt class="py-op">=</tt> <tt class="py-name">jid</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">resource</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">resource</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">dataname</tt><tt class="py-op">]</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.keys()=nbxmpp.roster_nb.NonBlockingRoster-class.html#keys"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-60', 'keys', 'link-60');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">lastpri</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">129</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">r</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-61', 'keys', 'link-60');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">r</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'priority'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">lastpri</tt><tt class="py-op">:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">resource</tt><tt class="py-op">,</tt> <tt class="py-name">lastpri</tt><tt class="py-op">=</tt><tt class="py-name">r</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">r</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'priority'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">resource</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">dataname</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.delItem"></a><div id="NonBlockingRoster.delItem-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.delItem-toggle" onclick="return toggle('NonBlockingRoster.delItem');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#delItem">delItem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.delItem-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.delItem-expanded"><a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> Delete contact 'jid' from roster</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-62', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt id="link-63" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-63', 'Iq', 'link-2');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-64" class="py-name"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-64', 'NS_ROSTER', 'link-7');">NS_ROSTER</a></tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-65" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-65', 'Node', 'link-4');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'jid'</tt><tt class="py-op">:</tt> <tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'subscription'</tt><tt class="py-op">:</tt> <tt class="py-string">'remove'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getAsk"></a><div id="NonBlockingRoster.getAsk-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getAsk-toggle" onclick="return toggle('NonBlockingRoster.getAsk');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getAsk">getAsk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getAsk-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getAsk-expanded"><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> Return 'ask' value of contact 'jid'</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster._getItemData()=nbxmpp.roster_nb.NonBlockingRoster-class.html#_getItemData"><a title="nbxmpp.roster_nb.NonBlockingRoster._getItemData" class="py-name" href="#" onclick="return doclink('link-66', '_getItemData', 'link-66');">_getItemData</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'ask'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getGroups"></a><div id="NonBlockingRoster.getGroups-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getGroups-toggle" onclick="return toggle('NonBlockingRoster.getGroups');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getGroups">getGroups</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getGroups-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getGroups-expanded"><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> Return groups list that contact 'jid' belongs to</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster._getItemData" class="py-name" href="#" onclick="return doclink('link-67', '_getItemData', 'link-66');">_getItemData</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'groups'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getName"></a><div id="NonBlockingRoster.getName-def"><a name="L177"></a><tt class="py-lineno">177</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getName-toggle" onclick="return toggle('NonBlockingRoster.getName');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getName">getName</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getName-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getName-expanded"><a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> Return name of contact 'jid'</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster._getItemData" class="py-name" href="#" onclick="return doclink('link-68', '_getItemData', 'link-66');">_getItemData</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'name'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getPriority"></a><div id="NonBlockingRoster.getPriority-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getPriority-toggle" onclick="return toggle('NonBlockingRoster.getPriority');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getPriority">getPriority</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getPriority-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getPriority-expanded"><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> Return priority of contact 'jid'. 'jid' should be a full (not bare) JID</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster._getResourceData()=nbxmpp.roster_nb.NonBlockingRoster-class.html#_getResourceData"><a title="nbxmpp.roster_nb.NonBlockingRoster._getResourceData" class="py-name" href="#" onclick="return doclink('link-69', '_getResourceData', 'link-69');">_getResourceData</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'priority'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getRawRoster"></a><div id="NonBlockingRoster.getRawRoster-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getRawRoster-toggle" onclick="return toggle('NonBlockingRoster.getRawRoster');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawRoster">getRawRoster</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getRawRoster-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getRawRoster-expanded"><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> Return roster representation in internal format</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> </tt>
+</div><a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getRawItem"></a><div id="NonBlockingRoster.getRawItem-def"><a name="L195"></a><tt class="py-lineno">195</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getRawItem-toggle" onclick="return toggle('NonBlockingRoster.getRawItem');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawItem">getRawItem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getRawItem-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getRawItem-expanded"><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> Return roster item 'jid' representation in internal format</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">+</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getShow"></a><div id="NonBlockingRoster.getShow-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getShow-toggle" onclick="return toggle('NonBlockingRoster.getShow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getShow">getShow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getShow-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getShow-expanded"><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-docstring"> Return 'show' value of contact 'jid'. 'jid' should be a full (not bare)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-docstring"> JID</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster._getResourceData" class="py-name" href="#" onclick="return doclink('link-70', '_getResourceData', 'link-69');">_getResourceData</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'show'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getStatus"></a><div id="NonBlockingRoster.getStatus-def"><a name="L208"></a><tt class="py-lineno">208</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getStatus-toggle" onclick="return toggle('NonBlockingRoster.getStatus');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getStatus">getStatus</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getStatus-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getStatus-expanded"><a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-docstring"> Return 'status' value of contact 'jid'. 'jid' should be a full (not bare)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"> JID</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster._getResourceData" class="py-name" href="#" onclick="return doclink('link-71', '_getResourceData', 'link-69');">_getResourceData</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'status'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getSubscription"></a><div id="NonBlockingRoster.getSubscription-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getSubscription-toggle" onclick="return toggle('NonBlockingRoster.getSubscription');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getSubscription">getSubscription</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getSubscription-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getSubscription-expanded"><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> Return 'subscription' value of contact 'jid'</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster._getItemData" class="py-name" href="#" onclick="return doclink('link-72', '_getItemData', 'link-66');">_getItemData</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'subscription'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getResources"></a><div id="NonBlockingRoster.getResources-def"><a name="L221"></a><tt class="py-lineno">221</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getResources-toggle" onclick="return toggle('NonBlockingRoster.getResources');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getResources">getResources</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getResources-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getResources-expanded"><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> Return list of connected resources of contact 'jid'</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">jid</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">+</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-73', 'keys', 'link-60');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.setItem"></a><div id="NonBlockingRoster.setItem-def"><a name="L227"></a><tt class="py-lineno">227</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.setItem-toggle" onclick="return toggle('NonBlockingRoster.setItem');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setItem">setItem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">groups</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.setItem-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.setItem-expanded"><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> Rename contact 'jid' and sets the groups list that it now belongs to</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-74', 'Iq', 'link-2');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-75', 'NS_ROSTER', 'link-7');">NS_ROSTER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-76', 'getTag', 'link-23');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'jid'</tt><tt class="py-op">:</tt> <tt class="py-name">jid</tt><tt class="py-op">}</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-77" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-77', 'name', 'link-77');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-78', 'name', 'link-77');">name</a></tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method nbxmpp.simplexml.Node.setTag()=nbxmpp.simplexml.Node-class.html#setTag"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-79', 'setTag', 'link-79');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">group</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method nbxmpp.simplexml.Node.addChild()=nbxmpp.simplexml.Node-class.html#addChild"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-80', 'addChild', 'link-80');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt id="link-81" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-81', 'Node', 'link-4');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'group'</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">group</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-82', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.setItemMulti"></a><div id="NonBlockingRoster.setItemMulti-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.setItemMulti-toggle" onclick="return toggle('NonBlockingRoster.setItemMulti');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setItemMulti">setItemMulti</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">items</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.setItemMulti-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.setItemMulti-expanded"><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> Rename multiple contacts and sets their group lists</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">iq</tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-83', 'Iq', 'link-2');">Iq</a></tt><tt class="py-op">(</tt><tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-84', 'NS_ROSTER', 'link-7');">NS_ROSTER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">iq</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-85', 'getTag', 'link-23');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'query'</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">items</tt><tt class="py-op">:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'jid'</tt><tt class="py-op">:</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-string">'jid'</tt><tt class="py-op">]</tt><tt class="py-op">}</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">query</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-86', 'setTag', 'link-79');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'item'</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">group</tt> <tt class="py-keyword">in</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-string">'groups'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-87', 'addChild', 'link-80');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt id="link-88" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-88', 'Node', 'link-4');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'group'</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">group</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-89', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">iq</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getItems"></a><div id="NonBlockingRoster.getItems-def"><a name="L256"></a><tt class="py-lineno">256</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getItems-toggle" onclick="return toggle('NonBlockingRoster.getItems');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getItems">getItems</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getItems-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getItems-expanded"><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> Return list of all [bare] JIDs that the roster is currently tracks</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-90', 'keys', 'link-60');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.keys"></a><div id="NonBlockingRoster.keys-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.keys-toggle" onclick="return toggle('NonBlockingRoster.keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#keys">keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.keys-expanded"><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> Same as getItems. Provided for the sake of dictionary interface</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-91', 'keys', 'link-60');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.__getitem__"></a><div id="NonBlockingRoster.__getitem__-def"><a name="L268"></a><tt class="py-lineno">268</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.__getitem__-toggle" onclick="return toggle('NonBlockingRoster.__getitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.__getitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.__getitem__-expanded"><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> Get the contact in the internal format. Raises KeyError if JID 'item' is</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> not in roster</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">item</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getItem"></a><div id="NonBlockingRoster.getItem-def"><a name="L275"></a><tt class="py-lineno">275</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getItem-toggle" onclick="return toggle('NonBlockingRoster.getItem');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getItem">getItem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getItem-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getItem-expanded"><a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> Get the contact in the internal format (or None if JID 'item' is not in</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> roster)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">item</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.Subscribe"></a><div id="NonBlockingRoster.Subscribe-def"><a name="L283"></a><tt class="py-lineno">283</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.Subscribe-toggle" onclick="return toggle('NonBlockingRoster.Subscribe');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Subscribe">Subscribe</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.Subscribe-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.Subscribe-expanded"><a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"><tt class="py-docstring"> Send subscription request to JID 'jid'</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-92', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-93', 'Presence', 'link-3');">Presence</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'subscribe'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.Unsubscribe"></a><div id="NonBlockingRoster.Unsubscribe-def"><a name="L289"></a><tt class="py-lineno">289</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.Unsubscribe-toggle" onclick="return toggle('NonBlockingRoster.Unsubscribe');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Unsubscribe">Unsubscribe</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.Unsubscribe-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.Unsubscribe-expanded"><a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"> Ask for removing our subscription for JID 'jid'</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-94', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt id="link-95" class="py-name"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-95', 'Presence', 'link-3');">Presence</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'unsubscribe'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.Authorize"></a><div id="NonBlockingRoster.Authorize-def"><a name="L295"></a><tt class="py-lineno">295</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.Authorize-toggle" onclick="return toggle('NonBlockingRoster.Authorize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Authorize">Authorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.Authorize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.Authorize-expanded"><a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> Authorize JID 'jid'. Works only if these JID requested auth previously</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-96', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt id="link-97" class="py-name"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-97', 'Presence', 'link-3');">Presence</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'subscribed'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.Unauthorize"></a><div id="NonBlockingRoster.Unauthorize-def"><a name="L301"></a><tt class="py-lineno">301</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.Unauthorize-toggle" onclick="return toggle('NonBlockingRoster.Unauthorize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Unauthorize">Unauthorize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">jid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.Unauthorize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.Unauthorize-expanded"><a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"> Unauthorise JID 'jid'. Use for declining authorisation request or for</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"><tt class="py-docstring"> removing existing authorization</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-98', 'send', 'link-19');">send</a></tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-99', 'Presence', 'link-3');">Presence</a></tt><tt class="py-op">(</tt><tt class="py-name">jid</tt><tt class="py-op">,</tt> <tt class="py-string">'unsubscribed'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getRaw"></a><div id="NonBlockingRoster.getRaw-def"><a name="L308"></a><tt class="py-lineno">308</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getRaw-toggle" onclick="return toggle('NonBlockingRoster.getRaw');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRaw">getRaw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getRaw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getRaw-expanded"><a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-docstring"> Return the internal data representation of the roster</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> </tt>
+</div><a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.setRaw"></a><div id="NonBlockingRoster.setRaw-def"><a name="L314"></a><tt class="py-lineno">314</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.setRaw-toggle" onclick="return toggle('NonBlockingRoster.setRaw');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setRaw">setRaw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.setRaw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.setRaw-expanded"><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> Return the internal data representation of the roster</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">User</tt> <tt class="py-op">+</tt> <tt class="py-string">'@'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-string">'resources'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-string">'name'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-string">'ask'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-string">'subscription'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-string">'groups'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.plugin"></a><div id="NonBlockingRoster.plugin-def"><a name="L328"></a><tt class="py-lineno">328</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.plugin-toggle" onclick="return toggle('NonBlockingRoster.plugin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin">plugin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.plugin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.plugin-expanded"><a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> Register presence and subscription trackers in the owner's dispatcher.</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> Also request roster from server if the 'request' argument is set. Used</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> internally</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-100', 'RegisterHandler', 'link-100');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'iq'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.RosterIqHandler()=nbxmpp.roster_nb.NonBlockingRoster-class.html#RosterIqHandler"><a title="nbxmpp.roster_nb.NonBlockingRoster.RosterIqHandler" class="py-name" href="#" onclick="return doclink('link-101', 'RosterIqHandler', 'link-101');">RosterIqHandler</a></tt><tt class="py-op">,</tt> <tt class="py-string">'result'</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-102', 'NS_ROSTER', 'link-7');">NS_ROSTER</a></tt><tt class="py-op">,</tt> <tt class="py-name">makefirst</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-103', 'RegisterHandler', 'link-100');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'iq'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.RosterIqHandler" class="py-name" href="#" onclick="return doclink('link-104', 'RosterIqHandler', 'link-101');">RosterIqHandler</a></tt><tt class="py-op">,</tt> <tt class="py-string">'set'</tt><tt class="py-op">,</tt> <tt id="link-105" class="py-name"><a title="nbxmpp.protocol.NS_ROSTER" class="py-name" href="#" onclick="return doclink('link-105', 'NS_ROSTER', 'link-7');">NS_ROSTER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-106', 'RegisterHandler', 'link-100');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'presence'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.PresenceHandler()=nbxmpp.roster_nb.NonBlockingRoster-class.html#PresenceHandler"><a title="nbxmpp.roster_nb.NonBlockingRoster.PresenceHandler" class="py-name" href="#" onclick="return doclink('link-107', 'PresenceHandler', 'link-107');">PresenceHandler</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">request</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.Request()=nbxmpp.roster_nb.NonBlockingRoster-class.html#Request"><a title="nbxmpp.roster_nb.NonBlockingRoster.Request" class="py-name" href="#" onclick="return doclink('link-108', 'Request', 'link-108');">Request</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster._on_roster_set"></a><div id="NonBlockingRoster._on_roster_set-def"><a name="L340"></a><tt class="py-lineno">340</tt> <a class="py-toggle" href="#" id="NonBlockingRoster._on_roster_set-toggle" onclick="return toggle('NonBlockingRoster._on_roster_set');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_on_roster_set">_on_roster_set</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster._on_roster_set-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster._on_roster_set-expanded"><a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Class nbxmpp.dispatcher_nb.Dispatcher=nbxmpp.dispatcher_nb.Dispatcher-class.html"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-109', 'Dispatcher', 'link-109');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking,Method nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-110', 'ProcessNonBlocking', 'link-110');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_owner'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-comment"># Connection has been closed by receiving a &lt;stream:error&gt; for ex,</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-111', 'onreceive', 'link-111');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_ready</tt><tt class="py-op">:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_ready</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_ready</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingRoster.getRoster"></a><div id="NonBlockingRoster.getRoster-def"><a name="L354"></a><tt class="py-lineno">354</tt> <a class="py-toggle" href="#" id="NonBlockingRoster.getRoster-toggle" onclick="return toggle('NonBlockingRoster.getRoster');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRoster">getRoster</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">on_ready</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">force</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingRoster.getRoster-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingRoster.getRoster-expanded"><a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"><tt class="py-docstring"> Request roster from server if neccessary and returns self</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-name">return_self</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_ready</tt> <tt class="py-op">=</tt> <tt class="py-name">on_ready</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-112', 'onreceive', 'link-111');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster._on_roster_set()=nbxmpp.roster_nb.NonBlockingRoster-class.html#_on_roster_set"><a title="nbxmpp.roster_nb.NonBlockingRoster._on_roster_set" class="py-name" href="#" onclick="return doclink('link-113', '_on_roster_set', 'link-113');">_on_roster_set</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">return_self</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">on_ready</tt><tt class="py-op">:</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">on_ready</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">return_self</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">return_self</tt> <tt class="py-keyword">or</tt> <tt class="py-name">force</tt><tt class="py-op">:</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div></div><a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.roster_nb.NonBlockingRoster-class.html b/doc/apidocs/nbxmpp.roster_nb.NonBlockingRoster-class.html
new file mode 100644
index 0000000..20c0d60
--- /dev/null
+++ b/doc/apidocs/nbxmpp.roster_nb.NonBlockingRoster-class.html
@@ -0,0 +1,1467 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.roster_nb.NonBlockingRoster</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.roster_nb-module.html">Module&nbsp;roster_nb</a> ::
+ Class&nbsp;NonBlockingRoster
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.roster_nb.NonBlockingRoster-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingRoster</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_r" name="uml_class_diagram_for_nbxmpp_r">
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__" title="Init internal variables" alt="" coords="17,153,313,172"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Request" title="Request roster from server if it were not yet requested (or if the &#39;force&#39; argument is set)" alt="" coords="17,172,313,191"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#RosterIqHandler" title="Subscription tracker. Used internally for setting items state in internal roster representation" alt="" coords="17,191,313,209"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#PresenceHandler" title="Presence tracker. Used internally for setting items&#39; resources state in internal roster representation" alt="" coords="17,209,313,228"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#delItem" title="Delete contact &#39;jid&#39; from roster" alt="" coords="17,228,313,247"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getAsk" title="Return &#39;ask&#39; value of contact &#39;jid&#39;" alt="" coords="17,247,313,265"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getGroups" title="Return groups list that contact &#39;jid&#39; belongs to" alt="" coords="17,265,313,284"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getName" title="Return name of contact &#39;jid&#39;" alt="" coords="17,284,313,303"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getPriority" title="Return priority of contact &#39;jid&#39;. &#39;jid&#39; should be a full (not bare) JID" alt="" coords="17,303,313,321"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawRoster" title="Return roster representation in internal format" alt="" coords="17,321,313,340"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawItem" title="Return roster item &#39;jid&#39; representation in internal format" alt="" coords="17,340,313,359"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getShow" title="Return &#39;show&#39; value of contact &#39;jid&#39;. &#39;jid&#39; should be a full (not bare) JID" alt="" coords="17,359,313,377"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getStatus" title="Return &#39;status&#39; value of contact &#39;jid&#39;. &#39;jid&#39; should be a full (not bare) JID" alt="" coords="17,377,313,396"/>
+<area shape="rect" id="node205" href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRoster" title="Request roster from server if neccessary and returns self" alt="" coords="17,415,313,433"/>
+<area shape="rect" id="node1" href="nbxmpp.roster_nb.NonBlockingRoster-class.html" title="Defines a plenty of methods that will allow you to manage roster. Also automatically track presences from remote JIDs taking into account that every JID can have multiple resources connected. Does not currently support &#39;error&#39; presences. You can also use mapping interface for access to the internal representation of contacts in roster" alt="" coords="5,121,325,439"/>
+<area shape="rect" id="node206" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="52,39,277,57"/>
+<area shape="rect" id="node206" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="52,57,277,76"/>
+<area shape="rect" id="node206" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="52,76,277,95"/>
+<area shape="rect" id="node2" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="40,6,288,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_r.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_r" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Defines a plenty of methods that will allow you to manage roster. Also
+automatically track presences from remote JIDs taking into account that
+every JID can have multiple resources connected. Does not currently support
+'error' presences. You can also use mapping interface for access to the
+internal representation of contacts in roster
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">version</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Init internal variables</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Request" class="summary-sig-name">Request</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">force</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Request roster from server if it were not yet requested (or if the
+'force' argument is set)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Request">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#RosterIqHandler" class="summary-sig-name">RosterIqHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">dis</span>,
+ <span class="summary-sig-arg">stanza</span>)</span><br />
+ Subscription tracker. Used internally for setting items state in internal
+roster representation</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.RosterIqHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#PresenceHandler" class="summary-sig-name">PresenceHandler</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">dis</span>,
+ <span class="summary-sig-arg">pres</span>)</span><br />
+ Presence tracker. Used internally for setting items' resources state in
+internal roster representation</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.PresenceHandler">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_getItemData" class="summary-sig-name" onclick="show_private();">_getItemData</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>,
+ <span class="summary-sig-arg">dataname</span>)</span><br />
+ Return specific jid's representation in internal format. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster._getItemData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_getResourceData" class="summary-sig-name" onclick="show_private();">_getResourceData</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>,
+ <span class="summary-sig-arg">dataname</span>)</span><br />
+ Return specific jid's resource representation in internal format. Used
+internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster._getResourceData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#delItem" class="summary-sig-name">delItem</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Delete contact 'jid' from roster</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.delItem">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getAsk" class="summary-sig-name">getAsk</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return 'ask' value of contact 'jid'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getAsk">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getGroups" class="summary-sig-name">getGroups</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return groups list that contact 'jid' belongs to</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getGroups">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getName" class="summary-sig-name">getName</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return name of contact 'jid'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getName">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getPriority" class="summary-sig-name">getPriority</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return priority of contact 'jid'. 'jid' should be a full (not bare) JID</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getPriority">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawRoster" class="summary-sig-name">getRawRoster</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return roster representation in internal format</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRawRoster">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRawItem" class="summary-sig-name">getRawItem</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return roster item 'jid' representation in internal format</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRawItem">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getShow" class="summary-sig-name">getShow</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return 'show' value of contact 'jid'. 'jid' should be a full (not bare)
+JID</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getShow">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getStatus" class="summary-sig-name">getStatus</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return 'status' value of contact 'jid'. 'jid' should be a full (not bare)
+JID</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getStatus">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getSubscription" class="summary-sig-name">getSubscription</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return 'subscription' value of contact 'jid'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getSubscription">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getResources" class="summary-sig-name">getResources</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Return list of connected resources of contact 'jid'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getResources">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setItem" class="summary-sig-name">setItem</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>,
+ <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">groups</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span><br />
+ Rename contact 'jid' and sets the groups list that it now belongs to</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.setItem">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setItemMulti" class="summary-sig-name">setItemMulti</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">items</span>)</span><br />
+ Rename multiple contacts and sets their group lists</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.setItemMulti">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getItems" class="summary-sig-name">getItems</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return list of all [bare] JIDs that the roster is currently tracks</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getItems">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#keys" class="summary-sig-name">keys</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Same as getItems. Provided for the sake of dictionary interface</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.keys">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">item</span>)</span><br />
+ Get the contact in the internal format. Raises KeyError if JID 'item' is
+not in roster</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.__getitem__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getItem" class="summary-sig-name">getItem</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">item</span>)</span><br />
+ Get the contact in the internal format (or None if JID 'item' is not in
+roster)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getItem">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Subscribe" class="summary-sig-name">Subscribe</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Send subscription request to JID 'jid'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Subscribe">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Unsubscribe" class="summary-sig-name">Unsubscribe</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Ask for removing our subscription for JID 'jid'</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Unsubscribe">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Authorize" class="summary-sig-name">Authorize</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Authorize JID 'jid'. Works only if these JID requested auth previously</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Authorize">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#Unauthorize" class="summary-sig-name">Unauthorize</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">jid</span>)</span><br />
+ Unauthorise JID 'jid'. Use for declining authorisation request or for
+removing existing authorization</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Unauthorize">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRaw" class="summary-sig-name">getRaw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the internal data representation of the roster</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRaw">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#setRaw" class="summary-sig-name">setRaw</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Return the internal data representation of the roster</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.setRaw">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin" class="summary-sig-name">plugin</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>,
+ <span class="summary-sig-arg">request</span>=<span class="summary-sig-default">1</span>)</span><br />
+ Register presence and subscription trackers in the owner's dispatcher.
+Also request roster from server if the 'request' argument is set. Used
+internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.plugin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#_on_roster_set" class="summary-sig-name" onclick="show_private();">_on_roster_set</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster._on_roster_set">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.roster_nb.NonBlockingRoster-class.html#getRoster" class="summary-sig-name">getRoster</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">on_ready</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">force</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Request roster from server if neccessary and returns self</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRoster">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">version</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Init internal variables
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="Request"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">Request</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">force</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Request">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Request roster from server if it were not yet requested (or if the
+'force' argument is set)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="RosterIqHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">RosterIqHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">dis</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.RosterIqHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Subscription tracker. Used internally for setting items state in internal
+roster representation
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="PresenceHandler"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">PresenceHandler</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">dis</span>,
+ <span class="sig-arg">pres</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.PresenceHandler">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Presence tracker. Used internally for setting items' resources state in
+internal roster representation
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_getItemData"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_getItemData</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>,
+ <span class="sig-arg">dataname</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster._getItemData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return specific jid's representation in internal format. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_getResourceData"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_getResourceData</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>,
+ <span class="sig-arg">dataname</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster._getResourceData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return specific jid's resource representation in internal format. Used
+internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="delItem"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">delItem</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.delItem">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Delete contact 'jid' from roster
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getAsk"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getAsk</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getAsk">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return 'ask' value of contact 'jid'
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getGroups"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getGroups</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getGroups">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return groups list that contact 'jid' belongs to
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getName"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getName</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getName">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return name of contact 'jid'
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getPriority"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getPriority</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getPriority">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return priority of contact 'jid'. 'jid' should be a full (not bare) JID
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getRawRoster"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getRawRoster</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRawRoster">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return roster representation in internal format
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getRawItem"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getRawItem</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRawItem">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return roster item 'jid' representation in internal format
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getShow"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getShow</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getShow">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return 'show' value of contact 'jid'. 'jid' should be a full (not bare)
+JID
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getStatus"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getStatus</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getStatus">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return 'status' value of contact 'jid'. 'jid' should be a full (not bare)
+JID
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getSubscription"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getSubscription</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getSubscription">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return 'subscription' value of contact 'jid'
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getResources"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getResources</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getResources">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return list of connected resources of contact 'jid'
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setItem"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setItem</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>,
+ <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">groups</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.setItem">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Rename contact 'jid' and sets the groups list that it now belongs to
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setItemMulti"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setItemMulti</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">items</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.setItemMulti">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Rename multiple contacts and sets their group lists
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getItems"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getItems</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getItems">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return list of all [bare] JIDs that the roster is currently tracks
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="keys"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">keys</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.keys">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Same as getItems. Provided for the sake of dictionary interface
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__getitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">item</span>)</span>
+ <br /><em class="fname">(Indexing operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.__getitem__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get the contact in the internal format. Raises KeyError if JID 'item' is
+not in roster
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getItem"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getItem</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">item</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getItem">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get the contact in the internal format (or None if JID 'item' is not in
+roster)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="Subscribe"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">Subscribe</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Subscribe">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send subscription request to JID 'jid'
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="Unsubscribe"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">Unsubscribe</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Unsubscribe">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Ask for removing our subscription for JID 'jid'
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="Authorize"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">Authorize</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Authorize">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Authorize JID 'jid'. Works only if these JID requested auth previously
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="Unauthorize"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">Unauthorize</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">jid</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.Unauthorize">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Unauthorise JID 'jid'. Use for declining authorisation request or for
+removing existing authorization
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getRaw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getRaw</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRaw">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the internal data representation of the roster
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setRaw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setRaw</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.setRaw">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the internal data representation of the roster
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugin</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>,
+ <span class="sig-arg">request</span>=<span class="sig-default">1</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.plugin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Register presence and subscription trackers in the owner's dispatcher.
+Also request roster from server if the 'request' argument is set. Used
+internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_roster_set"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_roster_set</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster._on_roster_set">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getRoster"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getRoster</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">on_ready</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">force</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.roster_nb-pysrc.html#NonBlockingRoster.getRoster">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Request roster from server if neccessary and returns self
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.simplexml-module.html b/doc/apidocs/nbxmpp.simplexml-module.html
new file mode 100644
index 0000000..14de838
--- /dev/null
+++ b/doc/apidocs/nbxmpp.simplexml-module.html
@@ -0,0 +1,488 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.simplexml</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;simplexml
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.simplexml-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module simplexml</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html">source&nbsp;code</a></span></p>
+Simplexml module provides xmpppy library with all needed tools to handle XML
+nodes and XML streams. I'm personally using it in many other separate
+projects. It is designed to be as standalone as possible
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml.Node-class.html" class="summary-name">Node</a><br />
+ Node class describes syntax of separate XML Node. It have a constructor that
+permits node creation from set of &quot;namespace name&quot;, attributes and payload
+of text strings and other nodes. It does not natively support building node
+from text string and uses NodeBuilder class for that purpose. After
+creation node can be mangled in many ways so it can be completely changed.
+Also node can be serialised into string in one of two modes: default (where
+the textual representation of node describes it exactly) and &quot;fancy&quot; - with
+whitespace added to make indentation and thus make result more readable by
+human.
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml.T-class.html" class="summary-name">T</a><br />
+ Auxiliary class used to quick access to node's child nodes
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml.NT-class.html" class="summary-name">NT</a><br />
+ Auxiliary class used to quick create node's child nodes
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml.NodeBuilder-class.html" class="summary-name">NodeBuilder</a><br />
+ Builds a Node class minidom from data parsed to it. This class used for two
+purposes:
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml-module.html#XMLescape" class="summary-sig-name">XMLescape</a>(<span class="summary-sig-arg">txt</span>)</span><br />
+ Return provided string with symbols &amp; &lt; &gt; &quot; replaced by their respective XML
+entities</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#XMLescape">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml-module.html#ustr" class="summary-sig-name">ustr</a>(<span class="summary-sig-arg">what</span>)</span><br />
+ Converts object &quot;what&quot; to unicode string using it's own __str__ method if
+accessible or unicode method otherwise</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#ustr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml-module.html#XML2Node" class="summary-sig-name">XML2Node</a>(<span class="summary-sig-arg">xml</span>)</span><br />
+ Convert supplied textual string into XML node. Handy f.e. for reading
+configuration file. Raises xml.parser.expat.parsererror if provided string
+is not well-formed XML</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#XML2Node">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml-module.html#BadXML2Node" class="summary-sig-name">BadXML2Node</a>(<span class="summary-sig-arg">xml</span>)</span><br />
+ Convert supplied textual string into XML node. Survives if xml data is
+cutted half way round. I.e. &quot;&lt;html&gt;some text &lt;br&gt;some more text&quot;. Will raise
+xml.parser.expat.parsererror on misplaced tags though. F.e. &quot;&lt;b&gt;some text
+&lt;br&gt;some more text&lt;/b&gt;&quot; will not work</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#BadXML2Node">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.simplexml')">logging.getLogger('nbxmpp.simplexml')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml-module.html#ENCODING" class="summary-name">ENCODING</a> = <code title="'utf-8'"><code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="xml">xml</span>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="XMLescape"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">XMLescape</span>(<span class="sig-arg">txt</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#XMLescape">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return provided string with symbols &amp; &lt; &gt; &quot; replaced by their respective XML
+entities
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="ustr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">ustr</span>(<span class="sig-arg">what</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#ustr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Converts object &quot;what&quot; to unicode string using it's own __str__ method if
+accessible or unicode method otherwise
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="XML2Node"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">XML2Node</span>(<span class="sig-arg">xml</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#XML2Node">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Convert supplied textual string into XML node. Handy f.e. for reading
+configuration file. Raises xml.parser.expat.parsererror if provided string
+is not well-formed XML
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="BadXML2Node"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">BadXML2Node</span>(<span class="sig-arg">xml</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#BadXML2Node">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Convert supplied textual string into XML node. Survives if xml data is
+cutted half way round. I.e. &quot;&lt;html&gt;some text &lt;br&gt;some more text&quot;. Will raise
+xml.parser.expat.parsererror on misplaced tags though. F.e. &quot;&lt;b&gt;some text
+&lt;br&gt;some more text&lt;/b&gt;&quot; will not work
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.simplexml')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="ENCODING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ENCODING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.simplexml-pysrc.html b/doc/apidocs/nbxmpp.simplexml-pysrc.html
new file mode 100644
index 0000000..4964fb1
--- /dev/null
+++ b/doc/apidocs/nbxmpp.simplexml-pysrc.html
@@ -0,0 +1,983 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.simplexml</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;simplexml
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.simplexml-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.simplexml-module.html">Module nbxmpp.simplexml</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## simplexml.py based on Mattew Allum's xmlstream.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2005 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># $Id: simplexml.py,v 1.27 2005/04/30 07:20:27 snakeru Exp $</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">Simplexml module provides xmpppy library with all needed tools to handle XML</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">nodes and XML streams. I'm personally using it in many other separate</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">projects. It is designed to be as standalone as possible</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">parsers</tt><tt class="py-op">.</tt><tt class="py-name">expat</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-0', 'log', 'link-0');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.simplexml'</tt><tt class="py-op">)</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
+<a name="XMLescape"></a><div id="XMLescape-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="XMLescape-toggle" onclick="return toggle('XMLescape');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml-module.html#XMLescape">XMLescape</a><tt class="py-op">(</tt><tt class="py-param">txt</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMLescape-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="XMLescape-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> Return provided string with symbols &amp; &lt; &gt; " replaced by their respective XML</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> entities</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-comment"># replace also FORM FEED and ESC, because they are not valid XML chars</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">txt</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"&amp;"</tt><tt class="py-op">,</tt> <tt class="py-string">"&amp;amp;"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;"</tt><tt class="py-op">,</tt> <tt class="py-string">"&amp;lt;"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"&gt;"</tt><tt class="py-op">,</tt> <tt class="py-string">"&amp;gt;"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">,</tt> <tt class="py-string">"&amp;quot;"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">u'\x0C'</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">u'\x1B'</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable nbxmpp.simplexml.ENCODING=nbxmpp.simplexml-module.html#ENCODING"><a title="nbxmpp.simplexml.ENCODING" class="py-name" href="#" onclick="return doclink('link-1', 'ENCODING', 'link-1');">ENCODING</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
+<a name="ustr"></a><div id="ustr-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="ustr-toggle" onclick="return toggle('ustr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml-module.html#ustr">ustr</a><tt class="py-op">(</tt><tt class="py-param">what</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ustr-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ustr-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> Converts object "what" to unicode string using it's own __str__ method if</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> accessible or unicode method otherwise</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">what</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">what</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">what</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Method nbxmpp.protocol.JID.__str__()=nbxmpp.protocol.JID-class.html#__str__,Method nbxmpp.simplexml.Node.__str__()=nbxmpp.simplexml.Node-class.html#__str__,Method nbxmpp.tls_nb.SSLWrapper.Error.__str__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-2', '__str__', 'link-2');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">what</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name"><a title="nbxmpp.simplexml.ENCODING" class="py-name" href="#" onclick="return doclink('link-3', 'ENCODING', 'link-1');">ENCODING</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">r</tt> </tt>
+</div><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="Node"></a><div id="Node-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="Node-toggle" onclick="return toggle('Node');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html">Node</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Node-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> Node class describes syntax of separate XML Node. It have a constructor that</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> permits node creation from set of "namespace name", attributes and payload</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> of text strings and other nodes. It does not natively support building node</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> from text string and uses NodeBuilder class for that purpose. After</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> creation node can be mangled in many ways so it can be completely changed.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> Also node can be serialised into string in one of two modes: default (where</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> the textual representation of node describes it exactly) and "fancy" - with</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"> whitespace added to make indentation and thus make result more readable by</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> human.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> Node class have attribute FORCE_NODE_RECREATION that is defaults to False</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> thus enabling fast node replication from the some other node. The drawback</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> of the fast way is that new node shares some info with the "original" node</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> that is changing the one node may influence the other. Though it is rarely</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> needed (in xmpppy it is never needed at all since I'm usually never using</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> original node after replication (and using replication only to move upwards</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> on the classes tree).</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt id="link-4" class="py-name" targets="Variable nbxmpp.simplexml.Node.FORCE_NODE_RECREATION=nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION"><a title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" class="py-name" href="#" onclick="return doclink('link-4', 'FORCE_NODE_RECREATION', 'link-4');">FORCE_NODE_RECREATION</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt>
+<a name="Node.__init__"></a><div id="Node.__init__-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="Node.__init__-toggle" onclick="return toggle('Node.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">parent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">nsp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-param">node_built</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.__init__-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> Takes "tag" argument as the name of node (prepended by namespace, if</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> needed and separated from it by a space), attrs dictionary as the set of</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> arguments, payload list as the set of textual strings and child nodes</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> that this node carries within itself and "parent" argument that is</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> another node that this one will be the child of. Also the __init__ can be</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> provided with "node" argument that is either a text string containing</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> exactly one node or another Node instance to begin with. If both "node"</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> and other arguments is provided then the node initially created as</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> replica of "node" provided and then modified to be compliant with other</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> arguments.</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" class="py-name" href="#" onclick="return doclink('link-5', 'FORCE_NODE_RECREATION', 'link-4');">FORCE_NODE_RECREATION</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-6', 'Node', 'link-6');">Node</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-7', 'Node', 'link-6');">Node</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name" targets="Class nbxmpp.simplexml.NodeBuilder=nbxmpp.simplexml.NodeBuilder-class.html"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-8', 'NodeBuilder', 'link-8');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">node_built</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-9', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsd</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-10', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.keys()=nbxmpp.roster_nb.NonBlockingRoster-class.html#keys"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-11', 'keys', 'link-11');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">data</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">kid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">:</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">kid</tt><tt class="py-op">)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nsd</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsd</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-12', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsd</tt> <tt class="py-op">=</tt> <tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">parent</tt><tt class="py-op">:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">parent</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsp_cache</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">nsp</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nsp</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsp_cache</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt> <tt class="py-op">==</tt> <tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsd</tt><tt class="py-op">[</tt><tt class="py-string">u''</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'xmlns:'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsd</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">[</tt><tt class="py-number">6</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node_built</tt><tt class="py-op">:</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">pfx</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-13', 'name', 'link-9');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-name">tag</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method nbxmpp.simplexml.Node.lookup_nsp()=nbxmpp.simplexml.Node-class.html#lookup_nsp"><a title="nbxmpp.simplexml.Node.lookup_nsp" class="py-name" href="#" onclick="return doclink('link-14', 'lookup_nsp', 'link-14');">lookup_nsp</a></tt><tt class="py-op">(</tt><tt class="py-name">pfx</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">' '</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tag</tt><tt class="py-op">:</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-15', 'name', 'link-9');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tag</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-16', 'name', 'link-9');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tag</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">payload</tt><tt class="py-op">]</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">payload</tt><tt class="py-op">:</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt id="link-17" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-17', 'Node', 'link-6');">Node</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method nbxmpp.simplexml.Node.addChild()=nbxmpp.simplexml.Node-class.html#addChild"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-18', 'addChild', 'link-18');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-19" class="py-name" targets="Function nbxmpp.simplexml.ustr()=nbxmpp.simplexml-module.html#ustr"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-19', 'ustr', 'link-19');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt>
+<a name="Node.lookup_nsp"></a><div id="Node.lookup_nsp-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="Node.lookup_nsp-toggle" onclick="return toggle('Node.lookup_nsp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#lookup_nsp">lookup_nsp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pfx</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.lookup_nsp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.lookup_nsp-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">ns</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsd</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method nbxmpp.bosh.KeyStack.get()=nbxmpp.bosh.KeyStack-class.html#get"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-20', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">pfx</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ns</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">ns</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsp_cache</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-21', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">pfx</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ns</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">ns</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="nbxmpp.simplexml.Node.lookup_nsp" class="py-name" href="#" onclick="return doclink('link-22', 'lookup_nsp', 'link-14');">lookup_nsp</a></tt><tt class="py-op">(</tt><tt class="py-name">pfx</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">nsp_cache</tt><tt class="py-op">[</tt><tt class="py-name">pfx</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">ns</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'http://www.gajim.org/xmlns/undeclared'</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ns</tt> </tt>
+</div><a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> </tt>
+<a name="Node.__str__"></a><div id="Node.__str__-def"><a name="L146"></a><tt class="py-lineno">146</tt> <a class="py-toggle" href="#" id="Node.__str__-toggle" onclick="return toggle('Node.__str__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fancy</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.__str__-expanded"><a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> Method used to dump node into textual representation. If "fancy" argument</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> is set to True produces indented output for readability</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">fancy</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-string">"&lt;"</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-23', 'name', 'link-9');">name</a></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">!=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'xmlns'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">' xmlns="%s"'</tt><tt class="py-op">%</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-24', 'keys', 'link-11');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-25', 'ustr', 'link-19');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">' %s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name" targets="Function nbxmpp.simplexml.XMLescape()=nbxmpp.simplexml-module.html#XMLescape"><a title="nbxmpp.simplexml.XMLescape" class="py-name" href="#" onclick="return doclink('link-26', 'XMLescape', 'link-26');">XMLescape</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">"&gt;"</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">cnt</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fancy</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">fancy</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">&gt;=</tt><tt class="py-name">cnt</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt><tt class="py-op">=</tt><tt class="py-name">s</tt><tt class="py-op">+</tt><tt id="link-27" class="py-name"><a title="nbxmpp.simplexml.XMLescape" class="py-name" href="#" onclick="return doclink('link-27', 'XMLescape', 'link-26');">XMLescape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">cnt</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">&gt;=</tt><tt class="py-name">cnt</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt><tt class="py-op">=</tt><tt class="py-name">s</tt><tt class="py-op">+</tt><tt id="link-28" class="py-name"><a title="nbxmpp.simplexml.XMLescape" class="py-name" href="#" onclick="return doclink('link-28', 'XMLescape', 'link-26');">XMLescape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">cnt</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-29', '__str__', 'link-2');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="nbxmpp.protocol.JID.__str__
+nbxmpp.simplexml.Node.__str__
+nbxmpp.tls_nb.SSLWrapper.Error.__str__" class="py-name" href="#" onclick="return doclink('link-30', '__str__', 'link-2');">__str__</a></tt><tt class="py-op">(</tt><tt class="py-name">fancy</tt> <tt class="py-keyword">and</tt> <tt class="py-name">fancy</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">cnt</tt><tt class="py-op">=</tt><tt class="py-name">cnt</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">fancy</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">cnt</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt id="link-31" class="py-name"><a title="nbxmpp.simplexml.XMLescape" class="py-name" href="#" onclick="return doclink('link-31', 'XMLescape', 'link-26');">XMLescape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">cnt</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">cnt</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt id="link-32" class="py-name"><a title="nbxmpp.simplexml.XMLescape" class="py-name" href="#" onclick="return doclink('link-32', 'XMLescape', 'link-26');">XMLescape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">cnt</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt> <tt class="py-keyword">and</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">=</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-string">' /&gt;'</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fancy</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fancy</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">fancy</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-string">' '</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">"&lt;/"</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-33', 'name', 'link-9');">name</a></tt> <tt class="py-op">+</tt> <tt class="py-string">"&gt;"</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fancy</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div><a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> </tt>
+<a name="Node.addChild"></a><div id="Node.addChild-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="Node.addChild-toggle" onclick="return toggle('Node.addChild');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#addChild">addChild</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.addChild-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.addChild-expanded"><a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> If "node" argument is provided, adds it as child node. Else creates new</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> node from the other arguments' values and adds it as well</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'xmlns'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Use namespace=x instead of attrs={'xmlns':x}"</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">newnode</tt><tt class="py-op">=</tt><tt class="py-name">node</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">newnode</tt><tt class="py-op">=</tt><tt id="link-34" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-34', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">=</tt><tt id="link-35" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-35', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">newnode</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method nbxmpp.simplexml.Node.setNamespace()=nbxmpp.simplexml.Node-class.html#setNamespace"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-36', 'setNamespace', 'link-36');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">namespace</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">newnode</tt><tt class="py-op">)</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">newnode</tt> </tt>
+</div><a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> </tt>
+<a name="Node.addData"></a><div id="Node.addData-def"><a name="L198"></a><tt class="py-lineno">198</tt> <a class="py-toggle" href="#" id="Node.addData-toggle" onclick="return toggle('Node.addData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#addData">addData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.addData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.addData-expanded"><a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> Add some CDATA to node</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-37" class="py-name"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-37', 'ustr', 'link-19');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt>
+<a name="Node.clearData"></a><div id="Node.clearData-def"><a name="L204"></a><tt class="py-lineno">204</tt> <a class="py-toggle" href="#" id="Node.clearData-toggle" onclick="return toggle('Node.clearData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#clearData">clearData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.clearData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.clearData-expanded"><a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"> Remove all CDATA from the node</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> </tt>
+<a name="Node.delAttr"></a><div id="Node.delAttr-def"><a name="L210"></a><tt class="py-lineno">210</tt> <a class="py-toggle" href="#" id="Node.delAttr-toggle" onclick="return toggle('Node.delAttr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#delAttr">delAttr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.delAttr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.delAttr-expanded"><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> Delete an attribute "key"</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> </tt>
+<a name="Node.delChild"></a><div id="Node.delChild-def"><a name="L216"></a><tt class="py-lineno">216</tt> <a class="py-toggle" href="#" id="Node.delChild-toggle" onclick="return toggle('Node.delChild');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#delChild">delChild</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.delChild-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.delChild-expanded"><a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> Delete the "node" from the node's childs list, if "node" is an instance.</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> Else delete the first node that have specified name and (optionally)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> attributes</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt id="link-38" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-38', 'Node', 'link-6');">Node</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-39', 'getTag', 'link-39');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">node</tt> </tt>
+</div><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> </tt>
+<a name="Node.getAttrs"></a><div id="Node.getAttrs-def"><a name="L227"></a><tt class="py-lineno">227</tt> <a class="py-toggle" href="#" id="Node.getAttrs-toggle" onclick="return toggle('Node.getAttrs');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getAttrs">getAttrs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getAttrs-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getAttrs-expanded"><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> Return all node's attributes as dictionary</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt> </tt>
+</div><a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
+<a name="Node.getAttr"></a><div id="Node.getAttr-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="Node.getAttr-toggle" onclick="return toggle('Node.getAttr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getAttr">getAttr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getAttr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getAttr-expanded"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> Return value of specified attribute</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-40', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt>
+<a name="Node.getChildren"></a><div id="Node.getChildren-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="Node.getChildren-toggle" onclick="return toggle('Node.getChildren');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getChildren">getChildren</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getChildren-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getChildren-expanded"><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> Return all node's child nodes as list</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt> </tt>
+</div><a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> </tt>
+<a name="Node.getData"></a><div id="Node.getData-def"><a name="L245"></a><tt class="py-lineno">245</tt> <a class="py-toggle" href="#" id="Node.getData-toggle" onclick="return toggle('Node.getData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getData">getData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getData-expanded"><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"> Return all node CDATA as string (concatenated)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> </tt>
+<a name="Node.getName"></a><div id="Node.getName-def"><a name="L251"></a><tt class="py-lineno">251</tt> <a class="py-toggle" href="#" id="Node.getName-toggle" onclick="return toggle('Node.getName');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getName">getName</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getName-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getName-expanded"><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> Return the name of node</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-41', 'name', 'link-9');">name</a></tt> </tt>
+</div><a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> </tt>
+<a name="Node.getNamespace"></a><div id="Node.getNamespace-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="Node.getNamespace-toggle" onclick="return toggle('Node.getNamespace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getNamespace">getNamespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getNamespace-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getNamespace-expanded"><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> Return the namespace of node</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt> </tt>
+</div><a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> </tt>
+<a name="Node.getParent"></a><div id="Node.getParent-def"><a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="Node.getParent-toggle" onclick="return toggle('Node.getParent');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getParent">getParent</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getParent-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getParent-expanded"><a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"> Returns the parent of node (if present)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> </tt>
+</div><a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> </tt>
+<a name="Node.getPayload"></a><div id="Node.getPayload-def"><a name="L269"></a><tt class="py-lineno">269</tt> <a class="py-toggle" href="#" id="Node.getPayload-toggle" onclick="return toggle('Node.getPayload');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getPayload">getPayload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getPayload-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getPayload-expanded"><a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> Return the payload of node i.e. list of child nodes and CDATA entries.</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> F.e. for "&lt;node&gt;text1&lt;nodea/&gt;&lt;nodeb/&gt; text2&lt;/node&gt;" will be returned</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> list: ['text1', &lt;nodea instance&gt;, &lt;nodeb instance&gt;, ' text2']</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt>
+</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt>
+<a name="Node.getTag"></a><div id="Node.getTag-def"><a name="L288"></a><tt class="py-lineno">288</tt> <a class="py-toggle" href="#" id="Node.getTag-toggle" onclick="return toggle('Node.getTag');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getTag">getTag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getTag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getTag-expanded"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> Filter all child nodes using specified arguments as filter. Return the</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"> first found or None if not found</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method nbxmpp.simplexml.Node.getTags()=nbxmpp.simplexml.Node-class.html#getTags"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-42', 'getTags', 'link-42');">getTags</a></tt><tt class="py-op">(</tt><tt id="link-43" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-43', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt class="py-name">one</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> </tt>
+<a name="Node.getTagAttr"></a><div id="Node.getTagAttr-def"><a name="L295"></a><tt class="py-lineno">295</tt> <a class="py-toggle" href="#" id="Node.getTagAttr-toggle" onclick="return toggle('Node.getTagAttr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getTagAttr">getTagAttr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getTagAttr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getTagAttr-expanded"><a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> Return attribute value of the child with specified name (or None if no</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> such attribute)</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-44', 'getTag', 'link-39');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt>
+<a name="Node.getTagData"></a><div id="Node.getTagData-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="Node.getTagData-toggle" onclick="return toggle('Node.getTagData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getTagData">getTagData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getTagData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getTagData-expanded"><a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"><tt class="py-docstring"> Return cocatenated CDATA of the child with specified name</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-45', 'getTag', 'link-39');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method nbxmpp.simplexml.Node.getData()=nbxmpp.simplexml.Node-class.html#getData"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-46', 'getData', 'link-46');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> </tt>
+<a name="Node.getTags"></a><div id="Node.getTags-def"><a name="L314"></a><tt class="py-lineno">314</tt> <a class="py-toggle" href="#" id="Node.getTags-toggle" onclick="return toggle('Node.getTags');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#getTags">getTags</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">one</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.getTags-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.getTags-expanded"><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> Filter all child nodes using specified arguments as filter. Returns the</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-docstring"> list of nodes found</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">nodes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">:</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">namespace</tt> <tt class="py-keyword">and</tt> <tt class="py-name">namespace</tt> <tt class="py-op">!=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-47', 'getNamespace', 'link-47');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-48', 'getName', 'link-48');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-49" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-49', 'name', 'link-9');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-50', 'keys', 'link-11');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt> <tt class="py-keyword">or</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">!=</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-name">nodes</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">one</tt> <tt class="py-keyword">and</tt> <tt class="py-name">nodes</tt><tt class="py-op">:</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">nodes</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">one</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">nodes</tt> </tt>
+</div><a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> </tt>
+<a name="Node.iterTags"></a><div id="Node.iterTags-def"><a name="L334"></a><tt class="py-lineno">334</tt> <a class="py-toggle" href="#" id="Node.iterTags-toggle" onclick="return toggle('Node.iterTags');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#iterTags">iterTags</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.iterTags-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.iterTags-expanded"><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"><tt class="py-docstring"> Iterate over all children using specified arguments as filter</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">namespace</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">namespace</tt> <tt class="py-op">!=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-51', 'getNamespace', 'link-47');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-52', 'getName', 'link-48');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-53" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-53', 'name', 'link-9');">name</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.keys" class="py-name" href="#" onclick="return doclink('link-54', 'keys', 'link-11');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt> <tt class="py-keyword">or</tt> \ </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">!=</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-name">node</tt> </tt>
+</div><a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> </tt>
+<a name="Node.setAttr"></a><div id="Node.setAttr-def"><a name="L349"></a><tt class="py-lineno">349</tt> <a class="py-toggle" href="#" id="Node.setAttr-toggle" onclick="return toggle('Node.setAttr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setAttr">setAttr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setAttr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setAttr-expanded"><a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> Set attribute "key" with the value "val"</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> </tt>
+<a name="Node.setData"></a><div id="Node.setData-def"><a name="L355"></a><tt class="py-lineno">355</tt> <a class="py-toggle" href="#" id="Node.setData-toggle" onclick="return toggle('Node.setData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setData">setData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setData-expanded"><a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"> Set node's CDATA to provided string. Resets all previous CDATA!</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-55" class="py-name"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-55', 'ustr', 'link-19');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt>
+<a name="Node.setName"></a><div id="Node.setName-def"><a name="L361"></a><tt class="py-lineno">361</tt> <a class="py-toggle" href="#" id="Node.setName-toggle" onclick="return toggle('Node.setName');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setName">setName</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setName-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setName-expanded"><a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> Change the node name</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-56', 'name', 'link-9');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> </tt>
+<a name="Node.setNamespace"></a><div id="Node.setNamespace-def"><a name="L367"></a><tt class="py-lineno">367</tt> <a class="py-toggle" href="#" id="Node.setNamespace-toggle" onclick="return toggle('Node.setNamespace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setNamespace">setNamespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setNamespace-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setNamespace-expanded"><a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-docstring"> Changes the node namespace</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">namespace</tt> <tt class="py-op">=</tt> <tt class="py-name">namespace</tt> </tt>
+</div><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> </tt>
+<a name="Node.setParent"></a><div id="Node.setParent-def"><a name="L373"></a><tt class="py-lineno">373</tt> <a class="py-toggle" href="#" id="Node.setParent-toggle" onclick="return toggle('Node.setParent');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setParent">setParent</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setParent-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setParent-expanded"><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> Set node's parent to "node". WARNING: do not checks if the parent already</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"> present and not removes the node from the list of childs of previous</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"><tt class="py-docstring"> parent</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt> </tt>
+</div><a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> </tt>
+<a name="Node.setPayload"></a><div id="Node.setPayload-def"><a name="L381"></a><tt class="py-lineno">381</tt> <a class="py-toggle" href="#" id="Node.setPayload-toggle" onclick="return toggle('Node.setPayload');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setPayload">setPayload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">,</tt> <tt class="py-param">add</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setPayload-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setPayload-expanded"><a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> Set node payload according to the list specified. WARNING: completely</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"><tt class="py-docstring"> replaces all node's previous content. If you wish just to add child or</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> CDATA - use addData or addChild methods</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">payload</tt><tt class="py-op">]</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">add</tt><tt class="py-op">:</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt> <tt class="py-op">+=</tt> <tt class="py-name">payload</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt> </tt>
+</div><a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> </tt>
+<a name="Node.setTag"></a><div id="Node.setTag-def"><a name="L394"></a><tt class="py-lineno">394</tt> <a class="py-toggle" href="#" id="Node.setTag-toggle" onclick="return toggle('Node.setTag');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setTag">setTag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-param">namespace</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setTag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setTag-expanded"><a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> Same as getTag but if the node with specified namespace/attributes not</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"> found, creates such node and returns it</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-name">node</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="nbxmpp.simplexml.Node.getTags" class="py-name" href="#" onclick="return doclink('link-57', 'getTags', 'link-42');">getTags</a></tt><tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-58', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt class="py-name">namespace</tt><tt class="py-op">,</tt> <tt class="py-name">one</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">:</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">node</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-59', 'addChild', 'link-18');">addChild</a></tt><tt class="py-op">(</tt><tt id="link-60" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-60', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt class="py-name">namespace</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> </tt>
+<a name="Node.setTagAttr"></a><div id="Node.setTagAttr-def"><a name="L405"></a><tt class="py-lineno">405</tt> <a class="py-toggle" href="#" id="Node.setTagAttr-toggle" onclick="return toggle('Node.setTagAttr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setTagAttr">setTagAttr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setTagAttr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setTagAttr-expanded"><a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"><tt class="py-docstring"> Create new node (if not already present) with name "tag" and set it's</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-docstring"> attribute "attr" to value "val"</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-61', 'getTag', 'link-39');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-62', 'addChild', 'link-18');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-name">attr</tt><tt class="py-op">:</tt> <tt class="py-name">val</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt>
+<a name="Node.setTagData"></a><div id="Node.setTagData-def"><a name="L415"></a><tt class="py-lineno">415</tt> <a class="py-toggle" href="#" id="Node.setTagData-toggle" onclick="return toggle('Node.setTagData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#setTagData">setTagData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.setTagData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.setTagData-expanded"><a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"> Creates new node (if not already present) with name "tag" and</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"> (optionally) attributes "attrs" and sets it's CDATA to string "val"</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-63', 'getTag', 'link-39');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method nbxmpp.simplexml.Node.setData()=nbxmpp.simplexml.Node-class.html#setData"><a title="nbxmpp.simplexml.Node.setData" class="py-name" href="#" onclick="return doclink('link-64', 'setData', 'link-64');">setData</a></tt><tt class="py-op">(</tt><tt id="link-65" class="py-name"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-65', 'ustr', 'link-19');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-66', 'addChild', 'link-18');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-67" class="py-name"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-67', 'ustr', 'link-19');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> </tt>
+<a name="Node.has_attr"></a><div id="Node.has_attr-def"><a name="L425"></a><tt class="py-lineno">425</tt> <a class="py-toggle" href="#" id="Node.has_attr-toggle" onclick="return toggle('Node.has_attr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#has_attr">has_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.has_attr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.has_attr-expanded"><a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"><tt class="py-docstring"> Check if node have attribute "key"</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attrs</tt> </tt>
+</div><a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt>
+<a name="Node.__getitem__"></a><div id="Node.__getitem__-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="Node.__getitem__-toggle" onclick="return toggle('Node.__getitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.__getitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.__getitem__-expanded"><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-docstring"> Return node's attribute "item" value</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-68', 'getAttr', 'link-68');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> </tt>
+<a name="Node.__setitem__"></a><div id="Node.__setitem__-def"><a name="L437"></a><tt class="py-lineno">437</tt> <a class="py-toggle" href="#" id="Node.__setitem__-toggle" onclick="return toggle('Node.__setitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.__setitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.__setitem__-expanded"><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"><tt class="py-docstring"> Set node's attribute "item" value</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method nbxmpp.simplexml.Node.setAttr()=nbxmpp.simplexml.Node-class.html#setAttr"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-69', 'setAttr', 'link-69');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> </tt>
+<a name="Node.__delitem__"></a><div id="Node.__delitem__-def"><a name="L443"></a><tt class="py-lineno">443</tt> <a class="py-toggle" href="#" id="Node.__delitem__-toggle" onclick="return toggle('Node.__delitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#__delitem__">__delitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.__delitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.__delitem__-expanded"><a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"><tt class="py-docstring"> Delete node's attribute "item"</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method nbxmpp.simplexml.Node.delAttr()=nbxmpp.simplexml.Node-class.html#delAttr"><a title="nbxmpp.simplexml.Node.delAttr" class="py-name" href="#" onclick="return doclink('link-70', 'delAttr', 'link-70');">delAttr</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt>
+<a name="Node.__contains__"></a><div id="Node.__contains__-def"><a name="L449"></a><tt class="py-lineno">449</tt> <a class="py-toggle" href="#" id="Node.__contains__-toggle" onclick="return toggle('Node.__contains__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#__contains__">__contains__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.__contains__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.__contains__-expanded"><a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"><tt class="py-docstring"> Check if node has attribute "item"</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name" targets="Method nbxmpp.simplexml.Node.has_attr()=nbxmpp.simplexml.Node-class.html#has_attr"><a title="nbxmpp.simplexml.Node.has_attr" class="py-name" href="#" onclick="return doclink('link-71', 'has_attr', 'link-71');">has_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> </tt>
+<a name="Node.__getattr__"></a><div id="Node.__getattr__-def"><a name="L455"></a><tt class="py-lineno">455</tt> <a class="py-toggle" href="#" id="Node.__getattr__-toggle" onclick="return toggle('Node.__getattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.Node-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Node.__getattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Node.__getattr__-expanded"><a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"><tt class="py-docstring"> Reduce memory usage caused by T/NT classes - use memory only when needed</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt> <tt class="py-op">==</tt> <tt class="py-string">'T'</tt><tt class="py-op">:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Class nbxmpp.simplexml.T=nbxmpp.simplexml.T-class.html"><a title="nbxmpp.simplexml.T" class="py-name" href="#" onclick="return doclink('link-72', 'T', 'link-72');">T</a></tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="nbxmpp.simplexml.T" class="py-name" href="#" onclick="return doclink('link-73', 'T', 'link-72');">T</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="nbxmpp.simplexml.T" class="py-name" href="#" onclick="return doclink('link-74', 'T', 'link-72');">T</a></tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt> <tt class="py-op">==</tt> <tt class="py-string">'NT'</tt><tt class="py-op">:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Class nbxmpp.simplexml.NT=nbxmpp.simplexml.NT-class.html"><a title="nbxmpp.simplexml.NT" class="py-name" href="#" onclick="return doclink('link-75', 'NT', 'link-75');">NT</a></tt> <tt class="py-op">=</tt> <tt id="link-76" class="py-name"><a title="nbxmpp.simplexml.NT" class="py-name" href="#" onclick="return doclink('link-76', 'NT', 'link-75');">NT</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="nbxmpp.simplexml.NT" class="py-name" href="#" onclick="return doclink('link-77', 'NT', 'link-75');">NT</a></tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt> </tt>
+</div></div><a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> </tt>
+<a name="T"></a><div id="T-def"><a name="L467"></a><tt class="py-lineno">467</tt> <a class="py-toggle" href="#" id="T-toggle" onclick="return toggle('T');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.simplexml.T-class.html">T</a><tt class="py-op">:</tt> </tt>
+</div><div id="T-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="T-expanded"><a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"><tt class="py-docstring"> Auxiliary class used to quick access to node's child nodes</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> </tt>
+<a name="T.__init__"></a><div id="T.__init__-def"><a name="L472"></a><tt class="py-lineno">472</tt> <a class="py-toggle" href="#" id="T.__init__-toggle" onclick="return toggle('T.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.T-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">node</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="T.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="T.__init__-expanded"><a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">'node'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt> </tt>
+</div><a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> </tt>
+<a name="T.__getattr__"></a><div id="T.__getattr__-def"><a name="L475"></a><tt class="py-lineno">475</tt> <a class="py-toggle" href="#" id="T.__getattr__-toggle" onclick="return toggle('T.__getattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.T-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="T.__getattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="T.__getattr__-expanded"><a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method nbxmpp.simplexml.Node.setTag()=nbxmpp.simplexml.Node-class.html#setTag"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-78', 'setTag', 'link-78');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> </tt>
+<a name="T.__setattr__"></a><div id="T.__setattr__-def"><a name="L478"></a><tt class="py-lineno">478</tt> <a class="py-toggle" href="#" id="T.__setattr__-toggle" onclick="return toggle('T.__setattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.T-class.html#__setattr__">__setattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="T.__setattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="T.__setattr__-expanded"><a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-79', 'Node', 'link-6');">Node</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-80', 'Node', 'link-6');">Node</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-81', '__init__', 'link-81');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="nbxmpp.simplexml.Node.setTag" class="py-name" href="#" onclick="return doclink('link-82', 'setTag', 'link-78');">setTag</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Method nbxmpp.simplexml.Node.setTagData()=nbxmpp.simplexml.Node-class.html#setTagData"><a title="nbxmpp.simplexml.Node.setTagData" class="py-name" href="#" onclick="return doclink('link-83', 'setTagData', 'link-83');">setTagData</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> </tt>
+<a name="T.__delattr__"></a><div id="T.__delattr__-def"><a name="L484"></a><tt class="py-lineno">484</tt> <a class="py-toggle" href="#" id="T.__delattr__-toggle" onclick="return toggle('T.__delattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.T-class.html#__delattr__">__delattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="T.__delattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="T.__delattr__-expanded"><a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method nbxmpp.simplexml.Node.delChild()=nbxmpp.simplexml.Node-class.html#delChild"><a title="nbxmpp.simplexml.Node.delChild" class="py-name" href="#" onclick="return doclink('link-84', 'delChild', 'link-84');">delChild</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> </tt>
+<a name="NT"></a><div id="NT-def"><a name="L487"></a><tt class="py-lineno">487</tt> <a class="py-toggle" href="#" id="NT-toggle" onclick="return toggle('NT');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.simplexml.NT-class.html">NT</a><tt class="py-op">(</tt><tt class="py-base-class">T</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NT-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NT-expanded"><a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"><tt class="py-docstring"> Auxiliary class used to quick create node's child nodes</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> </tt>
+<a name="NT.__getattr__"></a><div id="NT.__getattr__-def"><a name="L492"></a><tt class="py-lineno">492</tt> <a class="py-toggle" href="#" id="NT.__getattr__-toggle" onclick="return toggle('NT.__getattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NT-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NT.__getattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NT.__getattr__-expanded"><a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-85', 'addChild', 'link-18');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> </tt>
+<a name="NT.__setattr__"></a><div id="NT.__setattr__-def"><a name="L495"></a><tt class="py-lineno">495</tt> <a class="py-toggle" href="#" id="NT.__setattr__-toggle" onclick="return toggle('NT.__setattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NT-class.html#__setattr__">__setattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NT.__setattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NT.__setattr__-expanded"><a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-86', 'Node', 'link-6');">Node</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-87', 'addChild', 'link-18');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">node</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="nbxmpp.simplexml.Node.addChild" class="py-name" href="#" onclick="return doclink('link-88', 'addChild', 'link-18');">addChild</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">val</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder"></a><div id="NodeBuilder-def"><a name="L501"></a><tt class="py-lineno">501</tt> <a class="py-toggle" href="#" id="NodeBuilder-toggle" onclick="return toggle('NodeBuilder');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html">NodeBuilder</a><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NodeBuilder-expanded"><a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-docstring"> Builds a Node class minidom from data parsed to it. This class used for two</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"><tt class="py-docstring"> purposes:</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"><tt class="py-docstring"> 1. Creation an XML Node from a textual representation. F.e. reading a</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"><tt class="py-docstring"> config file. See an XML2Node method.</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"><tt class="py-docstring"> 2. Handling an incoming XML stream. This is done by mangling the</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"><tt class="py-docstring"> __dispatch_depth parameter and redefining the dispatch method.</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"><tt class="py-docstring"> You do not need to use this class directly if you do not designing your own</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"><tt class="py-docstring"> XML handler</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.__init__"></a><div id="NodeBuilder.__init__-def"><a name="L515"></a><tt class="py-lineno">515</tt> <a class="py-toggle" href="#" id="NodeBuilder.__init__-toggle" onclick="return toggle('NodeBuilder.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">initial_node</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.__init__-expanded"><a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"><tt class="py-docstring"> Take two optional parameters: "data" and "initial_node"</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"><tt class="py-docstring"> By default class initialised with empty Node class instance. Though, if</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"> "initial_node" is provided it used as "starting point". You can think</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"><tt class="py-docstring"> about it as of "node upgrade". "data" (if provided) feeded to parser</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"><tt class="py-docstring"> immidiatedly after instance init.</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt id="link-89" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-89', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Preparing to handle incoming XML stream."</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt> <tt class="py-op">=</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">parsers</tt><tt class="py-op">.</tt><tt class="py-name">expat</tt><tt class="py-op">.</tt><tt class="py-name">ParserCreate</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">StartElementHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.starttag()=nbxmpp.simplexml.NodeBuilder-class.html#starttag"><a title="nbxmpp.simplexml.NodeBuilder.starttag" class="py-name" href="#" onclick="return doclink('link-90', 'starttag', 'link-90');">starttag</a></tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">EndElementHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.endtag()=nbxmpp.simplexml.NodeBuilder-class.html#endtag"><a title="nbxmpp.simplexml.NodeBuilder.endtag" class="py-name" href="#" onclick="return doclink('link-91', 'endtag', 'link-91');">endtag</a></tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">StartNamespaceDeclHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.handle_namespace_start()=nbxmpp.simplexml.NodeBuilder-class.html#handle_namespace_start"><a title="nbxmpp.simplexml.NodeBuilder.handle_namespace_start" class="py-name" href="#" onclick="return doclink('link-92', 'handle_namespace_start', 'link-92');">handle_namespace_start</a></tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">CharacterDataHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.handle_cdata()=nbxmpp.simplexml.NodeBuilder-class.html#handle_cdata"><a title="nbxmpp.simplexml.NodeBuilder.handle_cdata" class="py-name" href="#" onclick="return doclink('link-93', 'handle_cdata', 'link-93');">handle_cdata</a></tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">buffer_text</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Parse</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">Parse</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__last_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__max_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_nsp</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt><tt class="py-op">=</tt><tt class="py-name">initial_node</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_is_data</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamError</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">Parse</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.check_data_buffer"></a><div id="NodeBuilder.check_data_buffer-def"><a name="L547"></a><tt class="py-lineno">547</tt> <a class="py-toggle" href="#" id="NodeBuilder.check_data_buffer-toggle" onclick="return toggle('NodeBuilder.check_data_buffer');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#check_data_buffer">check_data_buffer</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.check_data_buffer-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.check_data_buffer-expanded"><a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt><tt class="py-op">:</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.destroy"></a><div id="NodeBuilder.destroy-def"><a name="L553"></a><tt class="py-lineno">553</tt> <a class="py-toggle" href="#" id="NodeBuilder.destroy-toggle" onclick="return toggle('NodeBuilder.destroy');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#destroy">destroy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.destroy-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.destroy-expanded"><a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"><tt class="py-docstring"> Method used to allow class instance to be garbage-collected</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.check_data_buffer()=nbxmpp.simplexml.NodeBuilder-class.html#check_data_buffer"><a title="nbxmpp.simplexml.NodeBuilder.check_data_buffer" class="py-name" href="#" onclick="return doclink('link-94', 'check_data_buffer', 'link-94');">check_data_buffer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">StartElementHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">EndElementHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">CharacterDataHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parser</tt><tt class="py-op">.</tt><tt class="py-name">StartNamespaceDeclHandler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.starttag"></a><div id="NodeBuilder.starttag-def"><a name="L563"></a><tt class="py-lineno">563</tt> <a class="py-toggle" href="#" id="NodeBuilder.starttag-toggle" onclick="return toggle('NodeBuilder.starttag');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#starttag">starttag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.starttag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.starttag-expanded"><a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"><tt class="py-docstring"> XML Parser callback. Used internally</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.check_data_buffer" class="py-name" href="#" onclick="return doclink('link-95', 'check_data_buffer', 'link-94');">check_data_buffer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder._inc_depth()=nbxmpp.simplexml.NodeBuilder-class.html#_inc_depth"><a title="nbxmpp.simplexml.NodeBuilder._inc_depth" class="py-name" href="#" onclick="return doclink('link-96', '_inc_depth', 'link-96');">_inc_depth</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt id="link-97" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-97', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"STARTTAG.. DEPTH -&gt; %i , tag -&gt; %s, attrs -&gt; %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt><tt class="py-op">,</tt> <tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-op">`</tt><tt class="py-name">attrs</tt><tt class="py-op">`</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt> <tt class="py-op">:</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-98', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">=</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">nsp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_nsp</tt><tt class="py-op">,</tt> <tt class="py-name">node_built</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt id="link-99" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-99', 'Node', 'link-6');">Node</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-100', '__init__', 'link-81');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt><tt class="py-op">,</tt> <tt class="py-name">tag</tt><tt class="py-op">=</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">nsp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_nsp</tt><tt class="py-op">,</tt> <tt class="py-name">node_built</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-101', 'Node', 'link-6');">Node</a></tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">=</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">=</tt><tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">node_built</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">.</tt><tt class="py-name">kids</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_nsp</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"> <tt class="py-name">nsp</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-102', 'name', 'link-9');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-name">tag</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">attr</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">attrs</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt> <tt class="py-op">==</tt> <tt class="py-string">'xmlns'</tt><tt class="py-op">:</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_nsp</tt><tt class="py-op">[</tt><tt class="py-string">u''</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'xmlns:'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_nsp</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">[</tt><tt class="py-number">6</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">ns</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_nsp</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-103', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">nsp</tt><tt class="py-op">,</tt> <tt class="py-string">'http://www.gajim.org/xmlns/undeclared-root'</tt><tt class="py-op">)</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.stream_header_received()=nbxmpp.simplexml.NodeBuilder-class.html#stream_header_received"><a title="nbxmpp.simplexml.NodeBuilder.stream_header_received" class="py-name" href="#" onclick="return doclink('link-104', 'stream_header_received', 'link-104');">stream_header_received</a></tt><tt class="py-op">(</tt><tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt id="link-105" class="py-name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-105', 'name', 'link-9');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">)</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_is_data</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">:</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_is_data</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.endtag"></a><div id="NodeBuilder.endtag-def"><a name="L600"></a><tt class="py-lineno">600</tt> <a class="py-toggle" href="#" id="NodeBuilder.endtag-toggle" onclick="return toggle('NodeBuilder.endtag');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#endtag">endtag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.endtag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.endtag-expanded"><a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"><tt class="py-docstring"> XML Parser callback. Used internally</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> <tt id="link-106" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-106', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"DEPTH -&gt; %i , tag -&gt; %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt><tt class="py-op">,</tt> <tt class="py-name">tag</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.check_data_buffer" class="py-name" href="#" onclick="return doclink('link-107', 'check_data_buffer', 'link-94');">check_data_buffer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-108', 'getName', 'link-48');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'error'</tt><tt class="py-op">:</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method nbxmpp.simplexml.Node.getChildren()=nbxmpp.simplexml.Node-class.html#getChildren"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-109', 'getChildren', 'link-109');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamError</tt> <tt class="py-op">=</tt> <tt class="py-name">children</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-110', 'getName', 'link-48');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">streamError</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="nbxmpp.simplexml.Node.getData" class="py-name" href="#" onclick="return doclink('link-111', 'getData', 'link-46');">getData</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch,Method nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch,Method nbxmpp.simplexml.NodeBuilder.dispatch()=nbxmpp.simplexml.NodeBuilder-class.html#dispatch"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-112', 'dispatch', 'link-112');">dispatch</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt><tt class="py-op">)</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt id="link-113" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-113', 'log', 'link-0');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Got higher than dispatch level. Stream terminated?"</tt><tt class="py-op">)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder._dec_depth()=nbxmpp.simplexml.NodeBuilder-class.html#_dec_depth"><a title="nbxmpp.simplexml.NodeBuilder._dec_depth" class="py-name" href="#" onclick="return doclink('link-114', '_dec_depth', 'link-114');">_dec_depth</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_is_data</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.stream_footer_received()=nbxmpp.simplexml.NodeBuilder-class.html#stream_footer_received"><a title="nbxmpp.simplexml.NodeBuilder.stream_footer_received" class="py-name" href="#" onclick="return doclink('link-115', 'stream_footer_received', 'link-115');">stream_footer_received</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.handle_cdata"></a><div id="NodeBuilder.handle_cdata-def"><a name="L622"></a><tt class="py-lineno">622</tt> <a class="py-toggle" href="#" id="NodeBuilder.handle_cdata-toggle" onclick="return toggle('NodeBuilder.handle_cdata');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#handle_cdata">handle_cdata</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.handle_cdata-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.handle_cdata-expanded"><a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_is_data</tt><tt class="py-op">:</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt><tt class="py-op">:</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ptr</tt><tt class="py-op">:</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data_buffer</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">data</tt><tt class="py-op">]</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_is_data</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.handle_namespace_start"></a><div id="NodeBuilder.handle_namespace_start-def"><a name="L630"></a><tt class="py-lineno">630</tt> <a class="py-toggle" href="#" id="NodeBuilder.handle_namespace_start-toggle" onclick="return toggle('NodeBuilder.handle_namespace_start');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#handle_namespace_start">handle_namespace_start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.handle_namespace_start-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.handle_namespace_start-expanded"><a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"><tt class="py-docstring"> XML Parser callback. Used internally</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.check_data_buffer" class="py-name" href="#" onclick="return doclink('link-116', 'check_data_buffer', 'link-94');">check_data_buffer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.getDom"></a><div id="NodeBuilder.getDom-def"><a name="L636"></a><tt class="py-lineno">636</tt> <a class="py-toggle" href="#" id="NodeBuilder.getDom-toggle" onclick="return toggle('NodeBuilder.getDom');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#getDom">getDom</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.getDom-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.getDom-expanded"><a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"><tt class="py-docstring"> Return just built Node</tt> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.check_data_buffer" class="py-name" href="#" onclick="return doclink('link-117', 'check_data_buffer', 'link-94');">check_data_buffer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt> </tt>
+</div><a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.dispatch"></a><div id="NodeBuilder.dispatch-def"><a name="L643"></a><tt class="py-lineno">643</tt> <a class="py-toggle" href="#" id="NodeBuilder.dispatch-toggle" onclick="return toggle('NodeBuilder.dispatch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#dispatch">dispatch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.dispatch-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.dispatch-expanded"><a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"><tt class="py-docstring"> Get called when the NodeBuilder reaches some level of depth on it's way</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"><tt class="py-docstring"> up with the built node as argument. Can be redefined to convert incoming</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"><tt class="py-docstring"> XML stanzas to program events</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.stream_header_received"></a><div id="NodeBuilder.stream_header_received-def"><a name="L651"></a><tt class="py-lineno">651</tt> <a class="py-toggle" href="#" id="NodeBuilder.stream_header_received-toggle" onclick="return toggle('NodeBuilder.stream_header_received');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#stream_header_received">stream_header_received</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.stream_header_received-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.stream_header_received-expanded"><a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"><tt class="py-docstring"> Method called when stream just opened</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.check_data_buffer" class="py-name" href="#" onclick="return doclink('link-118', 'check_data_buffer', 'link-94');">check_data_buffer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.stream_footer_received"></a><div id="NodeBuilder.stream_footer_received-def"><a name="L657"></a><tt class="py-lineno">657</tt> <a class="py-toggle" href="#" id="NodeBuilder.stream_footer_received-toggle" onclick="return toggle('NodeBuilder.stream_footer_received');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#stream_footer_received">stream_footer_received</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.stream_footer_received-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.stream_footer_received-expanded"><a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"><tt class="py-docstring"> Method called when stream just closed</tt> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.check_data_buffer" class="py-name" href="#" onclick="return doclink('link-119', 'check_data_buffer', 'link-94');">check_data_buffer</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder.has_received_endtag"></a><div id="NodeBuilder.has_received_endtag-def"><a name="L663"></a><tt class="py-lineno">663</tt> <a class="py-toggle" href="#" id="NodeBuilder.has_received_endtag-toggle" onclick="return toggle('NodeBuilder.has_received_endtag');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#has_received_endtag">has_received_endtag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder.has_received_endtag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder.has_received_endtag-expanded"><a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"><tt class="py-docstring"> Return True if at least one end tag was seen (at level)</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">&lt;=</tt> <tt class="py-name">level</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__max_depth</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">level</tt> </tt>
+</div><a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder._inc_depth"></a><div id="NodeBuilder._inc_depth-def"><a name="L669"></a><tt class="py-lineno">669</tt> <a class="py-toggle" href="#" id="NodeBuilder._inc_depth-toggle" onclick="return toggle('NodeBuilder._inc_depth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#_inc_depth">_inc_depth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder._inc_depth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder._inc_depth-expanded"><a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__last_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__max_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__max_depth</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> </tt>
+<a name="NodeBuilder._dec_depth"></a><div id="NodeBuilder._dec_depth-def"><a name="L674"></a><tt class="py-lineno">674</tt> <a class="py-toggle" href="#" id="NodeBuilder._dec_depth-toggle" onclick="return toggle('NodeBuilder._dec_depth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml.NodeBuilder-class.html#_dec_depth">_dec_depth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NodeBuilder._dec_depth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NodeBuilder._dec_depth-expanded"><a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__last_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__depth</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt>
+</div></div><a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> </tt>
+<a name="XML2Node"></a><div id="XML2Node-def"><a name="L678"></a><tt class="py-lineno">678</tt> <a class="py-toggle" href="#" id="XML2Node-toggle" onclick="return toggle('XML2Node');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml-module.html#XML2Node">XML2Node</a><tt class="py-op">(</tt><tt class="py-param">xml</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XML2Node-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="XML2Node-expanded"><a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"><tt class="py-docstring"> Convert supplied textual string into XML node. Handy f.e. for reading</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"><tt class="py-docstring"> configuration file. Raises xml.parser.expat.parsererror if provided string</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"><tt class="py-docstring"> is not well-formed XML</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-120" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-120', 'NodeBuilder', 'link-8');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-name">xml</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method nbxmpp.simplexml.NodeBuilder.getDom()=nbxmpp.simplexml.NodeBuilder-class.html#getDom"><a title="nbxmpp.simplexml.NodeBuilder.getDom" class="py-name" href="#" onclick="return doclink('link-121', 'getDom', 'link-121');">getDom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"> </tt>
+<a name="BadXML2Node"></a><div id="BadXML2Node-def"><a name="L686"></a><tt class="py-lineno">686</tt> <a class="py-toggle" href="#" id="BadXML2Node-toggle" onclick="return toggle('BadXML2Node');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.simplexml-module.html#BadXML2Node">BadXML2Node</a><tt class="py-op">(</tt><tt class="py-param">xml</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BadXML2Node-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BadXML2Node-expanded"><a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"><tt class="py-docstring"> Convert supplied textual string into XML node. Survives if xml data is</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"><tt class="py-docstring"> cutted half way round. I.e. "&lt;html&gt;some text &lt;br&gt;some more text". Will raise</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"><tt class="py-docstring"> xml.parser.expat.parsererror on misplaced tags though. F.e. "&lt;b&gt;some text</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"><tt class="py-docstring"> &lt;br&gt;some more text&lt;/b&gt;" will not work</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-122" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-122', 'NodeBuilder', 'link-8');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-name">xml</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.getDom" class="py-name" href="#" onclick="return doclink('link-123', 'getDom', 'link-121');">getDom</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.simplexml.NT-class.html b/doc/apidocs/nbxmpp.simplexml.NT-class.html
new file mode 100644
index 0000000..d5b437d
--- /dev/null
+++ b/doc/apidocs/nbxmpp.simplexml.NT-class.html
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.simplexml.NT</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.simplexml-module.html">Module&nbsp;simplexml</a> ::
+ Class&nbsp;NT
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.simplexml.NT-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NT</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NT">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_s" name="uml_class_diagram_for_nbxmpp_s">
+<area shape="rect" id="node207" href="nbxmpp.simplexml.NT-class.html#__getattr__" title="nbxmpp.simplexml.NT.__getattr__" alt="" coords="17,135,185,153"/>
+<area shape="rect" id="node207" href="nbxmpp.simplexml.NT-class.html#__setattr__" title="nbxmpp.simplexml.NT.__setattr__" alt="" coords="17,153,185,172"/>
+<area shape="rect" id="node1" href="nbxmpp.simplexml.NT-class.html" title="Auxiliary class used to quick create node&#39;s child nodes" alt="" coords="5,102,197,178"/>
+<area shape="rect" id="node208" href="nbxmpp.simplexml.T-class.html#__init__" title="nbxmpp.simplexml.T.__init__" alt="" coords="31,39,171,57"/>
+<area shape="rect" id="node208" href="nbxmpp.simplexml.T-class.html#__delattr__" title="nbxmpp.simplexml.T.__delattr__" alt="" coords="31,57,171,76"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.T-class.html" title="Auxiliary class used to quick access to node&#39;s child nodes" alt="" coords="19,6,181,82"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_s.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_s" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Auxiliary class used to quick create node's child nodes
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NT-class.html#__getattr__" class="summary-sig-name">__getattr__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">attr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NT.__getattr__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NT-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">attr</span>,
+ <span class="summary-sig-arg">val</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NT.__setattr__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.simplexml.T-class.html">T</a></code></b>:
+ <code><a href="nbxmpp.simplexml.T-class.html#__delattr__">__delattr__</a></code>,
+ <code><a href="nbxmpp.simplexml.T-class.html#__init__">__init__</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__getattr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattr__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">attr</span>)</span>
+ <br /><em class="fname">(Qualification operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NT.__getattr__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.simplexml.T-class.html#__getattr__">T.__getattr__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__setattr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">attr</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NT.__setattr__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.simplexml.T-class.html#__setattr__">T.__setattr__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.simplexml.Node-class.html b/doc/apidocs/nbxmpp.simplexml.Node-class.html
new file mode 100644
index 0000000..1a1e087
--- /dev/null
+++ b/doc/apidocs/nbxmpp.simplexml.Node-class.html
@@ -0,0 +1,1777 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.simplexml.Node</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.simplexml-module.html">Module&nbsp;simplexml</a> ::
+ Class&nbsp;Node
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.simplexml.Node-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Node</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_s_2" name="uml_class_diagram_for_nbxmpp_s_2">
+<area shape="rect" id="node1" href="nbxmpp.protocol.Acks-class.html" title="Acknowledgement elements for Stream Management" alt="" coords="5,358,128,397"/>
+<area shape="rect" id="node2" href="nbxmpp.protocol.DataField-class.html" title="This class is used in the DataForm class to describe the single data item" alt="" coords="157,358,309,397"/>
+<area shape="rect" id="node3" href="nbxmpp.protocol.ErrorNode-class.html" title="XMPP&#45;style error element" alt="" coords="339,358,496,397"/>
+<area shape="rect" id="node4" href="nbxmpp.protocol.DataForm-class.html" title="Used for manipulating dataforms in XMPP" alt="" coords="525,358,683,397"/>
+<area shape="rect" id="node5" href="nbxmpp.protocol.BOSHBody-class.html" title="&lt;body&gt; tag that wraps usual XMPP stanzas in XMPP over BOSH" alt="" coords="712,358,875,397"/>
+<area shape="rect" id="node6" href="nbxmpp.protocol.Protocol-class.html" title="A &quot;stanza&quot; object class. Contains methods that are common for presences, iqs and messages" alt="" coords="904,358,1048,397"/>
+<area shape="rect" id="node7" href="nbxmpp.protocol.Iq-class.html" title="XMPP Iq object &#45; get/set dialog mechanism" alt="" coords="677,417,781,455"/>
+<area shape="rect" id="node8" href="nbxmpp.protocol.Message-class.html" title="XMPP Message stanza &#45; &quot;push&quot; mechanism" alt="" coords="811,417,960,455"/>
+<area shape="rect" id="node10" href="nbxmpp.protocol.Presence-class.html" title="nbxmpp.protocol.Presence" alt="" coords="989,417,1141,455"/>
+<area shape="rect" id="node11" href="nbxmpp.protocol.Error-class.html" title="Used to quickly transform received stanza into error reply" alt="" coords="1171,417,1293,455"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" title="nbxmpp.simplexml.Node.FORCE_NODE_RECREATION" alt="" coords="265,31,943,49"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#__init__" title="Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if needed and separated from it by a space), attrs dictionary as the set of arguments, payload list as the set of textual strings and child nodes that this node carries within itself and &quot;parent&quot; argument that is another node that this one will be the child of. Also the __init__ can be provided with &quot;node&quot; argument that is either a text string containing exactly one node or another Node instance to begin with. If both &quot;node&quot; and other arguments is provided then the node initially created as replica of &quot;node&quot; provided and then modified to be compliant with other arguments." alt="" coords="265,52,943,71"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#lookup_nsp" title="nbxmpp.simplexml.Node.lookup_nsp" alt="" coords="265,71,943,89"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#__str__" title="Method used to dump node into textual representation. If &quot;fancy&quot; argument is set to True produces indented output for readability" alt="" coords="265,89,943,108"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#addChild" title="If &quot;node&quot; argument is provided, adds it as child node. Else creates new node from the other arguments&#39; values and adds it as well" alt="" coords="265,108,943,127"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#addData" title="Add some CDATA to node" alt="" coords="265,127,943,145"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#clearData" title="Remove all CDATA from the node" alt="" coords="265,145,943,164"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#delAttr" title="Delete an attribute &quot;key&quot;" alt="" coords="265,164,943,183"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#delChild" title="Delete the &quot;node&quot; from the node&#39;s childs list, if &quot;node&quot; is an instance. Else delete the first node that have specified name and (optionally) attributes" alt="" coords="265,183,943,201"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#getAttrs" title="Return all node&#39;s attributes as dictionary" alt="" coords="265,201,943,220"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#getAttr" title="Return value of specified attribute" alt="" coords="265,220,943,239"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#getChildren" title="Return all node&#39;s child nodes as list" alt="" coords="265,239,943,257"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#getData" title="Return all node CDATA as string (concatenated)" alt="" coords="265,257,943,276"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#getName" title="Return the name of node" alt="" coords="265,276,943,295"/>
+<area shape="rect" id="node209" href="nbxmpp.simplexml.Node-class.html#__getattr__" title="Reduce memory usage caused by T/NT classes &#45; use memory only when needed" alt="" coords="265,313,943,332"/>
+<area shape="rect" id="node9" href="nbxmpp.simplexml.Node-class.html" title="Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of &quot;namespace name&quot;, attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and &quot;fancy&quot; &#45; with whitespace added to make indentation and thus make result more readable by human." alt="" coords="253,6,955,338"/>
+<area shape="rect" id="node12" href="nbxmpp.protocol.Hashes-class.html" title="Hash elements for various XEPs as defined in XEP&#45;300" alt="" coords="1077,358,1219,397"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_s_2.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_s_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Node class describes syntax of separate XML Node. It have a constructor that
+permits node creation from set of &quot;namespace name&quot;, attributes and payload
+of text strings and other nodes. It does not natively support building node
+from text string and uses NodeBuilder class for that purpose. After
+creation node can be mangled in many ways so it can be completely changed.
+Also node can be serialised into string in one of two modes: default (where
+the textual representation of node describes it exactly) and &quot;fancy&quot; - with
+whitespace added to make indentation and thus make result more readable by
+human.</p>
+<p>Node class have attribute FORCE_NODE_RECREATION that is defaults to False
+thus enabling fast node replication from the some other node. The drawback
+of the fast way is that new node shares some info with the &quot;original&quot; node
+that is changing the one node may influence the other. Though it is rarely
+needed (in xmpppy it is never needed at all since I'm usually never using
+original node after replication (and using replication only to move upwards
+on the classes tree).</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">payload</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">parent</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">nsp</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">node_built</span>=<span class="summary-sig-default">False</span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#lookup_nsp" class="summary-sig-name">lookup_nsp</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">pfx</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.lookup_nsp">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">fancy</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Method used to dump node into textual representation. If &quot;fancy&quot; argument
+is set to True produces indented output for readability</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__str__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#addChild" class="summary-sig-name">addChild</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">payload</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">namespace</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ If &quot;node&quot; argument is provided, adds it as child node. Else creates new
+node from the other arguments' values and adds it as well</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.addChild">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#addData" class="summary-sig-name">addData</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Add some CDATA to node</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.addData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#clearData" class="summary-sig-name">clearData</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Remove all CDATA from the node</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.clearData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#delAttr" class="summary-sig-name">delAttr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">key</span>)</span><br />
+ Delete an attribute &quot;key&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.delAttr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#delChild" class="summary-sig-name">delChild</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">node</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>)</span><br />
+ Delete the &quot;node&quot; from the node's childs list, if &quot;node&quot; is an instance.
+Else delete the first node that have specified name and (optionally)
+attributes</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.delChild">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getAttrs" class="summary-sig-name">getAttrs</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return all node's attributes as dictionary</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getAttrs">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getAttr" class="summary-sig-name">getAttr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">key</span>)</span><br />
+ Return value of specified attribute</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getAttr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getChildren" class="summary-sig-name">getChildren</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return all node's child nodes as list</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getChildren">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getData" class="summary-sig-name">getData</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return all node CDATA as string (concatenated)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getName" class="summary-sig-name">getName</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the name of node</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getName">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getNamespace" class="summary-sig-name">getNamespace</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the namespace of node</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getNamespace">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getParent" class="summary-sig-name">getParent</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Returns the parent of node (if present)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getParent">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getPayload" class="summary-sig-name">getPayload</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return the payload of node i.e. list of child nodes and CDATA entries.
+F.e. for &quot;&lt;node&gt;text1&lt;nodea/&gt;&lt;nodeb/&gt; text2&lt;/node&gt;&quot; will be returned
+list: ['text1', &lt;nodea instance&gt;, &lt;nodeb instance&gt;, ' text2']</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getPayload">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getTag" class="summary-sig-name">getTag</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">namespace</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Filter all child nodes using specified arguments as filter. Return the
+first found or None if not found</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTag">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getTagAttr" class="summary-sig-name">getTagAttr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">attr</span>)</span><br />
+ Return attribute value of the child with specified name (or None if no
+such attribute)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTagAttr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getTagData" class="summary-sig-name">getTagData</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>)</span><br />
+ Return cocatenated CDATA of the child with specified name</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTagData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#getTags" class="summary-sig-name">getTags</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">namespace</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">one</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Filter all child nodes using specified arguments as filter. Returns the
+list of nodes found</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTags">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#iterTags" class="summary-sig-name">iterTags</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">namespace</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Iterate over all children using specified arguments as filter</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.iterTags">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setAttr" class="summary-sig-name">setAttr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">key</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set attribute &quot;key&quot; with the value &quot;val&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setAttr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setData" class="summary-sig-name">setData</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Set node's CDATA to provided string. Resets all previous CDATA!</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setName" class="summary-sig-name">setName</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Change the node name</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setName">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setNamespace" class="summary-sig-name">setNamespace</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">namespace</span>)</span><br />
+ Changes the node namespace</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setNamespace">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setParent" class="summary-sig-name">setParent</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">node</span>)</span><br />
+ Set node's parent to &quot;node&quot;. WARNING: do not checks if the parent already
+present and not removes the node from the list of childs of previous
+parent</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setParent">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setPayload" class="summary-sig-name">setPayload</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">payload</span>,
+ <span class="summary-sig-arg">add</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Set node payload according to the list specified. WARNING: completely
+replaces all node's previous content. If you wish just to add child or
+CDATA - use addData or addChild methods</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setPayload">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setTag" class="summary-sig-name">setTag</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="summary-sig-arg">namespace</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Same as getTag but if the node with specified namespace/attributes not
+found, creates such node and returns it</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setTag">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setTagAttr" class="summary-sig-name">setTagAttr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">attr</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Create new node (if not already present) with name &quot;tag&quot; and set it's
+attribute &quot;attr&quot; to value &quot;val&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setTagAttr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#setTagData" class="summary-sig-name">setTagData</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">val</span>,
+ <span class="summary-sig-arg">attrs</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>)</span><br />
+ Creates new node (if not already present) with name &quot;tag&quot; and
+(optionally) attributes &quot;attrs&quot; and sets it's CDATA to string &quot;val&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setTagData">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#has_attr" class="summary-sig-name">has_attr</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">key</span>)</span><br />
+ Check if node have attribute &quot;key&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.has_attr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">item</span>)</span><br />
+ Return node's attribute &quot;item&quot; value</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__getitem__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#__setitem__" class="summary-sig-name">__setitem__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">item</span>,
+ <span class="summary-sig-arg">val</span>)</span><br />
+ Set node's attribute &quot;item&quot; value</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__setitem__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#__delitem__" class="summary-sig-name">__delitem__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">item</span>)</span><br />
+ Delete node's attribute &quot;item&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__delitem__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#__contains__" class="summary-sig-name">__contains__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">item</span>)</span><br />
+ Check if node has attribute &quot;item&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__contains__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.Node-class.html#__getattr__" class="summary-sig-name">__getattr__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">attr</span>)</span><br />
+ Reduce memory usage caused by T/NT classes - use memory only when needed</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__getattr__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.simplexml.Node-class.html#FORCE_NODE_RECREATION" class="summary-name">FORCE_NODE_RECREATION</a> = <code title="0">0</code>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">payload</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">parent</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">nsp</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">node_built</span>=<span class="sig-default">False</span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Takes &quot;tag&quot; argument as the name of node (prepended by namespace, if
+needed and separated from it by a space), attrs dictionary as the set of
+arguments, payload list as the set of textual strings and child nodes
+that this node carries within itself and &quot;parent&quot; argument that is
+another node that this one will be the child of. Also the __init__ can be
+provided with &quot;node&quot; argument that is either a text string containing
+exactly one node or another Node instance to begin with. If both &quot;node&quot;
+and other arguments is provided then the node initially created as
+replica of &quot;node&quot; provided and then modified to be compliant with other
+arguments.
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="lookup_nsp"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">lookup_nsp</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">pfx</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.lookup_nsp">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">fancy</span>=<span class="sig-default">0</span>)</span>
+ <br /><em class="fname">(Informal representation operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__str__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Method used to dump node into textual representation. If &quot;fancy&quot; argument
+is set to True produces indented output for readability
+ <dl class="fields">
+ <dt>Overrides:
+ object.__str__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="addChild"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">addChild</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">payload</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">namespace</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">node</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.addChild">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ If &quot;node&quot; argument is provided, adds it as child node. Else creates new
+node from the other arguments' values and adds it as well
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="addData"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">addData</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.addData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Add some CDATA to node
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="clearData"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">clearData</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.clearData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Remove all CDATA from the node
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="delAttr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">delAttr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">key</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.delAttr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Delete an attribute &quot;key&quot;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="delChild"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">delChild</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">node</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.delChild">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Delete the &quot;node&quot; from the node's childs list, if &quot;node&quot; is an instance.
+Else delete the first node that have specified name and (optionally)
+attributes
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getAttrs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getAttrs</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getAttrs">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return all node's attributes as dictionary
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getAttr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getAttr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">key</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getAttr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return value of specified attribute
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getChildren"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getChildren</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getChildren">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return all node's child nodes as list
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getData"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getData</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return all node CDATA as string (concatenated)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getName"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getName</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getName">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the name of node
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getNamespace"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getNamespace</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getNamespace">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the namespace of node
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getParent"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getParent</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getParent">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Returns the parent of node (if present)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getPayload"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getPayload</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getPayload">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return the payload of node i.e. list of child nodes and CDATA entries.
+F.e. for &quot;&lt;node&gt;text1&lt;nodea/&gt;&lt;nodeb/&gt; text2&lt;/node&gt;&quot; will be returned
+list: ['text1', &lt;nodea instance&gt;, &lt;nodeb instance&gt;, ' text2']
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTag</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">namespace</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTag">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Filter all child nodes using specified arguments as filter. Return the
+first found or None if not found
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTagAttr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTagAttr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">attr</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTagAttr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return attribute value of the child with specified name (or None if no
+such attribute)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTagData"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTagData</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTagData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return cocatenated CDATA of the child with specified name
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getTags"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getTags</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">namespace</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">one</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.getTags">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Filter all child nodes using specified arguments as filter. Returns the
+list of nodes found
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="iterTags"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">iterTags</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">namespace</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.iterTags">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Iterate over all children using specified arguments as filter
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setAttr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setAttr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">key</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setAttr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set attribute &quot;key&quot; with the value &quot;val&quot;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setData"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setData</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set node's CDATA to provided string. Resets all previous CDATA!
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setName"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setName</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setName">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Change the node name
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setNamespace"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setNamespace</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">namespace</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setNamespace">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Changes the node namespace
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setParent"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setParent</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">node</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setParent">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set node's parent to &quot;node&quot;. WARNING: do not checks if the parent already
+present and not removes the node from the list of childs of previous
+parent
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setPayload"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setPayload</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">payload</span>,
+ <span class="sig-arg">add</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setPayload">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set node payload according to the list specified. WARNING: completely
+replaces all node's previous content. If you wish just to add child or
+CDATA - use addData or addChild methods
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setTag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setTag</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <span class="sig-arg">namespace</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setTag">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Same as getTag but if the node with specified namespace/attributes not
+found, creates such node and returns it
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setTagAttr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setTagAttr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">attr</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setTagAttr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Create new node (if not already present) with name &quot;tag&quot; and set it's
+attribute &quot;attr&quot; to value &quot;val&quot;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="setTagData"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">setTagData</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">val</span>,
+ <span class="sig-arg">attrs</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.setTagData">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Creates new node (if not already present) with name &quot;tag&quot; and
+(optionally) attributes &quot;attrs&quot; and sets it's CDATA to string &quot;val&quot;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="has_attr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">has_attr</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">key</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.has_attr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Check if node have attribute &quot;key&quot;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__getitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">item</span>)</span>
+ <br /><em class="fname">(Indexing operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__getitem__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return node's attribute &quot;item&quot; value
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__setitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__setitem__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">item</span>,
+ <span class="sig-arg">val</span>)</span>
+ <br /><em class="fname">(Index assignment operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__setitem__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Set node's attribute &quot;item&quot; value
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__delitem__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__delitem__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">item</span>)</span>
+ <br /><em class="fname">(Index deletion operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__delitem__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Delete node's attribute &quot;item&quot;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__contains__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__contains__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">item</span>)</span>
+ <br /><em class="fname">(In operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__contains__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Check if node has attribute &quot;item&quot;
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__getattr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattr__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">attr</span>)</span>
+ <br /><em class="fname">(Qualification operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#Node.__getattr__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Reduce memory usage caused by T/NT classes - use memory only when needed
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variable Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariableDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="FORCE_NODE_RECREATION"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">FORCE_NODE_RECREATION</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+0
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.simplexml.NodeBuilder-class.html b/doc/apidocs/nbxmpp.simplexml.NodeBuilder-class.html
new file mode 100644
index 0000000..7db50c2
--- /dev/null
+++ b/doc/apidocs/nbxmpp.simplexml.NodeBuilder-class.html
@@ -0,0 +1,700 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.simplexml.NodeBuilder</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.simplexml-module.html">Module&nbsp;simplexml</a> ::
+ Class&nbsp;NodeBuilder
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.simplexml.NodeBuilder-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NodeBuilder</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder">source&nbsp;code</a></span></p>
+<p>Builds a Node class minidom from data parsed to it. This class used for two
+purposes:</p>
+<blockquote>
+<ol class="rst-arabic simple">
+<li>Creation an XML Node from a textual representation. F.e. reading a
+config file. See an XML2Node method.</li>
+<li>Handling an incoming XML stream. This is done by mangling the
+__dispatch_depth parameter and redefining the dispatch method.</li>
+</ol>
+</blockquote>
+<p>You do not need to use this class directly if you do not designing your own
+XML handler</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">initial_node</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Take two optional parameters: &quot;data&quot; and &quot;initial_node&quot;</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#check_data_buffer" class="summary-sig-name">check_data_buffer</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.check_data_buffer">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#destroy" class="summary-sig-name">destroy</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Method used to allow class instance to be garbage-collected</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.destroy">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#starttag" class="summary-sig-name">starttag</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">attrs</span>)</span><br />
+ XML Parser callback. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.starttag">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#endtag" class="summary-sig-name">endtag</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">tag</span>)</span><br />
+ XML Parser callback. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.endtag">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#handle_cdata" class="summary-sig-name">handle_cdata</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.handle_cdata">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#handle_namespace_start" class="summary-sig-name">handle_namespace_start</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">prefix</span>,
+ <span class="summary-sig-arg">uri</span>)</span><br />
+ XML Parser callback. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.handle_namespace_start">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#getDom" class="summary-sig-name">getDom</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Return just built Node</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.getDom">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#dispatch" class="summary-sig-name">dispatch</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>)</span><br />
+ Get called when the NodeBuilder reaches some level of depth on it's way
+up with the built node as argument. Can be redefined to convert incoming
+XML stanzas to program events</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.dispatch">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#stream_header_received" class="summary-sig-name">stream_header_received</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">ns</span>,
+ <span class="summary-sig-arg">tag</span>,
+ <span class="summary-sig-arg">attrs</span>)</span><br />
+ Method called when stream just opened</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.stream_header_received">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#stream_footer_received" class="summary-sig-name">stream_footer_received</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Method called when stream just closed</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.stream_footer_received">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#has_received_endtag" class="summary-sig-name">has_received_endtag</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">level</span>=<span class="summary-sig-default">0</span>)</span><br />
+ Return True if at least one end tag was seen (at level)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.has_received_endtag">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#_inc_depth" class="summary-sig-name" onclick="show_private();">_inc_depth</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder._inc_depth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.NodeBuilder-class.html#_dec_depth" class="summary-sig-name" onclick="show_private();">_dec_depth</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder._dec_depth">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">initial_node</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Take two optional parameters: &quot;data&quot; and &quot;initial_node&quot;</p>
+<p>By default class initialised with empty Node class instance. Though, if
+&quot;initial_node&quot; is provided it used as &quot;starting point&quot;. You can think
+about it as of &quot;node upgrade&quot;. &quot;data&quot; (if provided) feeded to parser
+immidiatedly after instance init.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="check_data_buffer"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">check_data_buffer</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.check_data_buffer">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="destroy"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">destroy</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.destroy">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Method used to allow class instance to be garbage-collected
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="starttag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">starttag</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">attrs</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.starttag">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ XML Parser callback. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="endtag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">endtag</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">tag</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.endtag">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ XML Parser callback. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="handle_cdata"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">handle_cdata</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.handle_cdata">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="handle_namespace_start"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">handle_namespace_start</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">prefix</span>,
+ <span class="sig-arg">uri</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.handle_namespace_start">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ XML Parser callback. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="getDom"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">getDom</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.getDom">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return just built Node
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="dispatch"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">dispatch</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.dispatch">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Get called when the NodeBuilder reaches some level of depth on it's way
+up with the built node as argument. Can be redefined to convert incoming
+XML stanzas to program events
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="stream_header_received"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">stream_header_received</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">ns</span>,
+ <span class="sig-arg">tag</span>,
+ <span class="sig-arg">attrs</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.stream_header_received">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Method called when stream just opened
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="stream_footer_received"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">stream_footer_received</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.stream_footer_received">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Method called when stream just closed
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="has_received_endtag"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">has_received_endtag</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">level</span>=<span class="sig-default">0</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder.has_received_endtag">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return True if at least one end tag was seen (at level)
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_inc_depth"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_inc_depth</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder._inc_depth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_dec_depth"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_dec_depth</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#NodeBuilder._dec_depth">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.simplexml.T-class.html b/doc/apidocs/nbxmpp.simplexml.T-class.html
new file mode 100644
index 0000000..83db72d
--- /dev/null
+++ b/doc/apidocs/nbxmpp.simplexml.T-class.html
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.simplexml.T</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.simplexml-module.html">Module&nbsp;simplexml</a> ::
+ Class&nbsp;T
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.simplexml.T-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class T</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_s_3" name="uml_class_diagram_for_nbxmpp_s_3">
+<area shape="rect" id="node221" href="nbxmpp.simplexml.T-class.html#__init__" title="nbxmpp.simplexml.T.__init__" alt="" coords="17,39,185,57"/>
+<area shape="rect" id="node221" href="nbxmpp.simplexml.T-class.html#__getattr__" title="nbxmpp.simplexml.T.__getattr__" alt="" coords="17,57,185,76"/>
+<area shape="rect" id="node221" href="nbxmpp.simplexml.T-class.html#__setattr__" title="nbxmpp.simplexml.T.__setattr__" alt="" coords="17,76,185,95"/>
+<area shape="rect" id="node221" href="nbxmpp.simplexml.T-class.html#__delattr__" title="nbxmpp.simplexml.T.__delattr__" alt="" coords="17,95,185,113"/>
+<area shape="rect" id="node1" href="nbxmpp.simplexml.T-class.html" title="Auxiliary class used to quick access to node&#39;s child nodes" alt="" coords="5,6,197,119"/>
+<area shape="rect" id="node2" href="nbxmpp.simplexml.NT-class.html" title="Auxiliary class used to quick create node&#39;s child nodes" alt="" coords="75,139,128,178"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_s_3.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_s_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Auxiliary class used to quick access to node's child nodes
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.T-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">node</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.T-class.html#__getattr__" class="summary-sig-name">__getattr__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">attr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__getattr__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.T-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">attr</span>,
+ <span class="summary-sig-arg">val</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__setattr__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.simplexml.T-class.html#__delattr__" class="summary-sig-name">__delattr__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">attr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__delattr__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">node</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__getattr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattr__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">attr</span>)</span>
+ <br /><em class="fname">(Qualification operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__getattr__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__setattr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">attr</span>,
+ <span class="sig-arg">val</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__setattr__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="__delattr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">attr</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.simplexml-pysrc.html#T.__delattr__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.smacks-module.html b/doc/apidocs/nbxmpp.smacks-module.html
new file mode 100644
index 0000000..ecd4ed4
--- /dev/null
+++ b/doc/apidocs/nbxmpp.smacks-module.html
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.smacks</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;smacks
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.smacks-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module smacks</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.smacks-pysrc.html">source&nbsp;code</a></span></p>
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.smacks.Smacks-class.html" class="summary-name">Smacks</a><br />
+ This is Smacks is the Stream Management class. It takes care of requesting
+and sending acks. Also, it keeps track of the unhandled outgoing stanzas.
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.smacks-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.smacks')">logging.getLogger('nbxmpp.smacks')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.smacks-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <a href="nbxmpp.protocol.Acks-class.html" title="nbxmpp.protocol.Acks">Acks</a>,
+ <span title="nbxmpp.protocol.NS_STREAM_MGMT">NS_STREAM_MGMT</span>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.smacks')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.smacks-pysrc.html b/doc/apidocs/nbxmpp.smacks-pysrc.html
new file mode 100644
index 0000000..a13faab
--- /dev/null
+++ b/doc/apidocs/nbxmpp.smacks-pysrc.html
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.smacks</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;smacks
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.smacks-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.smacks-module.html">Module nbxmpp.smacks</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-0', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Class nbxmpp.protocol.Acks=nbxmpp.protocol.Acks-class.html"><a title="nbxmpp.protocol.Acks" class="py-name" href="#" onclick="return doclink('link-1', 'Acks', 'link-1');">Acks</a></tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-2', 'protocol', 'link-0');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAM_MGMT=nbxmpp.protocol-module.html#NS_STREAM_MGMT"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-3', 'NS_STREAM_MGMT', 'link-3');">NS_STREAM_MGMT</a></tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-4', 'log', 'link-4');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.smacks'</tt><tt class="py-op">)</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"> </tt>
+<a name="Smacks"></a><div id="Smacks-def"><a name="L6"></a><tt class="py-lineno"> 6</tt> <a class="py-toggle" href="#" id="Smacks-toggle" onclick="return toggle('Smacks');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html">Smacks</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Smacks-expanded"><a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"> <tt class="py-docstring">'''</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring"> This is Smacks is the Stream Management class. It takes care of requesting</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring"> and sending acks. Also, it keeps track of the unhandled outgoing stanzas.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-docstring"> The dispatcher has to be able to access this class to increment the</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-docstring"> number of handled stanzas</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-docstring"> '''</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
+<a name="Smacks.__init__"></a><div id="Smacks.__init__-def"><a name="L15"></a><tt class="py-lineno"> 15</tt> <a class="py-toggle" href="#" id="Smacks.__init__-toggle" onclick="return toggle('Smacks.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">con</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.__init__-expanded"><a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">con</tt> <tt class="py-op">=</tt> <tt class="py-name">con</tt> <tt class="py-comment"># Connection object</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> <tt class="py-comment"># Outgoing stanzas handled</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> <tt class="py-comment"># Incoming stanzas handled</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># Unhandled stanzas queue</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumption</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-comment"># If server supports resume</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> <tt class="py-comment"># Max number of stanzas in queue before making a request</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_queue</tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-comment"># If SM is enabled</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">location</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> </tt>
+<a name="Smacks.set_owner"></a><div id="Smacks.set_owner-def"><a name="L29"></a><tt class="py-lineno"> 29</tt> <a class="py-toggle" href="#" id="Smacks.set_owner-toggle" onclick="return toggle('Smacks.set_owner');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#set_owner">set_owner</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.set_owner-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.set_owner-expanded"><a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> <tt class="py-op">=</tt> <tt class="py-name">owner</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-comment"># Register handlers</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Class nbxmpp.dispatcher_nb.Dispatcher=nbxmpp.dispatcher_nb.Dispatcher-class.html"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-5', 'Dispatcher', 'link-5');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterNamespace"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace" class="py-name" href="#" onclick="return doclink('link-6', 'RegisterNamespace', 'link-6');">RegisterNamespace</a></tt><tt class="py-op">(</tt><tt id="link-7" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-7', 'NS_STREAM_MGMT', 'link-3');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-8', 'Dispatcher', 'link-5');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandler"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-9', 'RegisterHandler', 'link-9');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'enabled'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Method nbxmpp.smacks.Smacks._neg_response()=nbxmpp.smacks.Smacks-class.html#_neg_response"><a title="nbxmpp.smacks.Smacks._neg_response" class="py-name" href="#" onclick="return doclink('link-10', '_neg_response', 'link-10');">_neg_response</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-11" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-11', 'NS_STREAM_MGMT', 'link-3');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-12', 'Dispatcher', 'link-5');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-13', 'RegisterHandler', 'link-9');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method nbxmpp.smacks.Smacks.send_ack()=nbxmpp.smacks.Smacks-class.html#send_ack"><a title="nbxmpp.smacks.Smacks.send_ack" class="py-name" href="#" onclick="return doclink('link-14', 'send_ack', 'link-14');">send_ack</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-15" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-15', 'NS_STREAM_MGMT', 'link-3');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-16', 'Dispatcher', 'link-5');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-17', 'RegisterHandler', 'link-9');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method nbxmpp.smacks.Smacks.check_ack()=nbxmpp.smacks.Smacks-class.html#check_ack"><a title="nbxmpp.smacks.Smacks.check_ack" class="py-name" href="#" onclick="return doclink('link-18', 'check_ack', 'link-18');">check_ack</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-19" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-19', 'NS_STREAM_MGMT', 'link-3');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-20', 'Dispatcher', 'link-5');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-21', 'RegisterHandler', 'link-9');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'resumed'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="nbxmpp.smacks.Smacks.check_ack" class="py-name" href="#" onclick="return doclink('link-22', 'check_ack', 'link-18');">check_ack</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-23" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-23', 'NS_STREAM_MGMT', 'link-3');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-24', 'Dispatcher', 'link-5');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-25', 'RegisterHandler', 'link-9');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-string">'failed'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method nbxmpp.smacks.Smacks.error_handling()=nbxmpp.smacks.Smacks-class.html#error_handling"><a title="nbxmpp.smacks.Smacks.error_handling" class="py-name" href="#" onclick="return doclink('link-26', 'error_handling', 'link-26');">error_handling</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt><tt class="py-op">=</tt><tt id="link-27" class="py-name"><a title="nbxmpp.protocol.NS_STREAM_MGMT" class="py-name" href="#" onclick="return doclink('link-27', 'NS_STREAM_MGMT', 'link-3');">NS_STREAM_MGMT</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> </tt>
+<a name="Smacks._neg_response"></a><div id="Smacks._neg_response-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="Smacks._neg_response-toggle" onclick="return toggle('Smacks._neg_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#_neg_response">_neg_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks._neg_response-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks._neg_response-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-28', 'getAttr', 'link-28');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'resume'</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">r</tt> <tt class="py-op">==</tt> <tt class="py-string">'true'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">r</tt> <tt class="py-op">==</tt> <tt class="py-string">'True'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">r</tt> <tt class="py-op">==</tt> <tt class="py-string">'1'</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumption</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-29', 'getAttr', 'link-28');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'id'</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">r</tt> <tt class="py-op">==</tt> <tt class="py-string">'false'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">r</tt> <tt class="py-op">==</tt> <tt class="py-string">'False'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">r</tt> <tt class="py-op">==</tt> <tt class="py-string">'0'</tt><tt class="py-op">:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method nbxmpp.smacks.Smacks.negociate()=nbxmpp.smacks.Smacks-class.html#negociate"><a title="nbxmpp.smacks.Smacks.negociate" class="py-name" href="#" onclick="return doclink('link-30', 'negociate', 'link-30');">negociate</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-31', 'getAttr', 'link-28');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">l</tt><tt class="py-op">:</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">location</tt> <tt class="py-op">=</tt> <tt class="py-name">l</tt> </tt>
+</div><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
+<a name="Smacks.negociate"></a><div id="Smacks.negociate-def"><a name="L58"></a><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="Smacks.negociate-toggle" onclick="return toggle('Smacks.negociate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#negociate">negociate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resume</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.negociate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.negociate-expanded"><a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-comment"># Every time we attempt to negociate, we must erase all previous info</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-comment"># about any previous session</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="nbxmpp.protocol.Acks" class="py-name" href="#" onclick="return doclink('link-32', 'Acks', 'link-1');">Acks</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method nbxmpp.protocol.Acks.buildEnable()=nbxmpp.protocol.Acks-class.html#buildEnable"><a title="nbxmpp.protocol.Acks.buildEnable" class="py-name" href="#" onclick="return doclink('link-33', 'buildEnable', 'link-33');">buildEnable</a></tt><tt class="py-op">(</tt><tt class="py-name">resume</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-34', 'send', 'link-34');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">now</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt>
+<a name="Smacks.resume_request"></a><div id="Smacks.resume_request-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="Smacks.resume_request-toggle" onclick="return toggle('Smacks.resume_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#resume_request">resume_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.resume_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.resume_request-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt><tt class="py-op">:</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt id="link-35" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-35', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Attempted to resume without a valid session id '</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">resume</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="nbxmpp.protocol.Acks" class="py-name" href="#" onclick="return doclink('link-36', 'Acks', 'link-1');">Acks</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">resume</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method nbxmpp.protocol.Acks.buildResume()=nbxmpp.protocol.Acks-class.html#buildResume"><a title="nbxmpp.protocol.Acks.buildResume" class="py-name" href="#" onclick="return doclink('link-37', 'buildResume', 'link-37');">buildResume</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-38', 'send', 'link-34');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">resume</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt>
+<a name="Smacks.send_ack"></a><div id="Smacks.send_ack-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="Smacks.send_ack-toggle" onclick="return toggle('Smacks.send_ack');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#send_ack">send_ack</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.send_ack-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.send_ack-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="nbxmpp.protocol.Acks" class="py-name" href="#" onclick="return doclink('link-39', 'Acks', 'link-1');">Acks</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">ack</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method nbxmpp.protocol.Acks.buildAnswer()=nbxmpp.protocol.Acks-class.html#buildAnswer"><a title="nbxmpp.protocol.Acks.buildAnswer" class="py-name" href="#" onclick="return doclink('link-40', 'buildAnswer', 'link-40');">buildAnswer</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-41', 'send', 'link-34');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">ack</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
+<a name="Smacks.request_ack"></a><div id="Smacks.request_ack-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="Smacks.request_ack-toggle" onclick="return toggle('Smacks.request_ack');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#request_ack">request_ack</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.request_ack-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.request_ack-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="nbxmpp.protocol.Acks" class="py-name" href="#" onclick="return doclink('link-42', 'Acks', 'link-1');">Acks</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">r</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method nbxmpp.protocol.Acks.buildRequest()=nbxmpp.protocol.Acks-class.html#buildRequest"><a title="nbxmpp.protocol.Acks.buildRequest" class="py-name" href="#" onclick="return doclink('link-43', 'buildRequest', 'link-43');">buildRequest</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-44', 'send', 'link-34');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt>
+<a name="Smacks.check_ack"></a><div id="Smacks.check_ack-def"><a name="L90"></a><tt class="py-lineno"> 90</tt> <a class="py-toggle" href="#" id="Smacks.check_ack-toggle" onclick="return toggle('Smacks.check_ack');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#check_ack">check_ack</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.check_ack-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.check_ack-expanded"><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-docstring">'''</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> Checks if the number of stanzas sent are the same as the</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> number of stanzas received by the server. Pops stanzas that were</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> handled by the server from the queue.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> '''</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-45', 'getAttr', 'link-28');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'h'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">diff</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">-</tt> <tt class="py-name">h</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">diff</tt> <tt class="py-keyword">or</tt> <tt class="py-name">diff</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt id="link-46" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-46', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Server and client number of stanzas handled mismatch '</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">diff</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-47', 'getName', 'link-47');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'resumed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">con</tt><tt class="py-op">.</tt><tt class="py-name">set_oldst</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt> <tt class="py-op">!=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-48', 'send', 'link-34');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> </tt>
+<a name="Smacks.error_handling"></a><div id="Smacks.error_handling-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="Smacks.error_handling-toggle" onclick="return toggle('Smacks.error_handling');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.smacks.Smacks-class.html#error_handling">error_handling</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">disp</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Smacks.error_handling-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Smacks.error_handling-expanded"><a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-comment"># If the server doesn't recognize previd, forget about resuming</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-comment"># Ask for service discovery, etc..</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-49', 'getTag', 'link-49');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'item-not-found'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-comment"># we need to bind a resource</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Class nbxmpp.auth_nb.NonBlockingBind=nbxmpp.auth_nb.NonBlockingBind-class.html,Method nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind()=nbxmpp.auth_nb.NonBlockingBind-class.html#NonBlockingBind"><a title="nbxmpp.auth_nb.NonBlockingBind
+nbxmpp.auth_nb.NonBlockingBind.NonBlockingBind" class="py-name" href="#" onclick="return doclink('link-50', 'NonBlockingBind', 'link-50');">NonBlockingBind</a></tt><tt class="py-op">.</tt><tt class="py-name">resuming</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient._on_auth_bind()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_auth_bind"><a title="nbxmpp.client_nb.NonBlockingClient._on_auth_bind" class="py-name" href="#" onclick="return doclink('link-51', '_on_auth_bind', 'link-51');">_on_auth_bind</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-comment"># Doesn't support resumption</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-52', 'getTag', 'link-49');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'feature-not-implemented'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="nbxmpp.smacks.Smacks.negociate" class="py-name" href="#" onclick="return doclink('link-53', 'negociate', 'link-30');">negociate</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-54', 'getTag', 'link-49');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'unexpected-request'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt id="link-55" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-55', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Gajim failed to negociate Stream Management'</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+</div></div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.smacks.Smacks-class.html b/doc/apidocs/nbxmpp.smacks.Smacks-class.html
new file mode 100644
index 0000000..73a88b1
--- /dev/null
+++ b/doc/apidocs/nbxmpp.smacks.Smacks-class.html
@@ -0,0 +1,500 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.smacks.Smacks</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.smacks-module.html">Module&nbsp;smacks</a> ::
+ Class&nbsp;Smacks
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.smacks.Smacks-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Smacks</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks">source&nbsp;code</a></span></p>
+<p>This is Smacks is the Stream Management class. It takes care of requesting
+and sending acks. Also, it keeps track of the unhandled outgoing stanzas.</p>
+<p>The dispatcher has to be able to access this class to increment the
+number of handled stanzas</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">con</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#set_owner" class="summary-sig-name">set_owner</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.set_owner">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#_neg_response" class="summary-sig-name" onclick="show_private();">_neg_response</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">stanza</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks._neg_response">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#negociate" class="summary-sig-name">negociate</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resume</span>=<span class="summary-sig-default">True</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.negociate">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#resume_request" class="summary-sig-name">resume_request</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.resume_request">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#send_ack" class="summary-sig-name">send_ack</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">stanza</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.send_ack">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#request_ack" class="summary-sig-name">request_ack</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.request_ack">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#check_ack" class="summary-sig-name">check_ack</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">stanza</span>)</span><br />
+ Checks if the number of stanzas sent are the same as the
+number of stanzas received by the server. Pops stanzas that were
+handled by the server from the queue.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.check_ack">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.smacks.Smacks-class.html#error_handling" class="summary-sig-name">error_handling</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">disp</span>,
+ <span class="summary-sig-arg">stanza</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.error_handling">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">con</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_owner"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_owner</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.set_owner">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_neg_response"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_neg_response</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">disp</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks._neg_response">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="negociate"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">negociate</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resume</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.negociate">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="resume_request"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">resume_request</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.resume_request">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="send_ack"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send_ack</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">disp</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.send_ack">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="request_ack"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">request_ack</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.request_ack">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="check_ack"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">check_ack</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">disp</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.check_ack">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Checks if the number of stanzas sent are the same as the
+number of stanzas received by the server. Pops stanzas that were
+handled by the server from the queue.
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="error_handling"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">error_handling</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">disp</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.smacks-pysrc.html#Smacks.error_handling">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare-module.html b/doc/apidocs/nbxmpp.stringprepare-module.html
new file mode 100644
index 0000000..eef055c
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare-module.html
@@ -0,0 +1,664 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;stringprepare
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module stringprepare</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html">source&nbsp;code</a></span></p>
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.ILookupTable-class.html" class="summary-name">ILookupTable</a><br />
+ Interface for character lookup classes
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.IMappingTable-class.html" class="summary-name">IMappingTable</a><br />
+ Interface for character mapping classes
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.LookupTableFromFunction-class.html" class="summary-name">LookupTableFromFunction</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.LookupTable-class.html" class="summary-name">LookupTable</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.MappingTableFromFunction-class.html" class="summary-name">MappingTableFromFunction</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.EmptyMappingTable-class.html" class="summary-name">EmptyMappingTable</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.Profile-class.html" class="summary-name">Profile</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.NamePrep-class.html" class="summary-name">NamePrep</a><br />
+ Implements preparation of internationalized domain names
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_11" class="summary-name">C_11</a> = <code title="LookupTableFromFunction(stringprep.in_table_c11)">LookupTableFromFunction(stringprep.in_table_c11)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_12" class="summary-name">C_12</a> = <code title="LookupTableFromFunction(stringprep.in_table_c12)">LookupTableFromFunction(stringprep.in_table_c12)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_21" class="summary-name">C_21</a> = <code title="LookupTableFromFunction(stringprep.in_table_c21)">LookupTableFromFunction(stringprep.in_table_c21)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_22" class="summary-name">C_22</a> = <code title="LookupTableFromFunction(stringprep.in_table_c22)">LookupTableFromFunction(stringprep.in_table_c22)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_3" class="summary-name">C_3</a> = <code title="LookupTableFromFunction(stringprep.in_table_c3)">LookupTableFromFunction(stringprep.in_table_c3)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_4" class="summary-name">C_4</a> = <code title="LookupTableFromFunction(stringprep.in_table_c4)">LookupTableFromFunction(stringprep.in_table_c4)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_5" class="summary-name">C_5</a> = <code title="LookupTableFromFunction(stringprep.in_table_c5)">LookupTableFromFunction(stringprep.in_table_c5)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_6" class="summary-name">C_6</a> = <code title="LookupTableFromFunction(stringprep.in_table_c6)">LookupTableFromFunction(stringprep.in_table_c6)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_7" class="summary-name">C_7</a> = <code title="LookupTableFromFunction(stringprep.in_table_c7)">LookupTableFromFunction(stringprep.in_table_c7)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_8" class="summary-name">C_8</a> = <code title="LookupTableFromFunction(stringprep.in_table_c8)">LookupTableFromFunction(stringprep.in_table_c8)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#C_9" class="summary-name">C_9</a> = <code title="LookupTableFromFunction(stringprep.in_table_c9)">LookupTableFromFunction(stringprep.in_table_c9)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#B_1" class="summary-name">B_1</a> = <code title="EmptyMappingTable(stringprep.in_table_b1)">EmptyMappingTable(stringprep.in_table_b1)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#B_2" class="summary-name">B_2</a> = <code title="MappingTableFromFunction(stringprep.map_table_b2)">MappingTableFromFunction(stringprep.map_table_b2)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#nodeprep" class="summary-name">nodeprep</a> = <code title="Profile(mappings= [B_1, B_2], prohibiteds= [C_11, C_12, C_21, C_22, C_\
+3, C_4, C_5, C_6, C_7, C_8, C_9, LookupTable([u'&quot;', u'&amp;', u&quot;'&quot;, u'/', \
+u':', u'&lt;', u'&gt;', u'@'])])">Profile(mappings= [B_1, B_2], prohibiteds= [C_11, C<code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#resourceprep" class="summary-name">resourceprep</a> = <code title="Profile(mappings= [B_1,], prohibiteds= [C_12, C_21, C_22, C_3, C_4, C_\
+5, C_6, C_7, C_8, C_9])">Profile(mappings= [B_1,], prohibiteds= [C_12, C<code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#nameprep" class="summary-name">nameprep</a> = <code title="NamePrep()">NamePrep()</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="stringprep">stringprep</span>,
+ <span title="unicodedata">unicodedata</span>,
+ <span title="encodings.idna">idna</span>
+</p><br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="C_11"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_11</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c11)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_12"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_12</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c12)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_21"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_21</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c21)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_22"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_22</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c22)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_3"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_3</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c3)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_4"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_4</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c4)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_5"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_5</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c5)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_6"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_6</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c6)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_7"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_7</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c7)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_8"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_8</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c8)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="C_9"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">C_9</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+LookupTableFromFunction(stringprep.in_table_c9)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="B_1"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">B_1</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+EmptyMappingTable(stringprep.in_table_b1)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="B_2"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">B_2</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+MappingTableFromFunction(stringprep.map_table_b2)
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="nodeprep"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">nodeprep</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+Profile(mappings= [B_1, B_2], prohibiteds= [C_11, C_12, C_21, C_22, C_<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+3, C_4, C_5, C_6, C_7, C_8, C_9, LookupTable([u'&quot;', u'&amp;', u&quot;'&quot;, u'/', <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+u':', u'&lt;', u'&gt;', u'@'])])
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="resourceprep"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">resourceprep</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+Profile(mappings= [B_1,], prohibiteds= [C_12, C_21, C_22, C_3, C_4, C_<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+5, C_6, C_7, C_8, C_9])
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="nameprep"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">nameprep</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+NamePrep()
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare-pysrc.html b/doc/apidocs/nbxmpp.stringprepare-pysrc.html
new file mode 100644
index 0000000..90c57b8
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare-pysrc.html
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;stringprepare
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.stringprepare-module.html">Module nbxmpp.stringprepare</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding:utf-8 -*-</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## src/common/xmpp/stringprepare.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2001-2005 Twisted Matrix Laboratories</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2005-2012 Yann Leboulanger &lt;asterix AT lagaule.org&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2006 Stefan Bethge &lt;stefan AT lanpartei.de&gt;</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2007 Jean-Marie Traissard &lt;jim AT lapin.org&gt;</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## This file is part of Gajim.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## Gajim is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## by the Free Software Foundation; version 3 only.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## Gajim is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment">## You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-comment">## along with Gajim. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">stringprep</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">unicodedata</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">encodings</tt> <tt class="py-keyword">import</tt> <tt class="py-name">idna</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
+<a name="ILookupTable"></a><div id="ILookupTable-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="ILookupTable-toggle" onclick="return toggle('ILookupTable');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.ILookupTable-class.html">ILookupTable</a><tt class="py-op">:</tt> </tt>
+</div><div id="ILookupTable-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ILookupTable-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> Interface for character lookup classes</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> </tt>
+<a name="ILookupTable.lookup"></a><div id="ILookupTable.lookup-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="ILookupTable.lookup-toggle" onclick="return toggle('ILookupTable.lookup');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.ILookupTable-class.html#lookup">lookup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ILookupTable.lookup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ILookupTable.lookup-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> Return whether character is in this table</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt>
+<a name="IMappingTable"></a><div id="IMappingTable-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="IMappingTable-toggle" onclick="return toggle('IMappingTable');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.IMappingTable-class.html">IMappingTable</a><tt class="py-op">:</tt> </tt>
+</div><div id="IMappingTable-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="IMappingTable-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> Interface for character mapping classes</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
+<a name="IMappingTable.map"></a><div id="IMappingTable.map-def"><a name="L44"></a><tt class="py-lineno"> 44</tt> <a class="py-toggle" href="#" id="IMappingTable.map-toggle" onclick="return toggle('IMappingTable.map');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.IMappingTable-class.html#map">map</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IMappingTable.map-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IMappingTable.map-expanded"><a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> Return mapping for character</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> </tt>
+<a name="LookupTableFromFunction"></a><div id="LookupTableFromFunction-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="LookupTableFromFunction-toggle" onclick="return toggle('LookupTableFromFunction');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.LookupTableFromFunction-class.html">LookupTableFromFunction</a><tt class="py-op">:</tt> </tt>
+</div><div id="LookupTableFromFunction-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LookupTableFromFunction-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">__implements__</tt> <tt class="py-op">=</tt> <tt id="link-0" class="py-name" targets="Class nbxmpp.stringprepare.ILookupTable=nbxmpp.stringprepare.ILookupTable-class.html"><a title="nbxmpp.stringprepare.ILookupTable" class="py-name" href="#" onclick="return doclink('link-0', 'ILookupTable', 'link-0');">ILookupTable</a></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
+<a name="LookupTableFromFunction.__init__"></a><div id="LookupTableFromFunction.__init__-def"><a name="L54"></a><tt class="py-lineno"> 54</tt> <a class="py-toggle" href="#" id="LookupTableFromFunction.__init__-toggle" onclick="return toggle('LookupTableFromFunction.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">in_table_function</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LookupTableFromFunction.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LookupTableFromFunction.__init__-expanded"><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Method nbxmpp.stringprepare.ILookupTable.lookup()=nbxmpp.stringprepare.ILookupTable-class.html#lookup,Method nbxmpp.stringprepare.LookupTable.lookup()=nbxmpp.stringprepare.LookupTable-class.html#lookup"><a title="nbxmpp.stringprepare.ILookupTable.lookup
+nbxmpp.stringprepare.LookupTable.lookup" class="py-name" href="#" onclick="return doclink('link-1', 'lookup', 'link-1');">lookup</a></tt> <tt class="py-op">=</tt> <tt class="py-name">in_table_function</tt> </tt>
+</div></div><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
+<a name="LookupTable"></a><div id="LookupTable-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="LookupTable-toggle" onclick="return toggle('LookupTable');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.LookupTable-class.html">LookupTable</a><tt class="py-op">:</tt> </tt>
+</div><div id="LookupTable-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LookupTable-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">__implements__</tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="nbxmpp.stringprepare.ILookupTable" class="py-name" href="#" onclick="return doclink('link-2', 'ILookupTable', 'link-0');">ILookupTable</a></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt>
+<a name="LookupTable.__init__"></a><div id="LookupTable.__init__-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="LookupTable.__init__-toggle" onclick="return toggle('LookupTable.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.LookupTable-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">table</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LookupTable.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LookupTable.__init__-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_table</tt> <tt class="py-op">=</tt> <tt class="py-name">table</tt> </tt>
+</div><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt>
+<a name="LookupTable.lookup"></a><div id="LookupTable.lookup-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="LookupTable.lookup-toggle" onclick="return toggle('LookupTable.lookup');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.LookupTable-class.html#lookup">lookup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LookupTable.lookup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LookupTable.lookup-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_table</tt> </tt>
+</div></div><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> </tt>
+<a name="MappingTableFromFunction"></a><div id="MappingTableFromFunction-def"><a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="MappingTableFromFunction-toggle" onclick="return toggle('MappingTableFromFunction');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.MappingTableFromFunction-class.html">MappingTableFromFunction</a><tt class="py-op">:</tt> </tt>
+</div><div id="MappingTableFromFunction-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MappingTableFromFunction-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">__implements__</tt> <tt class="py-op">=</tt> <tt id="link-3" class="py-name" targets="Class nbxmpp.stringprepare.IMappingTable=nbxmpp.stringprepare.IMappingTable-class.html"><a title="nbxmpp.stringprepare.IMappingTable" class="py-name" href="#" onclick="return doclink('link-3', 'IMappingTable', 'link-3');">IMappingTable</a></tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt>
+<a name="MappingTableFromFunction.__init__"></a><div id="MappingTableFromFunction.__init__-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="MappingTableFromFunction.__init__-toggle" onclick="return toggle('MappingTableFromFunction.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">map_table_function</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MappingTableFromFunction.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MappingTableFromFunction.__init__-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Method nbxmpp.stringprepare.EmptyMappingTable.map()=nbxmpp.stringprepare.EmptyMappingTable-class.html#map,Method nbxmpp.stringprepare.IMappingTable.map()=nbxmpp.stringprepare.IMappingTable-class.html#map,Method nbxmpp.stringprepare.Profile.map()=nbxmpp.stringprepare.Profile-class.html#map"><a title="nbxmpp.stringprepare.EmptyMappingTable.map
+nbxmpp.stringprepare.IMappingTable.map
+nbxmpp.stringprepare.Profile.map" class="py-name" href="#" onclick="return doclink('link-4', 'map', 'link-4');">map</a></tt> <tt class="py-op">=</tt> <tt class="py-name">map_table_function</tt> </tt>
+</div></div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
+<a name="EmptyMappingTable"></a><div id="EmptyMappingTable-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="EmptyMappingTable-toggle" onclick="return toggle('EmptyMappingTable');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.EmptyMappingTable-class.html">EmptyMappingTable</a><tt class="py-op">:</tt> </tt>
+</div><div id="EmptyMappingTable-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="EmptyMappingTable-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">__implements__</tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name"><a title="nbxmpp.stringprepare.IMappingTable" class="py-name" href="#" onclick="return doclink('link-5', 'IMappingTable', 'link-3');">IMappingTable</a></tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt>
+<a name="EmptyMappingTable.__init__"></a><div id="EmptyMappingTable.__init__-def"><a name="L78"></a><tt class="py-lineno"> 78</tt> <a class="py-toggle" href="#" id="EmptyMappingTable.__init__-toggle" onclick="return toggle('EmptyMappingTable.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">in_table_function</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="EmptyMappingTable.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EmptyMappingTable.__init__-expanded"><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_table_function</tt> <tt class="py-op">=</tt> <tt class="py-name">in_table_function</tt> </tt>
+</div><a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> </tt>
+<a name="EmptyMappingTable.map"></a><div id="EmptyMappingTable.map-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="EmptyMappingTable.map-toggle" onclick="return toggle('EmptyMappingTable.map');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.EmptyMappingTable-class.html#map">map</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="EmptyMappingTable.map-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EmptyMappingTable.map-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_table_function</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">c</tt> </tt>
+</div></div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
+<a name="Profile"></a><div id="Profile-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="Profile-toggle" onclick="return toggle('Profile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.Profile-class.html">Profile</a><tt class="py-op">:</tt> </tt>
+</div><div id="Profile-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Profile-expanded"><a name="Profile.__init__"></a><div id="Profile.__init__-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="Profile.__init__-toggle" onclick="return toggle('Profile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.Profile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mappings</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">normalize</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">prohibiteds</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-param">check_unassigneds</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">check_bidi</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Profile.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Profile.__init__-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mappings</tt> <tt class="py-op">=</tt> <tt class="py-name">mappings</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">normalize</tt> <tt class="py-op">=</tt> <tt class="py-name">normalize</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Variable nbxmpp.stringprepare.NamePrep.prohibiteds=nbxmpp.stringprepare.NamePrep-class.html#prohibiteds"><a title="nbxmpp.stringprepare.NamePrep.prohibiteds" class="py-name" href="#" onclick="return doclink('link-6', 'prohibiteds', 'link-6');">prohibiteds</a></tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.prohibiteds" class="py-name" href="#" onclick="return doclink('link-7', 'prohibiteds', 'link-6');">prohibiteds</a></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">do_check_unassigneds</tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name" targets="Method nbxmpp.stringprepare.Profile.check_unassigneds()=nbxmpp.stringprepare.Profile-class.html#check_unassigneds"><a title="nbxmpp.stringprepare.Profile.check_unassigneds" class="py-name" href="#" onclick="return doclink('link-8', 'check_unassigneds', 'link-8');">check_unassigneds</a></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">do_check_bidi</tt> <tt class="py-op">=</tt> <tt class="py-name">check_bidi</tt> </tt>
+</div><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt>
+<a name="Profile.prepare"></a><div id="Profile.prepare-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="Profile.prepare-toggle" onclick="return toggle('Profile.prepare');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.Profile-class.html#prepare">prepare</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Profile.prepare-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Profile.prepare-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="nbxmpp.stringprepare.EmptyMappingTable.map
+nbxmpp.stringprepare.IMappingTable.map
+nbxmpp.stringprepare.Profile.map" class="py-name" href="#" onclick="return doclink('link-9', 'map', 'link-4');">map</a></tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">normalize</tt><tt class="py-op">:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">unicodedata</tt><tt class="py-op">.</tt><tt class="py-name">normalize</tt><tt class="py-op">(</tt><tt class="py-string">"NFKC"</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Method nbxmpp.stringprepare.NamePrep.check_prohibiteds()=nbxmpp.stringprepare.NamePrep-class.html#check_prohibiteds,Method nbxmpp.stringprepare.Profile.check_prohibiteds()=nbxmpp.stringprepare.Profile-class.html#check_prohibiteds"><a title="nbxmpp.stringprepare.NamePrep.check_prohibiteds
+nbxmpp.stringprepare.Profile.check_prohibiteds" class="py-name" href="#" onclick="return doclink('link-10', 'check_prohibiteds', 'link-10');">check_prohibiteds</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">do_check_unassigneds</tt><tt class="py-op">:</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="nbxmpp.stringprepare.Profile.check_unassigneds" class="py-name" href="#" onclick="return doclink('link-11', 'check_unassigneds', 'link-8');">check_unassigneds</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">do_check_bidi</tt><tt class="py-op">:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method nbxmpp.stringprepare.Profile.check_bidirectionals()=nbxmpp.stringprepare.Profile-class.html#check_bidirectionals"><a title="nbxmpp.stringprepare.Profile.check_bidirectionals" class="py-name" href="#" onclick="return doclink('link-12', 'check_bidirectionals', 'link-12');">check_bidirectionals</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> </tt>
+<a name="Profile.map"></a><div id="Profile.map-def"><a name="L107"></a><tt class="py-lineno">107</tt> <a class="py-toggle" href="#" id="Profile.map-toggle" onclick="return toggle('Profile.map');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.Profile-class.html#map">map</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Profile.map-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Profile.map-expanded"><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">result_c</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">mapping</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mappings</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">result_c</tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="nbxmpp.stringprepare.EmptyMappingTable.map
+nbxmpp.stringprepare.IMappingTable.map
+nbxmpp.stringprepare.Profile.map" class="py-name" href="#" onclick="return doclink('link-13', 'map', 'link-4');">map</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">result_c</tt> <tt class="py-op">!=</tt> <tt class="py-name">c</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">result_c</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">result_c</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">u""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt>
+<a name="Profile.check_prohibiteds"></a><div id="Profile.check_prohibiteds-def"><a name="L123"></a><tt class="py-lineno">123</tt> <a class="py-toggle" href="#" id="Profile.check_prohibiteds-toggle" onclick="return toggle('Profile.check_prohibiteds');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.Profile-class.html#check_prohibiteds">check_prohibiteds</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Profile.check_prohibiteds-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Profile.check_prohibiteds-expanded"><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">table</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.prohibiteds" class="py-name" href="#" onclick="return doclink('link-14', 'prohibiteds', 'link-6');">prohibiteds</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">table</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="nbxmpp.stringprepare.ILookupTable.lookup
+nbxmpp.stringprepare.LookupTable.lookup" class="py-name" href="#" onclick="return doclink('link-15', 'lookup', 'link-1');">lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid character %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt>
+<a name="Profile.check_unassigneds"></a><div id="Profile.check_unassigneds-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="Profile.check_unassigneds-toggle" onclick="return toggle('Profile.check_unassigneds');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.Profile-class.html#check_unassigneds">check_unassigneds</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Profile.check_unassigneds-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Profile.check_unassigneds-expanded"><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_a1</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Unassigned code point %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt>
+<a name="Profile.check_bidirectionals"></a><div id="Profile.check_bidirectionals-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="Profile.check_bidirectionals-toggle" onclick="return toggle('Profile.check_bidirectionals');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.Profile-class.html#check_bidirectionals">check_bidirectionals</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Profile.check_bidirectionals-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Profile.check_bidirectionals-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">found_LCat</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">found_RandALCat</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_d1</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">found_RandALCat</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_d2</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">found_LCat</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">found_LCat</tt> <tt class="py-keyword">and</tt> <tt class="py-name">found_RandALCat</tt><tt class="py-op">:</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Violation of BIDI Requirement 2"</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">found_RandALCat</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_d1</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_d1</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Violation of BIDI Requirement 3"</tt> </tt>
+</div></div><a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
+<a name="NamePrep"></a><div id="NamePrep-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="NamePrep-toggle" onclick="return toggle('NamePrep');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.stringprepare.NamePrep-class.html">NamePrep</a><tt class="py-op">:</tt> </tt>
+</div><div id="NamePrep-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NamePrep-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> Implements preparation of internationalized domain names</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> This class implements preparing internationalized domain names using the</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> rules defined in RFC 3491, section 4 (Conversion operations).</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> We do not perform step 4 since we deal with unicode representations of</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> domain names and do not convert from or to ASCII representations using</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> punycode encoding. When such a conversion is needed, the L{idna} standard</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> library provides the C{ToUnicode()} and C{ToASCII()} functions. Note that</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> L{idna} itself assumes UseSTD3ASCIIRules to be false.</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> The following steps are performed by C{prepare()}:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> * Split the domain name in labels at the dots (RFC 3490, 3.1)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> * Apply nameprep proper on each label (RFC 3491)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"> * Enforce the restrictions on ASCII characters in host names by</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> assuming STD3ASCIIRules to be true. (STD 3)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> * Rejoin the labels using the label separator U+002E (full stop).</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-comment"># Prohibited characters.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt id="link-16" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.prohibiteds" class="py-name" href="#" onclick="return doclink('link-16', 'prohibiteds', 'link-6');">prohibiteds</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt id="link-17" class="py-name" targets="Variable nbxmpp.stringprepare.NamePrep.n=nbxmpp.stringprepare.NamePrep-class.html#n"><a title="nbxmpp.stringprepare.NamePrep.n" class="py-name" href="#" onclick="return doclink('link-17', 'n', 'link-17');">n</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-18" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.n" class="py-name" href="#" onclick="return doclink('link-18', 'n', 'link-17');">n</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0x00</tt><tt class="py-op">,</tt> <tt class="py-number">0x2c</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0x2e</tt><tt class="py-op">,</tt> <tt class="py-number">0x2f</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0x3a</tt><tt class="py-op">,</tt> <tt class="py-number">0x40</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0x5b</tt><tt class="py-op">,</tt> <tt class="py-number">0x60</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0x7b</tt><tt class="py-op">,</tt> <tt class="py-number">0x7f</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt>
+<a name="NamePrep.prepare"></a><div id="NamePrep.prepare-def"><a name="L181"></a><tt class="py-lineno">181</tt> <a class="py-toggle" href="#" id="NamePrep.prepare-toggle" onclick="return toggle('NamePrep.prepare');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.NamePrep-class.html#prepare">prepare</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NamePrep.prepare-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NamePrep.prepare-expanded"><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">labels</tt> <tt class="py-op">=</tt> <tt class="py-name">idna</tt><tt class="py-op">.</tt><tt class="py-name">dots</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">labels</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">labels</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">trailing_dot</tt> <tt class="py-op">=</tt> <tt class="py-string">'.'</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">labels</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">trailing_dot</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">label</tt> <tt class="py-keyword">in</tt> <tt class="py-name">labels</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method nbxmpp.stringprepare.NamePrep.nameprep()=nbxmpp.stringprepare.NamePrep-class.html#nameprep,Variable nbxmpp.stringprepare.nameprep=nbxmpp.stringprepare-module.html#nameprep"><a title="nbxmpp.stringprepare.NamePrep.nameprep
+nbxmpp.stringprepare.nameprep" class="py-name" href="#" onclick="return doclink('link-19', 'nameprep', 'link-19');">nameprep</a></tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">"."</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">trailing_dot</tt> </tt>
+</div><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> </tt>
+<a name="NamePrep.check_prohibiteds"></a><div id="NamePrep.check_prohibiteds-def"><a name="L197"></a><tt class="py-lineno">197</tt> <a class="py-toggle" href="#" id="NamePrep.check_prohibiteds-toggle" onclick="return toggle('NamePrep.check_prohibiteds');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.NamePrep-class.html#check_prohibiteds">check_prohibiteds</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NamePrep.check_prohibiteds-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NamePrep.check_prohibiteds-expanded"><a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.prohibiteds" class="py-name" href="#" onclick="return doclink('link-20', 'prohibiteds', 'link-6');">prohibiteds</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid character %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> </tt>
+<a name="NamePrep.nameprep"></a><div id="NamePrep.nameprep-def"><a name="L202"></a><tt class="py-lineno">202</tt> <a class="py-toggle" href="#" id="NamePrep.nameprep-toggle" onclick="return toggle('NamePrep.nameprep');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.stringprepare.NamePrep-class.html#nameprep">nameprep</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NamePrep.nameprep-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NamePrep.nameprep-expanded"><a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">label</tt> <tt class="py-op">=</tt> <tt class="py-name">idna</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.nameprep
+nbxmpp.stringprepare.nameprep" class="py-name" href="#" onclick="return doclink('link-21', 'nameprep', 'link-19');">nameprep</a></tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.check_prohibiteds
+nbxmpp.stringprepare.Profile.check_prohibiteds" class="py-name" href="#" onclick="return doclink('link-22', 'check_prohibiteds', 'link-10');">check_prohibiteds</a></tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid empty name"</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">label</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'-'</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid leading hyphen-minus"</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">label</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'-'</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid trailing hyphen-minus"</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">label</tt> </tt>
+</div></div><a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt id="link-23" class="py-name" targets="Variable nbxmpp.stringprepare.C_11=nbxmpp.stringprepare-module.html#C_11"><a title="nbxmpp.stringprepare.C_11" class="py-name" href="#" onclick="return doclink('link-23', 'C_11', 'link-23');">C_11</a></tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name" targets="Class nbxmpp.stringprepare.LookupTableFromFunction=nbxmpp.stringprepare.LookupTableFromFunction-class.html"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-24', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c11</tt><tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt id="link-25" class="py-name" targets="Variable nbxmpp.stringprepare.C_12=nbxmpp.stringprepare-module.html#C_12"><a title="nbxmpp.stringprepare.C_12" class="py-name" href="#" onclick="return doclink('link-25', 'C_12', 'link-25');">C_12</a></tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-26', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c12</tt><tt class="py-op">)</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt id="link-27" class="py-name" targets="Variable nbxmpp.stringprepare.C_21=nbxmpp.stringprepare-module.html#C_21"><a title="nbxmpp.stringprepare.C_21" class="py-name" href="#" onclick="return doclink('link-27', 'C_21', 'link-27');">C_21</a></tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-28', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c21</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt id="link-29" class="py-name" targets="Variable nbxmpp.stringprepare.C_22=nbxmpp.stringprepare-module.html#C_22"><a title="nbxmpp.stringprepare.C_22" class="py-name" href="#" onclick="return doclink('link-29', 'C_22', 'link-29');">C_22</a></tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-30', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c22</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt id="link-31" class="py-name" targets="Variable nbxmpp.stringprepare.C_3=nbxmpp.stringprepare-module.html#C_3"><a title="nbxmpp.stringprepare.C_3" class="py-name" href="#" onclick="return doclink('link-31', 'C_3', 'link-31');">C_3</a></tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-32', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c3</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt id="link-33" class="py-name" targets="Variable nbxmpp.stringprepare.C_4=nbxmpp.stringprepare-module.html#C_4"><a title="nbxmpp.stringprepare.C_4" class="py-name" href="#" onclick="return doclink('link-33', 'C_4', 'link-33');">C_4</a></tt> <tt class="py-op">=</tt> <tt id="link-34" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-34', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c4</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt id="link-35" class="py-name" targets="Variable nbxmpp.stringprepare.C_5=nbxmpp.stringprepare-module.html#C_5"><a title="nbxmpp.stringprepare.C_5" class="py-name" href="#" onclick="return doclink('link-35', 'C_5', 'link-35');">C_5</a></tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-36', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c5</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt id="link-37" class="py-name" targets="Variable nbxmpp.stringprepare.C_6=nbxmpp.stringprepare-module.html#C_6"><a title="nbxmpp.stringprepare.C_6" class="py-name" href="#" onclick="return doclink('link-37', 'C_6', 'link-37');">C_6</a></tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-38', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c6</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt id="link-39" class="py-name" targets="Variable nbxmpp.stringprepare.C_7=nbxmpp.stringprepare-module.html#C_7"><a title="nbxmpp.stringprepare.C_7" class="py-name" href="#" onclick="return doclink('link-39', 'C_7', 'link-39');">C_7</a></tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-40', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c7</tt><tt class="py-op">)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt id="link-41" class="py-name" targets="Variable nbxmpp.stringprepare.C_8=nbxmpp.stringprepare-module.html#C_8"><a title="nbxmpp.stringprepare.C_8" class="py-name" href="#" onclick="return doclink('link-41', 'C_8', 'link-41');">C_8</a></tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-42', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c8</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt id="link-43" class="py-name" targets="Variable nbxmpp.stringprepare.C_9=nbxmpp.stringprepare-module.html#C_9"><a title="nbxmpp.stringprepare.C_9" class="py-name" href="#" onclick="return doclink('link-43', 'C_9', 'link-43');">C_9</a></tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="nbxmpp.stringprepare.LookupTableFromFunction" class="py-name" href="#" onclick="return doclink('link-44', 'LookupTableFromFunction', 'link-24');">LookupTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_c9</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt id="link-45" class="py-name" targets="Variable nbxmpp.stringprepare.B_1=nbxmpp.stringprepare-module.html#B_1"><a title="nbxmpp.stringprepare.B_1" class="py-name" href="#" onclick="return doclink('link-45', 'B_1', 'link-45');">B_1</a></tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name" targets="Class nbxmpp.stringprepare.EmptyMappingTable=nbxmpp.stringprepare.EmptyMappingTable-class.html"><a title="nbxmpp.stringprepare.EmptyMappingTable" class="py-name" href="#" onclick="return doclink('link-46', 'EmptyMappingTable', 'link-46');">EmptyMappingTable</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">in_table_b1</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt id="link-47" class="py-name" targets="Variable nbxmpp.stringprepare.B_2=nbxmpp.stringprepare-module.html#B_2"><a title="nbxmpp.stringprepare.B_2" class="py-name" href="#" onclick="return doclink('link-47', 'B_2', 'link-47');">B_2</a></tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name" targets="Class nbxmpp.stringprepare.MappingTableFromFunction=nbxmpp.stringprepare.MappingTableFromFunction-class.html"><a title="nbxmpp.stringprepare.MappingTableFromFunction" class="py-name" href="#" onclick="return doclink('link-48', 'MappingTableFromFunction', 'link-48');">MappingTableFromFunction</a></tt><tt class="py-op">(</tt><tt class="py-name">stringprep</tt><tt class="py-op">.</tt><tt class="py-name">map_table_b2</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt id="link-49" class="py-name" targets="Variable nbxmpp.stringprepare.nodeprep=nbxmpp.stringprepare-module.html#nodeprep"><a title="nbxmpp.stringprepare.nodeprep" class="py-name" href="#" onclick="return doclink('link-49', 'nodeprep', 'link-49');">nodeprep</a></tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name" targets="Class nbxmpp.stringprepare.Profile=nbxmpp.stringprepare.Profile-class.html"><a title="nbxmpp.stringprepare.Profile" class="py-name" href="#" onclick="return doclink('link-50', 'Profile', 'link-50');">Profile</a></tt><tt class="py-op">(</tt><tt class="py-name">mappings</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-51" class="py-name"><a title="nbxmpp.stringprepare.B_1" class="py-name" href="#" onclick="return doclink('link-51', 'B_1', 'link-45');">B_1</a></tt><tt class="py-op">,</tt> <tt id="link-52" class="py-name"><a title="nbxmpp.stringprepare.B_2" class="py-name" href="#" onclick="return doclink('link-52', 'B_2', 'link-47');">B_2</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt id="link-53" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.prohibiteds" class="py-name" href="#" onclick="return doclink('link-53', 'prohibiteds', 'link-6');">prohibiteds</a></tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-54" class="py-name"><a title="nbxmpp.stringprepare.C_11" class="py-name" href="#" onclick="return doclink('link-54', 'C_11', 'link-23');">C_11</a></tt><tt class="py-op">,</tt> <tt id="link-55" class="py-name"><a title="nbxmpp.stringprepare.C_12" class="py-name" href="#" onclick="return doclink('link-55', 'C_12', 'link-25');">C_12</a></tt><tt class="py-op">,</tt> <tt id="link-56" class="py-name"><a title="nbxmpp.stringprepare.C_21" class="py-name" href="#" onclick="return doclink('link-56', 'C_21', 'link-27');">C_21</a></tt><tt class="py-op">,</tt> <tt id="link-57" class="py-name"><a title="nbxmpp.stringprepare.C_22" class="py-name" href="#" onclick="return doclink('link-57', 'C_22', 'link-29');">C_22</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt id="link-58" class="py-name"><a title="nbxmpp.stringprepare.C_3" class="py-name" href="#" onclick="return doclink('link-58', 'C_3', 'link-31');">C_3</a></tt><tt class="py-op">,</tt> <tt id="link-59" class="py-name"><a title="nbxmpp.stringprepare.C_4" class="py-name" href="#" onclick="return doclink('link-59', 'C_4', 'link-33');">C_4</a></tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name"><a title="nbxmpp.stringprepare.C_5" class="py-name" href="#" onclick="return doclink('link-60', 'C_5', 'link-35');">C_5</a></tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name"><a title="nbxmpp.stringprepare.C_6" class="py-name" href="#" onclick="return doclink('link-61', 'C_6', 'link-37');">C_6</a></tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name"><a title="nbxmpp.stringprepare.C_7" class="py-name" href="#" onclick="return doclink('link-62', 'C_7', 'link-39');">C_7</a></tt><tt class="py-op">,</tt> <tt id="link-63" class="py-name"><a title="nbxmpp.stringprepare.C_8" class="py-name" href="#" onclick="return doclink('link-63', 'C_8', 'link-41');">C_8</a></tt><tt class="py-op">,</tt> <tt id="link-64" class="py-name"><a title="nbxmpp.stringprepare.C_9" class="py-name" href="#" onclick="return doclink('link-64', 'C_9', 'link-43');">C_9</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt id="link-65" class="py-name" targets="Class nbxmpp.stringprepare.LookupTable=nbxmpp.stringprepare.LookupTable-class.html"><a title="nbxmpp.stringprepare.LookupTable" class="py-name" href="#" onclick="return doclink('link-65', 'LookupTable', 'link-65');">LookupTable</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">u'"'</tt><tt class="py-op">,</tt> <tt class="py-string">u'&amp;'</tt><tt class="py-op">,</tt> <tt class="py-string">u"'"</tt><tt class="py-op">,</tt> <tt class="py-string">u'/'</tt><tt class="py-op">,</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-string">u':'</tt><tt class="py-op">,</tt> <tt class="py-string">u'&lt;'</tt><tt class="py-op">,</tt> <tt class="py-string">u'&gt;'</tt><tt class="py-op">,</tt> <tt class="py-string">u'@'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt id="link-66" class="py-name" targets="Variable nbxmpp.stringprepare.resourceprep=nbxmpp.stringprepare-module.html#resourceprep"><a title="nbxmpp.stringprepare.resourceprep" class="py-name" href="#" onclick="return doclink('link-66', 'resourceprep', 'link-66');">resourceprep</a></tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="nbxmpp.stringprepare.Profile" class="py-name" href="#" onclick="return doclink('link-67', 'Profile', 'link-50');">Profile</a></tt><tt class="py-op">(</tt><tt class="py-name">mappings</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-68" class="py-name"><a title="nbxmpp.stringprepare.B_1" class="py-name" href="#" onclick="return doclink('link-68', 'B_1', 'link-45');">B_1</a></tt><tt class="py-op">,</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt id="link-69" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.prohibiteds" class="py-name" href="#" onclick="return doclink('link-69', 'prohibiteds', 'link-6');">prohibiteds</a></tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt id="link-70" class="py-name"><a title="nbxmpp.stringprepare.C_12" class="py-name" href="#" onclick="return doclink('link-70', 'C_12', 'link-25');">C_12</a></tt><tt class="py-op">,</tt> <tt id="link-71" class="py-name"><a title="nbxmpp.stringprepare.C_21" class="py-name" href="#" onclick="return doclink('link-71', 'C_21', 'link-27');">C_21</a></tt><tt class="py-op">,</tt> <tt id="link-72" class="py-name"><a title="nbxmpp.stringprepare.C_22" class="py-name" href="#" onclick="return doclink('link-72', 'C_22', 'link-29');">C_22</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt id="link-73" class="py-name"><a title="nbxmpp.stringprepare.C_3" class="py-name" href="#" onclick="return doclink('link-73', 'C_3', 'link-31');">C_3</a></tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name"><a title="nbxmpp.stringprepare.C_4" class="py-name" href="#" onclick="return doclink('link-74', 'C_4', 'link-33');">C_4</a></tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name"><a title="nbxmpp.stringprepare.C_5" class="py-name" href="#" onclick="return doclink('link-75', 'C_5', 'link-35');">C_5</a></tt><tt class="py-op">,</tt> <tt id="link-76" class="py-name"><a title="nbxmpp.stringprepare.C_6" class="py-name" href="#" onclick="return doclink('link-76', 'C_6', 'link-37');">C_6</a></tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name"><a title="nbxmpp.stringprepare.C_7" class="py-name" href="#" onclick="return doclink('link-77', 'C_7', 'link-39');">C_7</a></tt><tt class="py-op">,</tt> <tt id="link-78" class="py-name"><a title="nbxmpp.stringprepare.C_8" class="py-name" href="#" onclick="return doclink('link-78', 'C_8', 'link-41');">C_8</a></tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="nbxmpp.stringprepare.C_9" class="py-name" href="#" onclick="return doclink('link-79', 'C_9', 'link-43');">C_9</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt id="link-80" class="py-name"><a title="nbxmpp.stringprepare.NamePrep.nameprep
+nbxmpp.stringprepare.nameprep" class="py-name" href="#" onclick="return doclink('link-80', 'nameprep', 'link-19');">nameprep</a></tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name" targets="Class nbxmpp.stringprepare.NamePrep=nbxmpp.stringprepare.NamePrep-class.html"><a title="nbxmpp.stringprepare.NamePrep" class="py-name" href="#" onclick="return doclink('link-81', 'NamePrep', 'link-81');">NamePrep</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare.EmptyMappingTable-class.html b/doc/apidocs/nbxmpp.stringprepare.EmptyMappingTable-class.html
new file mode 100644
index 0000000..e79810e
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.EmptyMappingTable-class.html
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare.EmptyMappingTable</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.stringprepare-module.html">Module&nbsp;stringprepare</a> ::
+ Class&nbsp;EmptyMappingTable
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare.EmptyMappingTable-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class EmptyMappingTable</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#EmptyMappingTable">source&nbsp;code</a></span></p>
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Nested Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-NestedClasses"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.IMappingTable-class.html" class="summary-name">__implements__</a><br />
+ Interface for character mapping classes
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">in_table_function</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#EmptyMappingTable.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.EmptyMappingTable-class.html#map" class="summary-sig-name">map</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">c</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#EmptyMappingTable.map">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">in_table_function</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#EmptyMappingTable.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="map"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">map</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">c</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#EmptyMappingTable.map">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:07 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare.ILookupTable-class.html b/doc/apidocs/nbxmpp.stringprepare.ILookupTable-class.html
new file mode 100644
index 0000000..e737efa
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.ILookupTable-class.html
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare.ILookupTable</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.stringprepare-module.html">Module&nbsp;stringprepare</a> ::
+ Class&nbsp;ILookupTable
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare.ILookupTable-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ILookupTable</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#ILookupTable">source&nbsp;code</a></span></p>
+Interface for character lookup classes
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.ILookupTable-class.html#lookup" class="summary-sig-name">lookup</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">c</span>)</span><br />
+ Return whether character is in this table</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#ILookupTable.lookup">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="lookup"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">lookup</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">c</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#ILookupTable.lookup">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return whether character is in this table
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare.IMappingTable-class.html b/doc/apidocs/nbxmpp.stringprepare.IMappingTable-class.html
new file mode 100644
index 0000000..004d5f4
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.IMappingTable-class.html
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare.IMappingTable</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.stringprepare-module.html">Module&nbsp;stringprepare</a> ::
+ Class&nbsp;IMappingTable
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare.IMappingTable-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class IMappingTable</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#IMappingTable">source&nbsp;code</a></span></p>
+Interface for character mapping classes
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.IMappingTable-class.html#map" class="summary-sig-name">map</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">c</span>)</span><br />
+ Return mapping for character</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#IMappingTable.map">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="map"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">map</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">c</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#IMappingTable.map">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Return mapping for character
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare.LookupTable-class.html b/doc/apidocs/nbxmpp.stringprepare.LookupTable-class.html
new file mode 100644
index 0000000..7191a19
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.LookupTable-class.html
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare.LookupTable</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.stringprepare-module.html">Module&nbsp;stringprepare</a> ::
+ Class&nbsp;LookupTable
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare.LookupTable-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LookupTable</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTable">source&nbsp;code</a></span></p>
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Nested Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-NestedClasses"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.ILookupTable-class.html" class="summary-name">__implements__</a><br />
+ Interface for character lookup classes
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.LookupTable-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">table</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTable.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.LookupTable-class.html#lookup" class="summary-sig-name">lookup</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">c</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTable.lookup">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">table</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTable.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="lookup"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">lookup</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">c</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTable.lookup">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare.LookupTableFromFunction-class.html b/doc/apidocs/nbxmpp.stringprepare.LookupTableFromFunction-class.html
new file mode 100644
index 0000000..686f071
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.LookupTableFromFunction-class.html
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare.LookupTableFromFunction</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.stringprepare-module.html">Module&nbsp;stringprepare</a> ::
+ Class&nbsp;LookupTableFromFunction
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare.LookupTableFromFunction-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LookupTableFromFunction</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTableFromFunction">source&nbsp;code</a></span></p>
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Nested Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-NestedClasses"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.ILookupTable-class.html" class="summary-name">__implements__</a><br />
+ Interface for character lookup classes
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">in_table_function</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTableFromFunction.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">in_table_function</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#LookupTableFromFunction.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare.MappingTableFromFunction-class.html b/doc/apidocs/nbxmpp.stringprepare.MappingTableFromFunction-class.html
new file mode 100644
index 0000000..199231e
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.MappingTableFromFunction-class.html
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare.MappingTableFromFunction</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.stringprepare-module.html">Module&nbsp;stringprepare</a> ::
+ Class&nbsp;MappingTableFromFunction
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare.MappingTableFromFunction-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class MappingTableFromFunction</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#MappingTableFromFunction">source&nbsp;code</a></span></p>
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Nested Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-NestedClasses"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.stringprepare.IMappingTable-class.html" class="summary-name">__implements__</a><br />
+ Interface for character mapping classes
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">map_table_function</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#MappingTableFromFunction.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">map_table_function</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#MappingTableFromFunction.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.stringprepare.NamePrep-class.html b/doc/apidocs/nbxmpp.stringprepare.NamePrep-class.html
new file mode 100644
index 0000000..3c65e31
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.NamePrep-class.html
Binary files differ
diff --git a/doc/apidocs/nbxmpp.stringprepare.Profile-class.html b/doc/apidocs/nbxmpp.stringprepare.Profile-class.html
new file mode 100644
index 0000000..f0feb09
--- /dev/null
+++ b/doc/apidocs/nbxmpp.stringprepare.Profile-class.html
@@ -0,0 +1,383 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.stringprepare.Profile</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.stringprepare-module.html">Module&nbsp;stringprepare</a> ::
+ Class&nbsp;Profile
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.stringprepare.Profile-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Profile</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile">source&nbsp;code</a></span></p>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.Profile-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">mappings</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">normalize</span>=<span class="summary-sig-default">True</span>,
+ <span class="summary-sig-arg">prohibiteds</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="summary-sig-arg">check_unassigneds</span>=<span class="summary-sig-default">True</span>,
+ <span class="summary-sig-arg">check_bidi</span>=<span class="summary-sig-default">True</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.Profile-class.html#prepare" class="summary-sig-name">prepare</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">string</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.prepare">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.Profile-class.html#map" class="summary-sig-name">map</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">string</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.map">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.Profile-class.html#check_prohibiteds" class="summary-sig-name">check_prohibiteds</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">string</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.check_prohibiteds">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.Profile-class.html#check_unassigneds" class="summary-sig-name">check_unassigneds</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">string</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.check_unassigneds">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.stringprepare.Profile-class.html#check_bidirectionals" class="summary-sig-name">check_bidirectionals</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">string</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.check_bidirectionals">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">mappings</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">normalize</span>=<span class="sig-default">True</span>,
+ <span class="sig-arg">prohibiteds</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">check_unassigneds</span>=<span class="sig-default">True</span>,
+ <span class="sig-arg">check_bidi</span>=<span class="sig-default">True</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="prepare"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">prepare</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">string</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.prepare">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="map"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">map</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">string</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.map">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="check_prohibiteds"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">check_prohibiteds</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">string</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.check_prohibiteds">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="check_unassigneds"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">check_unassigneds</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">string</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.check_unassigneds">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="check_bidirectionals"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">check_bidirectionals</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">string</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.stringprepare-pysrc.html#Profile.check_bidirectionals">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.tls_nb-module.html b/doc/apidocs/nbxmpp.tls_nb-module.html
new file mode 100644
index 0000000..2abd962
--- /dev/null
+++ b/doc/apidocs/nbxmpp.tls_nb-module.html
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.tls_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;tls_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.tls_nb-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module tls_nb</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html">source&nbsp;code</a></span></p>
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html" class="summary-name">SSLWrapper</a><br />
+ Abstract SSLWrapper base class
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html" class="summary-name">PyOpenSSLWrapper</a><br />
+ Wrapper class for PyOpenSSL's recv() and send() methods
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html" class="summary-name">StdlibSSLWrapper</a><br />
+ Wrapper class for Python socket.ssl read() and write() methods
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb.NonBlockingTLS-class.html" class="summary-name">NonBlockingTLS</a><br />
+ TLS connection used to encrypts already estabilished tcp connection
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb-module.html#gattr" class="summary-sig-name">gattr</a>(<span class="summary-sig-arg">obj</span>,
+ <span class="summary-sig-arg">attr</span>,
+ <span class="summary-sig-arg">default</span>=<span class="summary-sig-default">None</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#gattr">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.tls_nb')">logging.getLogger('nbxmpp.tls_nb')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb-module.html#PYOPENSSL" class="summary-name">PYOPENSSL</a> = <code title="'PYOPENSSL'"><code class="variable-quote">'</code><code class="variable-string">PYOPENSSL</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb-module.html#PYSTDLIB" class="summary-name">PYSTDLIB</a> = <code title="'PYSTDLIB'"><code class="variable-quote">'</code><code class="variable-string">PYSTDLIB</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb-module.html#USE_PYOPENSSL" class="summary-name">USE_PYOPENSSL</a> = <code title="True">True</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <span title="socket">socket</span>,
+ <a href="nbxmpp.plugin.PlugIn-class.html" title="nbxmpp.plugin.PlugIn">PlugIn</a>,
+ <span title="sys">sys</span>,
+ <span title="os">os</span>,
+ <span title="time">time</span>,
+ <span title="traceback">traceback</span>,
+ <span title="logging">logging</span>,
+ <span title="OpenSSL">OpenSSL</span>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="gattr"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">gattr</span>(<span class="sig-arg">obj</span>,
+ <span class="sig-arg">attr</span>,
+ <span class="sig-arg">default</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#gattr">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.tls_nb')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PYOPENSSL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PYOPENSSL</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">PYOPENSSL</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PYSTDLIB"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PYSTDLIB</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">PYSTDLIB</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="USE_PYOPENSSL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">USE_PYOPENSSL</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+True
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.tls_nb-pysrc.html b/doc/apidocs/nbxmpp.tls_nb-pysrc.html
new file mode 100644
index 0000000..62f367b
--- /dev/null
+++ b/doc/apidocs/nbxmpp.tls_nb-pysrc.html
@@ -0,0 +1,1193 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.tls_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;tls_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.tls_nb-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.tls_nb-module.html">Module nbxmpp.tls_nb</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## tls_nb.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## based on transports_nb.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2004 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## modified by Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## modified by Tomas Karasek &lt;tom.to.the.k@gmail.com&gt;</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugin()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugin,Method nbxmpp.auth_nb.NonBlockingNonSASL.plugin()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin,Method nbxmpp.auth_nb.SASL.plugin()=nbxmpp.auth_nb.SASL-class.html#plugin,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugin()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin,Module nbxmpp.plugin=nbxmpp.plugin-module.html,Method nbxmpp.roster_nb.NonBlockingRoster.plugin()=nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin,Method nbxmpp.tls_nb.NonBlockingTLS.plugin()=nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin,Method nbxmpp.transports_nb.NonBlockingTransport.plugin()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin"><a title="nbxmpp.auth_nb.NonBlockingBind.plugin
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin
+nbxmpp.auth_nb.SASL.plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin
+nbxmpp.plugin
+nbxmpp.roster_nb.NonBlockingRoster.plugin
+nbxmpp.tls_nb.NonBlockingTLS.plugin
+nbxmpp.transports_nb.NonBlockingTransport.plugin" class="py-name" href="#" onclick="return doclink('link-0', 'plugin', 'link-0');">plugin</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn,Method nbxmpp.dispatcher_nb.Dispatcher.PlugIn()=nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn,Class nbxmpp.plugin.PlugIn=nbxmpp.plugin.PlugIn-class.html,Method nbxmpp.plugin.PlugIn.PlugIn()=nbxmpp.plugin.PlugIn-class.html#PlugIn"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-1', 'PlugIn', 'link-1');">PlugIn</a></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-2', 'log', 'link-2');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.tls_nb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable nbxmpp.tls_nb.USE_PYOPENSSL=nbxmpp.tls_nb-module.html#USE_PYOPENSSL"><a title="nbxmpp.tls_nb.USE_PYOPENSSL" class="py-name" href="#" onclick="return doclink('link-3', 'USE_PYOPENSSL', 'link-3');">USE_PYOPENSSL</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable nbxmpp.tls_nb.PYOPENSSL=nbxmpp.tls_nb-module.html#PYOPENSSL"><a title="nbxmpp.tls_nb.PYOPENSSL" class="py-name" href="#" onclick="return doclink('link-4', 'PYOPENSSL', 'link-4');">PYOPENSSL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'PYOPENSSL'</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable nbxmpp.tls_nb.PYSTDLIB=nbxmpp.tls_nb-module.html#PYSTDLIB"><a title="nbxmpp.tls_nb.PYSTDLIB" class="py-name" href="#" onclick="return doclink('link-5', 'PYSTDLIB', 'link-5');">PYSTDLIB</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'PYSTDLIB'</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-comment">#raise ImportError("Manually disabled PyOpenSSL")</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt id="link-6" class="py-name"><a title="nbxmpp.tls_nb.USE_PYOPENSSL" class="py-name" href="#" onclick="return doclink('link-6', 'USE_PYOPENSSL', 'link-3');">USE_PYOPENSSL</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-7', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"PyOpenSSL loaded"</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-8', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Import of PyOpenSSL failed:"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: Remove these prints before release, replace with a warning dialog.</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">"="</tt> <tt class="py-op">*</tt> <tt class="py-number">79</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">"PyOpenSSL not found, falling back to Python builtin SSL objects (insecure)."</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-string">"="</tt> <tt class="py-op">*</tt> <tt class="py-number">79</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> </tt>
+<a name="gattr"></a><div id="gattr-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="gattr-toggle" onclick="return toggle('gattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb-module.html#gattr">gattr</a><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">,</tt> <tt class="py-param">attr</tt><tt class="py-op">,</tt> <tt class="py-param">default</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="gattr-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="gattr-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">default</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt>
+<a name="SSLWrapper"></a><div id="SSLWrapper-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="SSLWrapper-toggle" onclick="return toggle('SSLWrapper');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a><tt class="py-op">:</tt> </tt>
+</div><div id="SSLWrapper-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SSLWrapper-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> Abstract SSLWrapper base class</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt>
+<a name="SSLWrapper.Error"></a><div id="SSLWrapper.Error-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="SSLWrapper.Error-toggle" onclick="return toggle('SSLWrapper.Error');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html">Error</a><tt class="py-op">(</tt><tt class="py-base-class">IOError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SSLWrapper.Error-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSLWrapper.Error-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> Generic SSL Error Wrapper</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt>
+<a name="SSLWrapper.Error.__init__"></a><div id="SSLWrapper.Error.__init__-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="SSLWrapper.Error.__init__-toggle" onclick="return toggle('SSLWrapper.Error.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sock</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">exc</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">errno</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">strerror</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-param">peer</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SSLWrapper.Error.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="SSLWrapper.Error.__init__-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt class="py-name">IOError</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">errno</tt> <tt class="py-op">=</tt> <tt class="py-name">errno</tt> <tt class="py-keyword">or</tt> <tt id="link-9" class="py-name" targets="Function nbxmpp.tls_nb.gattr()=nbxmpp.tls_nb-module.html#gattr"><a title="nbxmpp.tls_nb.gattr" class="py-name" href="#" onclick="return doclink('link-9', 'gattr', 'link-9');">gattr</a></tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">,</tt> <tt class="py-string">'errno'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">exc</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">strerror</tt> <tt class="py-op">=</tt> <tt class="py-name">strerror</tt> <tt class="py-keyword">or</tt> <tt id="link-10" class="py-name"><a title="nbxmpp.tls_nb.gattr" class="py-name" href="#" onclick="return doclink('link-10', 'gattr', 'link-9');">gattr</a></tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">,</tt> <tt class="py-string">'strerror'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt id="link-11" class="py-name"><a title="nbxmpp.tls_nb.gattr" class="py-name" href="#" onclick="return doclink('link-11', 'gattr', 'link-9');">gattr</a></tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">,</tt> <tt class="py-string">'args'</tt><tt class="py-op">)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">strerror</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">strerror</tt> <tt class="py-op">=</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">strerror</tt><tt class="py-op">)</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc</tt> <tt class="py-op">=</tt> <tt class="py-name">exc</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peer</tt> <tt class="py-op">=</tt> <tt class="py-name">peer</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_args</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_str</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_repr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_name</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_args</tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name"><a title="nbxmpp.tls_nb.gattr" class="py-name" href="#" onclick="return doclink('link-12', 'gattr', 'link-9');">gattr</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc</tt><tt class="py-op">,</tt> <tt class="py-string">'args'</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_repr</tt> <tt class="py-op">=</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">errno</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">,</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">SysCallError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">errno</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">strerror</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-13', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">errno</tt><tt class="py-op">,</tt> <tt class="py-name">strerror</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peer</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sock</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">ppeer</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt class="py-name">getpeername</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ppeer</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">ppeer</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt> \ </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">ppeer</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peer</tt> <tt class="py-op">=</tt> <tt class="py-name">ppeer</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> </tt>
+<a name="SSLWrapper.Error.__str__"></a><div id="SSLWrapper.Error.__str__-def"><a name="L107"></a><tt class="py-lineno">107</tt> <a class="py-toggle" href="#" id="SSLWrapper.Error.__str__-toggle" onclick="return toggle('SSLWrapper.Error.__str__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SSLWrapper.Error.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="SSLWrapper.Error.__str__-expanded"><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peer</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">" for %s:%d"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peer</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">": [Errno: %d]"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">" (%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">", Caused by %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_name</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_str</tt><tt class="py-op">:</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">"(%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_str</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">"(%s)"</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exc_args</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+</div></div><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt>
+<a name="SSLWrapper.__init__"></a><div id="SSLWrapper.__init__-def"><a name="L123"></a><tt class="py-lineno">123</tt> <a class="py-toggle" href="#" id="SSLWrapper.__init__-toggle" onclick="return toggle('SSLWrapper.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.SSLWrapper-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sslobj</tt><tt class="py-op">,</tt> <tt class="py-param">sock</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SSLWrapper.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSLWrapper.__init__-expanded"><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt> <tt class="py-op">=</tt> <tt class="py-name">sslobj</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-14', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"%s.__init__ called with %s"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt class="py-name">sslobj</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> </tt>
+<a name="SSLWrapper.recv"></a><div id="SSLWrapper.recv-def"><a name="L128"></a><tt class="py-lineno">128</tt> <a class="py-toggle" href="#" id="SSLWrapper.recv-toggle" onclick="return toggle('SSLWrapper.recv');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.SSLWrapper-class.html#recv">recv</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SSLWrapper.recv-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSLWrapper.recv-expanded"><a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> Receive wrapper for SSL object</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> We can return None out of this function to signal that no data is</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> available right now. Better than an exception, which differs</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> depending on which SSL lib we're using. Unfortunately returning ''</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> can indicate that the socket has been closed, so to be sure, we avoid</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> this by returning None.</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt> </tt>
+</div><a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
+<a name="SSLWrapper.send"></a><div id="SSLWrapper.send-def"><a name="L140"></a><tt class="py-lineno">140</tt> <a class="py-toggle" href="#" id="SSLWrapper.send-toggle" onclick="return toggle('SSLWrapper.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.SSLWrapper-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SSLWrapper.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSLWrapper.send-expanded"><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> Send wrapper for SSL object</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt> </tt>
+</div></div><a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> </tt>
+<a name="PyOpenSSLWrapper"></a><div id="PyOpenSSLWrapper-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="PyOpenSSLWrapper-toggle" onclick="return toggle('PyOpenSSLWrapper');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html">PyOpenSSLWrapper</a><tt class="py-op">(</tt><tt class="py-base-class">SSLWrapper</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyOpenSSLWrapper-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyOpenSSLWrapper-expanded"><a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> Wrapper class for PyOpenSSL's recv() and send() methods</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
+<a name="PyOpenSSLWrapper.__init__"></a><div id="PyOpenSSLWrapper.__init__-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="PyOpenSSLWrapper.__init__-toggle" onclick="return toggle('PyOpenSSLWrapper.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyOpenSSLWrapper.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyOpenSSLWrapper.__init__-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name" targets="Class nbxmpp.tls_nb.SSLWrapper=nbxmpp.tls_nb.SSLWrapper-class.html"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-15', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> </tt>
+<a name="PyOpenSSLWrapper.is_numtoolarge"></a><div id="PyOpenSSLWrapper.is_numtoolarge-def"><a name="L156"></a><tt class="py-lineno">156</tt> <a class="py-toggle" href="#" id="PyOpenSSLWrapper.is_numtoolarge-toggle" onclick="return toggle('PyOpenSSLWrapper.is_numtoolarge');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#is_numtoolarge">is_numtoolarge</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">e</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyOpenSSLWrapper.is_numtoolarge-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyOpenSSLWrapper.is_numtoolarge-expanded"><a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-docstring">''' Magic methods don't need documentation '''</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'asn1 encoding routines'</tt><tt class="py-op">,</tt> <tt class="py-string">'a2d_ASN1_OBJECT'</tt><tt class="py-op">,</tt> <tt class="py-string">'first num too large'</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> </tt>
+<a name="PyOpenSSLWrapper.recv"></a><div id="PyOpenSSLWrapper.recv-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="PyOpenSSLWrapper.recv-toggle" onclick="return toggle('PyOpenSSLWrapper.recv');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#recv">recv</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyOpenSSLWrapper.recv-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyOpenSSLWrapper.recv-expanded"><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flags</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method nbxmpp.tls_nb.PyOpenSSLWrapper.recv()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#recv,Method nbxmpp.tls_nb.SSLWrapper.recv()=nbxmpp.tls_nb.SSLWrapper-class.html#recv,Method nbxmpp.tls_nb.StdlibSSLWrapper.recv()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#recv"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper.recv
+nbxmpp.tls_nb.SSLWrapper.recv
+nbxmpp.tls_nb.StdlibSSLWrapper.recv" class="py-name" href="#" onclick="return doclink('link-17', 'recv', 'link-17');">recv</a></tt><tt class="py-op">(</tt><tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper.recv
+nbxmpp.tls_nb.SSLWrapper.recv
+nbxmpp.tls_nb.StdlibSSLWrapper.recv" class="py-name" href="#" onclick="return doclink('link-18', 'recv', 'link-17');">recv</a></tt><tt class="py-op">(</tt><tt class="py-name">bufsize</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">WantReadError</tt><tt class="py-op">,</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">WantWriteError</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt id="link-19" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-19', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Recv: Want-error: "</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">SysCallError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt id="link-20" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-20', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Recv: Got OpenSSL.SSL.SysCallError: "</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-21" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-21', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Class nbxmpp.protocol.Error=nbxmpp.protocol.Error-class.html,Class nbxmpp.tls_nb.SSLWrapper.Error=nbxmpp.tls_nb.SSLWrapper.Error-class.html"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-22', 'Error', 'link-22');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">ZeroReturnError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-comment"># end-of-connection raises ZeroReturnError instead of having the</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-comment"># connection's .recv() method return a zero-sized result.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-23" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-23', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-24', 'Error', 'link-22');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-25', 'Error', 'link-22');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method nbxmpp.tls_nb.PyOpenSSLWrapper.is_numtoolarge()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#is_numtoolarge"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper.is_numtoolarge" class="py-name" href="#" onclick="return doclink('link-26', 'is_numtoolarge', 'link-26');">is_numtoolarge</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-comment"># warn, but ignore this exception</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-27', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Recv: OpenSSL: asn1enc: first num too large (ignored)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-28', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Recv: Caught OpenSSL.SSL.Error:"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-29" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-29', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-30', 'Error', 'link-22');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
+</div><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt>
+<a name="PyOpenSSLWrapper.send"></a><div id="PyOpenSSLWrapper.send-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="PyOpenSSLWrapper.send-toggle" onclick="return toggle('PyOpenSSLWrapper.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyOpenSSLWrapper.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyOpenSSLWrapper.send-expanded"><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flags</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-31', 'send', 'link-31');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-32', 'send', 'link-31');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">WantReadError</tt><tt class="py-op">,</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">WantWriteError</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-comment">#log.debug("Send: " + repr(e))</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> <tt class="py-comment"># prevent 100% CPU usage</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">SysCallError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-33', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"Send: Got OpenSSL.SSL.SysCallError: "</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-34" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-34', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-35', 'Error', 'link-22');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-36', 'Error', 'link-22');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper.is_numtoolarge" class="py-name" href="#" onclick="return doclink('link-37', 'is_numtoolarge', 'link-26');">is_numtoolarge</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-comment"># warn, but ignore this exception</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt id="link-38" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-38', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Send: OpenSSL: asn1enc: first num too large (ignored)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-39', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"Send: Caught OpenSSL.SSL.Error:"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-40" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-40', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-41', 'Error', 'link-22');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+</div></div><a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> </tt>
+<a name="StdlibSSLWrapper"></a><div id="StdlibSSLWrapper-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="StdlibSSLWrapper-toggle" onclick="return toggle('StdlibSSLWrapper');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html">StdlibSSLWrapper</a><tt class="py-op">(</tt><tt class="py-base-class">SSLWrapper</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StdlibSSLWrapper-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="StdlibSSLWrapper-expanded"><a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"> Wrapper class for Python socket.ssl read() and write() methods</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt>
+<a name="StdlibSSLWrapper.__init__"></a><div id="StdlibSSLWrapper.__init__-def"><a name="L217"></a><tt class="py-lineno">217</tt> <a class="py-toggle" href="#" id="StdlibSSLWrapper.__init__-toggle" onclick="return toggle('StdlibSSLWrapper.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StdlibSSLWrapper.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StdlibSSLWrapper.__init__-expanded"><a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-42', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-43', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> </tt>
+<a name="StdlibSSLWrapper.recv"></a><div id="StdlibSSLWrapper.recv-def"><a name="L221"></a><tt class="py-lineno">221</tt> <a class="py-toggle" href="#" id="StdlibSSLWrapper.recv-toggle" onclick="return toggle('StdlibSSLWrapper.recv');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#recv">recv</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StdlibSSLWrapper.recv-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StdlibSSLWrapper.recv-expanded"><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-comment"># we simply ignore flags since ssl object doesn't support it</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">sslerror</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt id="link-44" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-44', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Recv: Caught socket.sslerror: "</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SSL_ERROR_WANT_READ</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SSL_ERROR_WANT_WRITE</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-45" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-45', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-46', 'Error', 'link-22');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> </tt>
+<a name="StdlibSSLWrapper.send"></a><div id="StdlibSSLWrapper.send-def"><a name="L231"></a><tt class="py-lineno">231</tt> <a class="py-toggle" href="#" id="StdlibSSLWrapper.send-toggle" onclick="return toggle('StdlibSSLWrapper.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StdlibSSLWrapper.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StdlibSSLWrapper.send-expanded"><a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-comment"># we simply ignore flags since ssl object doesn't support it</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">sslerror</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt id="link-47" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-47', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Send: Caught socket.sslerror:"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SSL_ERROR_WANT_READ</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SSL_ERROR_WANT_WRITE</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-48" class="py-name"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-48', 'SSLWrapper', 'link-15');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-49', 'Error', 'link-22');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sslobj</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+</div></div><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS"></a><div id="NonBlockingTLS-def"><a name="L242"></a><tt class="py-lineno">242</tt> <a class="py-toggle" href="#" id="NonBlockingTLS-toggle" onclick="return toggle('NonBlockingTLS');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html">NonBlockingTLS</a><tt class="py-op">(</tt><tt class="py-base-class">PlugIn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingTLS-expanded"><a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> TLS connection used to encrypts already estabilished tcp connection</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> Can be plugged into NonBlockingTCP and will make use of StdlibSSLWrapper or</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"> PyOpenSSLWrapper.</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS.__init__"></a><div id="NonBlockingTLS.__init__-def"><a name="L250"></a><tt class="py-lineno">250</tt> <a class="py-toggle" href="#" id="NonBlockingTLS.__init__-toggle" onclick="return toggle('NonBlockingTLS.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cacerts</tt><tt class="py-op">,</tt> <tt class="py-param">mycerts</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS.__init__-expanded"><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> :param cacerts: path to pem file with certificates of known XMPP servers</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> :param mycerts: path to pem file with certificates of user trusted servers</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt id="link-50" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-50', 'PlugIn', 'link-1');">PlugIn</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-51', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cacerts</tt> <tt class="py-op">=</tt> <tt class="py-name">cacerts</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mycerts</tt> <tt class="py-op">=</tt> <tt class="py-name">mycerts</tt> </tt>
+</div><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-comment"># from ssl.h (partial extract)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt id="link-52" class="py-name" targets="Variable nbxmpp.tls_nb.NonBlockingTLS.ssl_h_bits=nbxmpp.tls_nb.NonBlockingTLS-class.html#ssl_h_bits"><a title="nbxmpp.tls_nb.NonBlockingTLS.ssl_h_bits" class="py-name" href="#" onclick="return doclink('link-52', 'ssl_h_bits', 'link-52');">ssl_h_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-string">"SSL_ST_CONNECT"</tt><tt class="py-op">:</tt> <tt class="py-number">0x1000</tt><tt class="py-op">,</tt> <tt class="py-string">"SSL_ST_ACCEPT"</tt><tt class="py-op">:</tt> <tt class="py-number">0x2000</tt><tt class="py-op">,</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-string">"SSL_CB_LOOP"</tt><tt class="py-op">:</tt> <tt class="py-number">0x01</tt><tt class="py-op">,</tt> <tt class="py-string">"SSL_CB_EXIT"</tt><tt class="py-op">:</tt> <tt class="py-number">0x02</tt><tt class="py-op">,</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-string">"SSL_CB_READ"</tt><tt class="py-op">:</tt> <tt class="py-number">0x04</tt><tt class="py-op">,</tt> <tt class="py-string">"SSL_CB_WRITE"</tt><tt class="py-op">:</tt> <tt class="py-number">0x08</tt><tt class="py-op">,</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-string">"SSL_CB_ALERT"</tt><tt class="py-op">:</tt> <tt class="py-number">0x4000</tt><tt class="py-op">,</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-string">"SSL_CB_HANDSHAKE_START"</tt><tt class="py-op">:</tt> <tt class="py-number">0x10</tt><tt class="py-op">,</tt> <tt class="py-string">"SSL_CB_HANDSHAKE_DONE"</tt><tt class="py-op">:</tt> <tt class="py-number">0x20</tt><tt class="py-op">}</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS.plugin"></a><div id="NonBlockingTLS.plugin-def"><a name="L266"></a><tt class="py-lineno">266</tt> <a class="py-toggle" href="#" id="NonBlockingTLS.plugin-toggle" onclick="return toggle('NonBlockingTLS.plugin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin">plugin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS.plugin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS.plugin-expanded"><a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"> Use to PlugIn TLS into transport and start establishing immediately.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> Returns True if TLS/SSL was established correctly, otherwise False</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt id="link-53" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-53', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Starting TLS estabilishing'</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method nbxmpp.tls_nb.NonBlockingTLS._startSSL()=nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL"><a title="nbxmpp.tls_nb.NonBlockingTLS._startSSL" class="py-name" href="#" onclick="return doclink('link-54', '_startSSL', 'link-54');">_startSSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt id="link-55" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-55', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"PlugIn: while trying _startSSL():"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">res</tt> </tt>
+</div><a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._dumpX509"></a><div id="NonBlockingTLS._dumpX509-def"><a name="L279"></a><tt class="py-lineno">279</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._dumpX509-toggle" onclick="return toggle('NonBlockingTLS._dumpX509');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509">_dumpX509</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cert</tt><tt class="py-op">,</tt> <tt class="py-param">stream</tt><tt class="py-op">=</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._dumpX509-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._dumpX509-expanded"><a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"Digest (SHA-1):"</tt><tt class="py-op">,</tt> <tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-string">"sha1"</tt><tt class="py-op">)</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"Digest (MD5):"</tt><tt class="py-op">,</tt> <tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-string">"md5"</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"Serial #:"</tt><tt class="py-op">,</tt> <tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">get_serial_number</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"Version:"</tt><tt class="py-op">,</tt> <tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">get_version</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"Expired:"</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">"Yes"</tt> <tt class="py-keyword">if</tt> <tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">has_expired</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-string">"No"</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"Subject:"</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method nbxmpp.tls_nb.NonBlockingTLS._dumpX509Name()=nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509Name"><a title="nbxmpp.tls_nb.NonBlockingTLS._dumpX509Name" class="py-name" href="#" onclick="return doclink('link-56', '_dumpX509Name', 'link-56');">_dumpX509Name</a></tt><tt class="py-op">(</tt><tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">get_subject</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">stream</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"Issuer:"</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="nbxmpp.tls_nb.NonBlockingTLS._dumpX509Name" class="py-name" href="#" onclick="return doclink('link-57', '_dumpX509Name', 'link-56');">_dumpX509Name</a></tt><tt class="py-op">(</tt><tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">get_issuer</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">stream</tt><tt class="py-op">)</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Method nbxmpp.tls_nb.NonBlockingTLS._dumpPKey()=nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpPKey"><a title="nbxmpp.tls_nb.NonBlockingTLS._dumpPKey" class="py-name" href="#" onclick="return doclink('link-58', '_dumpPKey', 'link-58');">_dumpPKey</a></tt><tt class="py-op">(</tt><tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">get_pubkey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">stream</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._dumpX509Name"></a><div id="NonBlockingTLS._dumpX509Name-def"><a name="L291"></a><tt class="py-lineno">291</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._dumpX509Name-toggle" onclick="return toggle('NonBlockingTLS._dumpX509Name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509Name">_dumpX509Name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">stream</tt><tt class="py-op">=</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._dumpX509Name-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._dumpX509Name-expanded"><a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"X509Name:"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-59" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
+nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-59', 'name', 'link-59');">name</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._dumpPKey"></a><div id="NonBlockingTLS._dumpPKey-def"><a name="L294"></a><tt class="py-lineno">294</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._dumpPKey-toggle" onclick="return toggle('NonBlockingTLS._dumpPKey');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpPKey">_dumpPKey</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">,</tt> <tt class="py-param">stream</tt><tt class="py-op">=</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._dumpPKey-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._dumpPKey-expanded"><a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">typedict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">TYPE_RSA</tt><tt class="py-op">:</tt> <tt class="py-string">"RSA"</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">TYPE_DSA</tt><tt class="py-op">:</tt> <tt class="py-string">"DSA"</tt><tt class="py-op">}</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"PKey bits:"</tt><tt class="py-op">,</tt> <tt class="py-name">pkey</tt><tt class="py-op">.</tt><tt class="py-name">bits</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">stream</tt><tt class="py-op">,</tt> <tt class="py-string">"PKey type: %s (%d)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">typedict</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method nbxmpp.bosh.KeyStack.get()=nbxmpp.bosh.KeyStack-class.html#get"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-60', 'get', 'link-60');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">.</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-string">"Unknown"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">pkey</tt><tt class="py-op">.</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._startSSL"></a><div id="NonBlockingTLS._startSSL-def"><a name="L301"></a><tt class="py-lineno">301</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._startSSL-toggle" onclick="return toggle('NonBlockingTLS._startSSL');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL">_startSSL</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._startSSL-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._startSSL-expanded"><a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"> Immediatedly switch socket to TLS mode. Used internally</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt id="link-61" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-61', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"_startSSL called"</tt><tt class="py-op">)</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-62" class="py-name"><a title="nbxmpp.tls_nb.USE_PYOPENSSL" class="py-name" href="#" onclick="return doclink('link-62', 'USE_PYOPENSSL', 'link-3');">USE_PYOPENSSL</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method nbxmpp.tls_nb.NonBlockingTLS._startSSL_pyOpenSSL()=nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_pyOpenSSL"><a title="nbxmpp.tls_nb.NonBlockingTLS._startSSL_pyOpenSSL" class="py-name" href="#" onclick="return doclink('link-63', '_startSSL_pyOpenSSL', 'link-63');">_startSSL_pyOpenSSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method nbxmpp.tls_nb.NonBlockingTLS._startSSL_stdlib()=nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_stdlib"><a title="nbxmpp.tls_nb.NonBlockingTLS._startSSL_stdlib" class="py-name" href="#" onclick="return doclink('link-64', '_startSSL_stdlib', 'link-64');">_startSSL_stdlib</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt id="link-65" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-65', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Synchronous handshake completed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._load_cert_file"></a><div id="NonBlockingTLS._load_cert_file-def"><a name="L318"></a><tt class="py-lineno">318</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._load_cert_file-toggle" onclick="return toggle('NonBlockingTLS._load_cert_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_load_cert_file">_load_cert_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cert_path</tt><tt class="py-op">,</tt> <tt class="py-param">cert_store</tt><tt class="py-op">,</tt> <tt class="py-param">logg</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._load_cert_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._load_cert_file-expanded"><a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">cert_path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">cert_path</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt id="link-66" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-66', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unable to open certificate file %s: %s'</tt> <tt class="py-op">%</tt> \ </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">cert_path</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">readlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-name">begin</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lines</tt><tt class="py-op">:</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'BEGIN CERTIFICATE'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">begin</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-string">'END CERTIFICATE'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line</tt> <tt class="py-keyword">and</tt> <tt class="py-name">begin</tt> <tt class="py-op">&gt;</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-name">cert</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">begin</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">x509cert</tt> <tt class="py-op">=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_certificate</tt><tt class="py-op">(</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">cert</tt><tt class="py-op">)</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">cert_store</tt><tt class="py-op">.</tt><tt class="py-name">add_cert</tt><tt class="py-op">(</tt><tt class="py-name">x509cert</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-67', 'Error', 'link-22');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception_obj</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">logg</tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-68', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unable to load a certificate from file %s: %s'</tt> <tt class="py-op">%</tt>\ </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">cert_path</tt><tt class="py-op">,</tt> <tt class="py-name">exception_obj</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt id="link-69" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-69', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown error while loading certificate from file '</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">cert_path</tt><tt class="py-op">)</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">begin</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._startSSL_pyOpenSSL"></a><div id="NonBlockingTLS._startSSL_pyOpenSSL-def"><a name="L349"></a><tt class="py-lineno">349</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._startSSL_pyOpenSSL-toggle" onclick="return toggle('NonBlockingTLS._startSSL_pyOpenSSL');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_pyOpenSSL">_startSSL_pyOpenSSL</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._startSSL_pyOpenSSL-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._startSSL_pyOpenSSL-expanded"><a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt id="link-70" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-70', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"_startSSL_pyOpenSSL called"</tt><tt class="py-op">)</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-comment"># NonBlockingHTTPBOSH instance has no attribute _owner</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">tcpsock</tt><tt class="py-op">,</tt> <tt class="py-string">'_owner'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt> \ </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-keyword">and</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">conn</tt> <tt class="py-op">=</tt> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_caller</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-comment"># FIXME make a checkbox for Client Cert / SSLv23 / TLSv1</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-comment"># If we are going to use a client cert/key pair for authentication,</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-comment"># we choose TLSv1 method.</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt> <tt class="py-op">=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Context</tt><tt class="py-op">(</tt><tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">TLSv1_METHOD</tt><tt class="py-op">)</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt id="link-71" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-71', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Using client cert and key from %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt><tt class="py-op">)</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">p12</tt> <tt class="py-op">=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_pkcs12</tt><tt class="py-op">(</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">client_cert_passphrase</tt><tt class="py-op">)</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-72', 'Error', 'link-22');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception_obj</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt id="link-73" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-73', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unable to load client pkcs12 certificate from '</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-string">'file %s: %s ... Is it a valid PKCS12 cert?'</tt> <tt class="py-op">%</tt> \ </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt><tt class="py-op">,</tt> <tt class="py-name">exception_obj</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt id="link-74" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-74', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown error while loading certificate from file '</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt><tt class="py-op">)</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt id="link-75" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-75', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'PKCS12 Client cert loaded OK'</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt><tt class="py-op">.</tt><tt class="py-name">use_certificate</tt><tt class="py-op">(</tt><tt class="py-name">p12</tt><tt class="py-op">.</tt><tt class="py-name">get_certificate</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt><tt class="py-op">.</tt><tt class="py-name">use_privatekey</tt><tt class="py-op">(</tt><tt class="py-name">p12</tt><tt class="py-op">.</tt><tt class="py-name">get_privatekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-76', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'p12 cert and key loaded'</tt><tt class="py-op">)</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-77', 'Error', 'link-22');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception_obj</tt><tt class="py-op">:</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-78', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unable to extract client certificate from '</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-string">'file %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt id="link-79" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-79', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown error extracting client certificate '</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-string">'from file %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">client_cert</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-80', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'client cert and key loaded OK'</tt><tt class="py-op">)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-comment"># See http://docs.python.org/dev/library/ssl.html</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt> <tt class="py-op">=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Context</tt><tt class="py-op">(</tt><tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">SSLv23_METHOD</tt><tt class="py-op">)</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">OP_NO_SSLv2</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">OP_NO_TICKET</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-comment"># py-OpenSSL &lt; 0.9 or old OpenSSL</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">|=</tt> <tt class="py-number">16384</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt><tt class="py-op">.</tt><tt class="py-name">set_options</tt><tt class="py-op">(</tt><tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">ssl_errnum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt><tt class="py-op">.</tt><tt class="py-name">set_verify</tt><tt class="py-op">(</tt><tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">VERIFY_PEER</tt><tt class="py-op">,</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method nbxmpp.tls_nb.NonBlockingTLS._ssl_verify_callback()=nbxmpp.tls_nb.NonBlockingTLS-class.html#_ssl_verify_callback"><a title="nbxmpp.tls_nb.NonBlockingTLS._ssl_verify_callback" class="py-name" href="#" onclick="return doclink('link-81', '_ssl_verify_callback', 'link-81');">_ssl_verify_callback</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt><tt class="py-op">.</tt><tt class="py-name">load_verify_locations</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cacerts</tt><tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt id="link-82" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-82', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Unable to load SSL certificates from file %s'</tt> <tt class="py-op">%</tt> \ </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cacerts</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt><tt class="py-op">.</tt><tt class="py-name">get_cert_store</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Method nbxmpp.tls_nb.NonBlockingTLS._load_cert_file()=nbxmpp.tls_nb.NonBlockingTLS-class.html#_load_cert_file"><a title="nbxmpp.tls_nb.NonBlockingTLS._load_cert_file" class="py-name" href="#" onclick="return doclink('link-83', '_load_cert_file', 'link-83');">_load_cert_file</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mycerts</tt><tt class="py-op">,</tt> <tt class="py-name">store</tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isdir</tt><tt class="py-op">(</tt><tt class="py-string">'/etc/ssl/certs'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class="py-op">(</tt><tt class="py-string">'/etc/ssl/certs'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-comment"># We don't logg because there is a lot a duplicated certs in this</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-comment"># folder</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="nbxmpp.tls_nb.NonBlockingTLS._load_cert_file" class="py-name" href="#" onclick="return doclink('link-84', '_load_cert_file', 'link-83');">_load_cert_file</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'/etc/ssl/certs'</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">store</tt><tt class="py-op">,</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">logg</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt> <tt class="py-op">=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">(</tt><tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslContext</tt><tt class="py-op">,</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">.</tt><tt class="py-name">set_connect_state</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># set to client mode</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-name">wrapper</tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name" targets="Class nbxmpp.tls_nb.PyOpenSSLWrapper=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper" class="py-name" href="#" onclick="return doclink('link-85', 'PyOpenSSLWrapper', 'link-85');">PyOpenSSLWrapper</a></tt><tt class="py-op">(</tt><tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">)</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_recv</tt> <tt class="py-op">=</tt> <tt class="py-name">wrapper</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper.recv
+nbxmpp.tls_nb.SSLWrapper.recv
+nbxmpp.tls_nb.StdlibSSLWrapper.recv" class="py-name" href="#" onclick="return doclink('link-86', 'recv', 'link-17');">recv</a></tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_send</tt> <tt class="py-op">=</tt> <tt class="py-name">wrapper</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-87', 'send', 'link-31');">send</a></tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt id="link-88" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-88', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Initiating handshake..."</tt><tt class="py-op">)</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">.</tt><tt class="py-name">do_handshake</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt id="link-89" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-89', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Error while TLS handshake: '</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> <tt class="py-op">=</tt> <tt id="link-90" class="py-name"><a title="nbxmpp.tls_nb.PYOPENSSL" class="py-name" href="#" onclick="return doclink('link-90', 'PYOPENSSL', 'link-4');">PYOPENSSL</a></tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._startSSL_stdlib"></a><div id="NonBlockingTLS._startSSL_stdlib-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._startSSL_stdlib-toggle" onclick="return toggle('NonBlockingTLS._startSSL_stdlib');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_stdlib">_startSSL_stdlib</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._startSSL_stdlib-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._startSSL_stdlib-expanded"><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt id="link-91" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-91', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"_startSSL_stdlib called"</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">ssl</tt><tt class="py-op">(</tt><tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslIssuer</tt> <tt class="py-op">=</tt> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">.</tt><tt class="py-name">issuer</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslServer</tt> <tt class="py-op">=</tt> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-name">wrapper</tt> <tt class="py-op">=</tt> <tt id="link-92" class="py-name" targets="Class nbxmpp.tls_nb.StdlibSSLWrapper=nbxmpp.tls_nb.StdlibSSLWrapper-class.html"><a title="nbxmpp.tls_nb.StdlibSSLWrapper" class="py-name" href="#" onclick="return doclink('link-92', 'StdlibSSLWrapper', 'link-92');">StdlibSSLWrapper</a></tt><tt class="py-op">(</tt><tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sslObj</tt><tt class="py-op">,</tt> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_recv</tt> <tt class="py-op">=</tt> <tt class="py-name">wrapper</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper.recv
+nbxmpp.tls_nb.SSLWrapper.recv
+nbxmpp.tls_nb.StdlibSSLWrapper.recv" class="py-name" href="#" onclick="return doclink('link-93', 'recv', 'link-17');">recv</a></tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">tcpsock</tt><tt class="py-op">.</tt><tt class="py-name">_send</tt> <tt class="py-op">=</tt> <tt class="py-name">wrapper</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-94', 'send', 'link-31');">send</a></tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt id="link-95" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-95', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"Exception caught in _startSSL_stdlib:"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name"><a title="nbxmpp.tls_nb.PYSTDLIB" class="py-name" href="#" onclick="return doclink('link-96', 'PYSTDLIB', 'link-5');">PYSTDLIB</a></tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTLS._ssl_verify_callback"></a><div id="NonBlockingTLS._ssl_verify_callback-def"><a name="L449"></a><tt class="py-lineno">449</tt> <a class="py-toggle" href="#" id="NonBlockingTLS._ssl_verify_callback-toggle" onclick="return toggle('NonBlockingTLS._ssl_verify_callback');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_ssl_verify_callback">_ssl_verify_callback</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sslconn</tt><tt class="py-op">,</tt> <tt class="py-param">cert</tt><tt class="py-op">,</tt> <tt class="py-param">errnum</tt><tt class="py-op">,</tt> <tt class="py-param">depth</tt><tt class="py-op">,</tt> <tt class="py-param">ok</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTLS._ssl_verify_callback-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTLS._ssl_verify_callback-expanded"><a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-comment"># Exceptions can't propagate up through this callback, so print them here.</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">ssl_fingerprint_sha1</tt> <tt class="py-op">=</tt> <tt class="py-name">cert</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-string">'sha1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">ssl_certificate</tt> <tt class="py-op">=</tt> <tt class="py-name">cert</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">ssl_errnum</tt> <tt class="py-op">=</tt> <tt class="py-name">errnum</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">ssl_cert_pem</tt> <tt class="py-op">=</tt> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">dump_certificate</tt><tt class="py-op">(</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-name">OpenSSL</tt><tt class="py-op">.</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">cert</tt><tt class="py-op">)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt id="link-97" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-97', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"Exception caught in _ssl_info_callback:"</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-comment"># Make sure something is printed, even if log is disabled.</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">print_exc</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.tls_nb.NonBlockingTLS-class.html b/doc/apidocs/nbxmpp.tls_nb.NonBlockingTLS-class.html
new file mode 100644
index 0000000..cb694f7
--- /dev/null
+++ b/doc/apidocs/nbxmpp.tls_nb.NonBlockingTLS-class.html
@@ -0,0 +1,679 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.tls_nb.NonBlockingTLS</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.tls_nb-module.html">Module&nbsp;tls_nb</a> ::
+ Class&nbsp;NonBlockingTLS
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.tls_nb.NonBlockingTLS-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingTLS</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t" name="uml_class_diagram_for_nbxmpp_t">
+<area shape="rect" id="node223" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#ssl_h_bits" title="nbxmpp.tls_nb.NonBlockingTLS.ssl_h_bits" alt="" coords="29,145,231,164"/>
+<area shape="rect" id="node223" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__" title="nbxmpp.tls_nb.NonBlockingTLS.__init__" alt="" coords="29,167,231,185"/>
+<area shape="rect" id="node223" href="nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin" title="Use to PlugIn TLS into transport and start establishing immediately. Returns True if TLS/SSL was established correctly, otherwise False" alt="" coords="29,185,231,204"/>
+<area shape="rect" id="node1" href="nbxmpp.tls_nb.NonBlockingTLS-class.html" title="TLS connection used to encrypts already estabilished tcp connection" alt="" coords="17,121,241,210"/>
+<area shape="rect" id="node224" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="17,39,243,57"/>
+<area shape="rect" id="node224" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="17,57,243,76"/>
+<area shape="rect" id="node224" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="17,76,243,95"/>
+<area shape="rect" id="node2" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="5,6,253,101"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>TLS connection used to encrypts already estabilished tcp connection</p>
+<p>Can be plugged into NonBlockingTCP and will make use of StdlibSSLWrapper or
+PyOpenSSLWrapper.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">cacerts</span>,
+ <span class="summary-sig-arg">mycerts</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin" class="summary-sig-name">plugin</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span><br />
+ Use to PlugIn TLS into transport and start establishing immediately.
+Returns True if TLS/SSL was established correctly, otherwise False</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS.plugin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509" class="summary-sig-name" onclick="show_private();">_dumpX509</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">cert</span>,
+ <span class="summary-sig-arg">stream</span>=<span class="summary-sig-default">sys.stderr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._dumpX509">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpX509Name" class="summary-sig-name" onclick="show_private();">_dumpX509Name</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">stream</span>=<span class="summary-sig-default">sys.stderr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._dumpX509Name">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_dumpPKey" class="summary-sig-name" onclick="show_private();">_dumpPKey</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">pkey</span>,
+ <span class="summary-sig-arg">stream</span>=<span class="summary-sig-default">sys.stderr</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._dumpPKey">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL" class="summary-sig-name" onclick="show_private();">_startSSL</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Immediatedly switch socket to TLS mode. Used internally</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._startSSL">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_load_cert_file" class="summary-sig-name" onclick="show_private();">_load_cert_file</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">cert_path</span>,
+ <span class="summary-sig-arg">cert_store</span>,
+ <span class="summary-sig-arg">logg</span>=<span class="summary-sig-default">True</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._load_cert_file">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_pyOpenSSL" class="summary-sig-name" onclick="show_private();">_startSSL_pyOpenSSL</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._startSSL_pyOpenSSL">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_startSSL_stdlib" class="summary-sig-name" onclick="show_private();">_startSSL_stdlib</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._startSSL_stdlib">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#_ssl_verify_callback" class="summary-sig-name" onclick="show_private();">_ssl_verify_callback</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">sslconn</span>,
+ <span class="summary-sig-arg">cert</span>,
+ <span class="summary-sig-arg">errnum</span>,
+ <span class="summary-sig-arg">depth</span>,
+ <span class="summary-sig-arg">ok</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._ssl_verify_callback">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb.NonBlockingTLS-class.html#ssl_h_bits" class="summary-name">ssl_h_bits</a> = <code title="{'SSL_CB_ALERT': 16384,
+ 'SSL_CB_EXIT': 2,
+ 'SSL_CB_HANDSHAKE_DONE': 32,
+ 'SSL_CB_HANDSHAKE_START': 16,
+ 'SSL_CB_LOOP': 1,
+ 'SSL_CB_READ': 4,
+ 'SSL_CB_WRITE': 8,
+ 'SSL_ST_ACCEPT': 8192,
+..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">SSL_CB_ALERT</code><code class="variable-quote">'</code><code class="variable-op">: </code>16384<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">SSL_CB_EXIT</code><code class="variable-quote">'</code><code class="variable-op">: </code>2<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">SSL_CB</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">cacerts</span>,
+ <span class="sig-arg">mycerts</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>cacerts</code></strong> - path to pem file with certificates of known XMPP servers</li>
+ <li><strong class="pname"><code>mycerts</code></strong> - path to pem file with certificates of user trusted servers</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugin</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS.plugin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Use to PlugIn TLS into transport and start establishing immediately.
+Returns True if TLS/SSL was established correctly, otherwise False
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_dumpX509"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_dumpX509</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">cert</span>,
+ <span class="sig-arg">stream</span>=<span class="sig-default">sys.stderr</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._dumpX509">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_dumpX509Name"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_dumpX509Name</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">stream</span>=<span class="sig-default">sys.stderr</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._dumpX509Name">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_dumpPKey"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_dumpPKey</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">pkey</span>,
+ <span class="sig-arg">stream</span>=<span class="sig-default">sys.stderr</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._dumpPKey">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_startSSL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_startSSL</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._startSSL">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Immediatedly switch socket to TLS mode. Used internally
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_load_cert_file"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_load_cert_file</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">cert_path</span>,
+ <span class="sig-arg">cert_store</span>,
+ <span class="sig-arg">logg</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._load_cert_file">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_startSSL_pyOpenSSL"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_startSSL_pyOpenSSL</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._startSSL_pyOpenSSL">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_startSSL_stdlib"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_startSSL_stdlib</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._startSSL_stdlib">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_ssl_verify_callback"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_ssl_verify_callback</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">sslconn</span>,
+ <span class="sig-arg">cert</span>,
+ <span class="sig-arg">errnum</span>,
+ <span class="sig-arg">depth</span>,
+ <span class="sig-arg">ok</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#NonBlockingTLS._ssl_verify_callback">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variable Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariableDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="ssl_h_bits"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">ssl_h_bits</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">SSL_CB_ALERT</code><code class="variable-quote">'</code><code class="variable-op">: </code>16384<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">SSL_CB_EXIT</code><code class="variable-quote">'</code><code class="variable-op">: </code>2<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">SSL_CB_HANDSHAKE_DONE</code><code class="variable-quote">'</code><code class="variable-op">: </code>32<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">SSL_CB_HANDSHAKE_START</code><code class="variable-quote">'</code><code class="variable-op">: </code>16<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">SSL_CB_LOOP</code><code class="variable-quote">'</code><code class="variable-op">: </code>1<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">SSL_CB_READ</code><code class="variable-quote">'</code><code class="variable-op">: </code>4<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">SSL_CB_WRITE</code><code class="variable-quote">'</code><code class="variable-op">: </code>8<code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">SSL_ST_ACCEPT</code><code class="variable-quote">'</code><code class="variable-op">: </code>8192<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.tls_nb.PyOpenSSLWrapper-class.html b/doc/apidocs/nbxmpp.tls_nb.PyOpenSSLWrapper-class.html
new file mode 100644
index 0000000..7c1e25c
--- /dev/null
+++ b/doc/apidocs/nbxmpp.tls_nb.PyOpenSSLWrapper-class.html
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.tls_nb.PyOpenSSLWrapper</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.tls_nb-module.html">Module&nbsp;tls_nb</a> ::
+ Class&nbsp;PyOpenSSLWrapper
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyOpenSSLWrapper</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_2" name="uml_class_diagram_for_nbxmpp_t_2">
+<area shape="rect" id="node225" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__" title="nbxmpp.tls_nb.PyOpenSSLWrapper.__init__" alt="" coords="17,116,284,135"/>
+<area shape="rect" id="node225" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#is_numtoolarge" title="Magic methods don&#39;t need documentation" alt="" coords="17,135,284,153"/>
+<area shape="rect" id="node225" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#recv" title="Receive wrapper for SSL object" alt="" coords="17,153,284,172"/>
+<area shape="rect" id="node225" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send" title="Send wrapper for SSL object" alt="" coords="17,172,284,191"/>
+<area shape="rect" id="node1" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html" title="Wrapper class for PyOpenSSL&#39;s recv() and send() methods" alt="" coords="5,83,296,197"/>
+<area shape="rect" id="node226" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html" title="Generic SSL Error Wrapper" alt="" coords="111,31,189,49"/>
+<area shape="rect" id="node2" href="nbxmpp.tls_nb.SSLWrapper-class.html" title="Abstract SSLWrapper base class" alt="" coords="99,6,200,63"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_2.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Wrapper class for PyOpenSSL's recv() and send() methods
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Nested Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-NestedClasses"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a></code></b>:
+ <code><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html">Error</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">*args</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#is_numtoolarge" class="summary-sig-name">is_numtoolarge</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">e</span>)</span><br />
+ Magic methods don't need documentation</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.is_numtoolarge">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#recv" class="summary-sig-name">recv</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">bufsize</span>,
+ <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Receive wrapper for SSL object</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.recv">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>,
+ <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Send wrapper for SSL object</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">*args</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html#__init__">SSLWrapper.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="is_numtoolarge"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">is_numtoolarge</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">e</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.is_numtoolarge">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Magic methods don't need documentation
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="recv"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">recv</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">bufsize</span>,
+ <span class="sig-arg">flags</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.recv">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Receive wrapper for SSL object</p>
+<p>We can return None out of this function to signal that no data is
+available right now. Better than an exception, which differs
+depending on which SSL lib we're using. Unfortunately returning ''
+can indicate that the socket has been closed, so to be sure, we avoid
+this by returning None.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html#recv">SSLWrapper.recv</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>,
+ <span class="sig-arg">flags</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#PyOpenSSLWrapper.send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send wrapper for SSL object
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html#send">SSLWrapper.send</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.tls_nb.SSLWrapper-class.html b/doc/apidocs/nbxmpp.tls_nb.SSLWrapper-class.html
new file mode 100644
index 0000000..ccb3e3c
--- /dev/null
+++ b/doc/apidocs/nbxmpp.tls_nb.SSLWrapper-class.html
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.tls_nb.SSLWrapper</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.tls_nb-module.html">Module&nbsp;tls_nb</a> ::
+ Class&nbsp;SSLWrapper
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SSLWrapper</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_3" name="uml_class_diagram_for_nbxmpp_t_3">
+<area shape="rect" id="node227" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html" title="Generic SSL Error Wrapper" alt="" coords="44,31,311,49"/>
+<area shape="rect" id="node227" href="nbxmpp.tls_nb.SSLWrapper-class.html#__init__" title="nbxmpp.tls_nb.SSLWrapper.__init__" alt="" coords="44,52,311,71"/>
+<area shape="rect" id="node227" href="nbxmpp.tls_nb.SSLWrapper-class.html#recv" title="Receive wrapper for SSL object" alt="" coords="44,71,311,89"/>
+<area shape="rect" id="node227" href="nbxmpp.tls_nb.SSLWrapper-class.html#send" title="Send wrapper for SSL object" alt="" coords="44,89,311,108"/>
+<area shape="rect" id="node1" href="nbxmpp.tls_nb.SSLWrapper-class.html" title="Abstract SSLWrapper base class" alt="" coords="32,6,323,114"/>
+<area shape="rect" id="node2" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html" title="Wrapper class for PyOpenSSL&#39;s recv() and send() methods" alt="" coords="5,134,165,173"/>
+<area shape="rect" id="node3" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html" title="Wrapper class for Python socket.ssl read() and write() methods" alt="" coords="195,134,344,173"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_3.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_3" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Abstract SSLWrapper base class
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Nested Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-NestedClasses"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html" class="summary-name">Error</a><br />
+ Generic SSL Error Wrapper
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.SSLWrapper-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">sslobj</span>,
+ <span class="summary-sig-arg">sock</span>=<span class="summary-sig-default">None</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.SSLWrapper-class.html#recv" class="summary-sig-name">recv</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>,
+ <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Receive wrapper for SSL object</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.recv">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.SSLWrapper-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>,
+ <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Send wrapper for SSL object</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">sslobj</span>,
+ <span class="sig-arg">sock</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="recv"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">recv</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>,
+ <span class="sig-arg">flags</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.recv">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Receive wrapper for SSL object</p>
+<p>We can return None out of this function to signal that no data is
+available right now. Better than an exception, which differs
+depending on which SSL lib we're using. Unfortunately returning ''
+can indicate that the socket has been closed, so to be sure, we avoid
+this by returning None.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>,
+ <span class="sig-arg">flags</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send wrapper for SSL object
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.tls_nb.SSLWrapper.Error-class.html b/doc/apidocs/nbxmpp.tls_nb.SSLWrapper.Error-class.html
new file mode 100644
index 0000000..8af25f7
--- /dev/null
+++ b/doc/apidocs/nbxmpp.tls_nb.SSLWrapper.Error-class.html
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.tls_nb.SSLWrapper.Error</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.tls_nb-module.html">Module&nbsp;tls_nb</a> ::
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html">Class&nbsp;SSLWrapper</a> ::
+ Class&nbsp;Error
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.Error">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_4" name="uml_class_diagram_for_nbxmpp_t_4">
+<area shape="rect" id="node231" href="javascript:void(0);" title="exceptions.IOError.__new__" alt="" coords="213,535,335,553"/>
+<area shape="rect" id="node1" href="javascript:void(0);" title="I/O operation failed." alt="" coords="201,502,345,559"/>
+<area shape="rect" id="node230" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,612,531,631"/>
+<area shape="rect" id="node230" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__" title="str(x)" alt="" coords="17,631,531,649"/>
+<area shape="rect" id="node5" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html" title="Generic SSL Error Wrapper" alt="" coords="5,579,541,655"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="189,31,359,49"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="189,49,359,68"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="189,71,359,89"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="189,89,359,108"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="x[y]" alt="" coords="189,108,359,127"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="x[i:j]" alt="" coords="189,127,359,145"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="repr(x)" alt="" coords="189,145,359,164"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="189,164,359,183"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="189,183,359,201"/>
+<area shape="rect" id="node235" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="189,201,359,220"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="177,6,369,226"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="193,246,353,290"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="exception errno" alt="" coords="181,399,368,417"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="exception filename" alt="" coords="181,417,368,436"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="exception strerror" alt="" coords="181,436,368,455"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="helper for pickle" alt="" coords="181,457,368,476"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Base class for I/O related errors." alt="" coords="169,374,380,482"/>
+<area shape="rect" id="node6" href="javascript:void(0);" title="Base class for all standard Python exceptions that do not represent interpreter exiting." alt="" coords="180,310,369,354"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_4.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_4" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Generic SSL Error Wrapper
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">sock</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">exc</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">errno</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">strerror</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">peer</span>=<span class="summary-sig-default">None</span>)</span><br />
+ x.__init__(...) initializes x; see help(type(x)) for signature</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.Error.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ str(x)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.Error.__str__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.IOError</code></b>:
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.EnvironmentError</code></b>:
+ <code>__reduce__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.EnvironmentError</code></b>:
+ <code>errno</code>,
+ <code>filename</code>,
+ <code>strerror</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">sock</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">exc</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">errno</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">strerror</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">peer</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.Error.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ x.__init__(...) initializes x; see help(type(x)) for signature
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+ <br /><em class="fname">(Informal representation operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#SSLWrapper.Error.__str__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ str(x)
+ <dl class="fields">
+ <dt>Overrides:
+ object.__str__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.tls_nb.StdlibSSLWrapper-class.html b/doc/apidocs/nbxmpp.tls_nb.StdlibSSLWrapper-class.html
new file mode 100644
index 0000000..1a6b87e
--- /dev/null
+++ b/doc/apidocs/nbxmpp.tls_nb.StdlibSSLWrapper-class.html
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.tls_nb.StdlibSSLWrapper</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.tls_nb-module.html">Module&nbsp;tls_nb</a> ::
+ Class&nbsp;StdlibSSLWrapper
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class StdlibSSLWrapper</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#StdlibSSLWrapper">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_5" name="uml_class_diagram_for_nbxmpp_t_5">
+<area shape="rect" id="node236" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__" title="nbxmpp.tls_nb.StdlibSSLWrapper.__init__" alt="" coords="17,116,284,135"/>
+<area shape="rect" id="node236" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#recv" title="Receive wrapper for SSL object" alt="" coords="17,135,284,153"/>
+<area shape="rect" id="node236" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send" title="Send wrapper for SSL object" alt="" coords="17,153,284,172"/>
+<area shape="rect" id="node1" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html" title="Wrapper class for Python socket.ssl read() and write() methods" alt="" coords="5,83,296,178"/>
+<area shape="rect" id="node237" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html" title="Generic SSL Error Wrapper" alt="" coords="111,31,189,49"/>
+<area shape="rect" id="node2" href="nbxmpp.tls_nb.SSLWrapper-class.html" title="Abstract SSLWrapper base class" alt="" coords="99,6,200,63"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_5.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_5" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Wrapper class for Python socket.ssl read() and write() methods
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Nested Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-NestedClasses"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.tls_nb.SSLWrapper-class.html">SSLWrapper</a></code></b>:
+ <code><a href="nbxmpp.tls_nb.SSLWrapper.Error-class.html">Error</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">*args</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#StdlibSSLWrapper.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#recv" class="summary-sig-name">recv</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">bufsize</span>,
+ <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Receive wrapper for SSL object</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#StdlibSSLWrapper.recv">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>,
+ <span class="summary-sig-arg">flags</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Send wrapper for SSL object</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#StdlibSSLWrapper.send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">*args</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#StdlibSSLWrapper.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html#__init__">SSLWrapper.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="recv"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">recv</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">bufsize</span>,
+ <span class="sig-arg">flags</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#StdlibSSLWrapper.recv">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Receive wrapper for SSL object</p>
+<p>We can return None out of this function to signal that no data is
+available right now. Better than an exception, which differs
+depending on which SSL lib we're using. Unfortunately returning ''
+can indicate that the socket has been closed, so to be sure, we avoid
+this by returning None.</p>
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html#recv">SSLWrapper.recv</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>,
+ <span class="sig-arg">flags</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.tls_nb-pysrc.html#StdlibSSLWrapper.send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Send wrapper for SSL object
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.tls_nb.SSLWrapper-class.html#send">SSLWrapper.send</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.transports_nb-module.html b/doc/apidocs/nbxmpp.transports_nb-module.html
new file mode 100644
index 0000000..f924e1a
--- /dev/null
+++ b/doc/apidocs/nbxmpp.transports_nb-module.html
@@ -0,0 +1,698 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.transports_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;transports_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.transports_nb-module.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module transports_nb</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html">source&nbsp;code</a></span></p>
+<p>Transports are objects responsible for connecting to XMPP server and putting
+data to wrapped sockets in in desired form (SSL, TLS, TCP, for HTTP proxy,
+for SOCKS5 proxy...)</p>
+<p>Transports are not aware of XMPP stanzas and only responsible for low-level
+connection handling.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html" class="summary-name">NonBlockingTransport</a><br />
+ Abstract class representing a transport
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb.NonBlockingTCP-class.html" class="summary-name">NonBlockingTCP</a><br />
+ Non-blocking TCP socket wrapper
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html" class="summary-name">NonBlockingHTTP</a><br />
+ Socket wrapper that creates HTTP message out of sent data and peels-off HTTP
+headers from incoming messages
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" class="summary-name">NonBlockingHTTPBOSH</a><br />
+ Class for BOSH HTTP connections. Slightly redefines HTTP transport by
+calling bosh bodytag generating callback before putting data on wire
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb-module.html#urisplit" class="summary-sig-name">urisplit</a>(<span class="summary-sig-arg">uri</span>)</span><br />
+ Function for splitting URI string to tuple (protocol, host, port, path).
+e.g. urisplit('<a class="rst-reference external" href="http://httpcm.jabber.org:123/webclient" target="_top">http://httpcm.jabber.org:123/webclient</a>') returns ('http',
+'httpcm.jabber.org', 123, '/webclient') return 443 as default port if proto
+is https else 80</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#urisplit">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb-module.html#get_proxy_data_from_dict" class="summary-sig-name">get_proxy_data_from_dict</a>(<span class="summary-sig-arg">proxy</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#get_proxy_data_from_dict">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#log" class="summary-name">log</a> = <code title="logging.getLogger('nbxmpp.transports_nb')">logging.getLogger('nbxmpp.transports_nb')</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#CONNECT_TIMEOUT_SECONDS" class="summary-name">CONNECT_TIMEOUT_SECONDS</a> = <code title="30">30</code><br />
+ timeout to connect to the server socket, it doesn't include auth
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#DISCONNECT_TIMEOUT_SECONDS" class="summary-name">DISCONNECT_TIMEOUT_SECONDS</a> = <code title="5">5</code><br />
+ how long to wait for a disconnect to complete
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#RECV_BUFSIZE" class="summary-name">RECV_BUFSIZE</a> = <code title="32768">32768</code><br />
+ size of the buffer which reads data from server
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#DATA_RECEIVED" class="summary-name">DATA_RECEIVED</a> = <code title="'DATA RECEIVED'"><code class="variable-quote">'</code><code class="variable-string">DATA RECEIVED</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#DATA_SENT" class="summary-name">DATA_SENT</a> = <code title="'DATA SENT'"><code class="variable-quote">'</code><code class="variable-string">DATA SENT</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#DATA_ERROR" class="summary-name">DATA_ERROR</a> = <code title="'DATA ERROR'"><code class="variable-quote">'</code><code class="variable-string">DATA ERROR</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#DISCONNECTED" class="summary-name">DISCONNECTED</a> = <code title="'DISCONNECTED'"><code class="variable-quote">'</code><code class="variable-string">DISCONNECTED</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#DISCONNECTING" class="summary-name">DISCONNECTING</a> = <code title="'DISCONNECTING'"><code class="variable-quote">'</code><code class="variable-string">DISCONNECTING</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#CONNECTING" class="summary-name">CONNECTING</a> = <code title="'CONNECTING'"><code class="variable-quote">'</code><code class="variable-string">CONNECTING</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#PROXY_CONNECTING" class="summary-name">PROXY_CONNECTING</a> = <code title="'PROXY_CONNECTING'"><code class="variable-quote">'</code><code class="variable-string">PROXY_CONNECTING</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#CONNECTED" class="summary-name">CONNECTED</a> = <code title="'CONNECTED'"><code class="variable-quote">'</code><code class="variable-string">CONNECTED</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#STATES" class="summary-name">STATES</a> = <code title="('DISCONNECTED',
+ 'CONNECTING',
+ 'PROXY_CONNECTING',
+ 'CONNECTED',
+ 'DISCONNECTING')"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">DISCONNECTED</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">CONNECTING</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">PROXY_CONNECTING</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">C</code><code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <a href="nbxmpp.transports_nb-module.html#__package__" class="summary-name">__package__</a> = <code title="'nbxmpp'"><code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code></code>
+ </td>
+ </tr>
+</table>
+<p class="indent-wrapped-lines"><b>Imports:</b>
+ <a href="nbxmpp.simplexml-module.html#ustr" title="nbxmpp.simplexml.ustr">ustr</a>,
+ <a href="nbxmpp.plugin.PlugIn-class.html" title="nbxmpp.plugin.PlugIn">PlugIn</a>,
+ <a href="nbxmpp.idlequeue.IdleObject-class.html" title="nbxmpp.idlequeue.IdleObject">IdleObject</a>,
+ <a href="nbxmpp.proxy_connectors-module.html" title="nbxmpp.proxy_connectors">proxy_connectors</a>,
+ <a href="nbxmpp.tls_nb-module.html" title="nbxmpp.tls_nb">tls_nb</a>,
+ <span title="socket">socket</span>,
+ <span title="errno">errno</span>,
+ <span title="time">time</span>,
+ <span title="traceback">traceback</span>,
+ <span title="base64">base64</span>,
+ <span title="urlparse">urlparse</span>,
+ <span title="logging">logging</span>
+</p><br />
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="urisplit"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">urisplit</span>(<span class="sig-arg">uri</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#urisplit">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Function for splitting URI string to tuple (protocol, host, port, path).
+e.g. urisplit('<a class="rst-rst-reference external rst-reference external" href="http://httpcm.jabber.org:123/webclient" target="_top">http://httpcm.jabber.org:123/webclient</a>') returns ('http',
+'httpcm.jabber.org', 123, '/webclient') return 443 as default port if proto
+is https else 80
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_proxy_data_from_dict"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_proxy_data_from_dict</span>(<span class="sig-arg">proxy</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#get_proxy_data_from_dict">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="log"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">log</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+logging.getLogger('nbxmpp.transports_nb')
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="CONNECT_TIMEOUT_SECONDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">CONNECT_TIMEOUT_SECONDS</h3>
+ timeout to connect to the server socket, it doesn't include auth
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+30
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="DISCONNECT_TIMEOUT_SECONDS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">DISCONNECT_TIMEOUT_SECONDS</h3>
+ how long to wait for a disconnect to complete
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+5
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="RECV_BUFSIZE"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">RECV_BUFSIZE</h3>
+ size of the buffer which reads data from server
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+32768
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="DATA_RECEIVED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">DATA_RECEIVED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">DATA RECEIVED</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="DATA_SENT"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">DATA_SENT</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">DATA SENT</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="DATA_ERROR"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">DATA_ERROR</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">DATA ERROR</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="DISCONNECTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">DISCONNECTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">DISCONNECTED</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="DISCONNECTING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">DISCONNECTING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">DISCONNECTING</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="CONNECTING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">CONNECTING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">CONNECTING</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="PROXY_CONNECTING"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">PROXY_CONNECTING</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">PROXY_CONNECTING</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="CONNECTED"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">CONNECTED</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">CONNECTED</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="STATES"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">STATES</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">DISCONNECTED</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">CONNECTING</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">PROXY_CONNECTING</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">CONNECTED</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">DISCONNECTING</code><code class="variable-quote">'</code><code class="variable-group">)</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__package__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">__package__</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">nbxmpp</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:04 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.transports_nb-pysrc.html b/doc/apidocs/nbxmpp.transports_nb-pysrc.html
new file mode 100644
index 0000000..00906e8
--- /dev/null
+++ b/doc/apidocs/nbxmpp.transports_nb-pysrc.html
@@ -0,0 +1,1486 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.transports_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ Module&nbsp;transports_nb
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.transports_nb-pysrc.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="nbxmpp.transports_nb-module.html">Module nbxmpp.transports_nb</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## transports_nb.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">## based on transports.py</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## Copyright (C) 2003-2004 Alexey "Snake" Nezhdanov</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">## modified by Dimitur Kirov &lt;dkirov@gmail.com&gt;</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">## modified by Tomas Karasek &lt;tom.to.the.k@gmail.com&gt;</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">## This program is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">## it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">## the Free Software Foundation; either version 2, or (at your option)</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">## any later version.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment">## This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment">## GNU General Public License for more details.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">Transports are objects responsible for connecting to XMPP server and putting</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">data to wrapped sockets in in desired form (SSL, TLS, TCP, for HTTP proxy,</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">for SOCKS5 proxy...)</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring">Transports are not aware of XMPP stanzas and only responsible for low-level</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring">connection handling.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module nbxmpp.simplexml=nbxmpp.simplexml-module.html"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-0', 'simplexml', 'link-0');">simplexml</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Function nbxmpp.simplexml.ustr()=nbxmpp.simplexml-module.html#ustr"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-1', 'ustr', 'link-1');">ustr</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.plugin()=nbxmpp.auth_nb.NonBlockingBind-class.html#plugin,Method nbxmpp.auth_nb.NonBlockingNonSASL.plugin()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#plugin,Method nbxmpp.auth_nb.SASL.plugin()=nbxmpp.auth_nb.SASL-class.html#plugin,Method nbxmpp.dispatcher_nb.XMPPDispatcher.plugin()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#plugin,Module nbxmpp.plugin=nbxmpp.plugin-module.html,Method nbxmpp.roster_nb.NonBlockingRoster.plugin()=nbxmpp.roster_nb.NonBlockingRoster-class.html#plugin,Method nbxmpp.tls_nb.NonBlockingTLS.plugin()=nbxmpp.tls_nb.NonBlockingTLS-class.html#plugin,Method nbxmpp.transports_nb.NonBlockingTransport.plugin()=nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin"><a title="nbxmpp.auth_nb.NonBlockingBind.plugin
+nbxmpp.auth_nb.NonBlockingNonSASL.plugin
+nbxmpp.auth_nb.SASL.plugin
+nbxmpp.dispatcher_nb.XMPPDispatcher.plugin
+nbxmpp.plugin
+nbxmpp.roster_nb.NonBlockingRoster.plugin
+nbxmpp.tls_nb.NonBlockingTLS.plugin
+nbxmpp.transports_nb.NonBlockingTransport.plugin" class="py-name" href="#" onclick="return doclink('link-2', 'plugin', 'link-2');">plugin</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn,Method nbxmpp.dispatcher_nb.Dispatcher.PlugIn()=nbxmpp.dispatcher_nb.Dispatcher-class.html#PlugIn,Class nbxmpp.plugin.PlugIn=nbxmpp.plugin.PlugIn-class.html,Method nbxmpp.plugin.PlugIn.PlugIn()=nbxmpp.plugin.PlugIn-class.html#PlugIn"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-3', 'PlugIn', 'link-3');">PlugIn</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name" targets="Module nbxmpp.idlequeue=nbxmpp.idlequeue-module.html"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-4', 'idlequeue', 'link-4');">idlequeue</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Class nbxmpp.idlequeue.IdleObject=nbxmpp.idlequeue.IdleObject-class.html"><a title="nbxmpp.idlequeue.IdleObject" class="py-name" href="#" onclick="return doclink('link-5', 'IdleObject', 'link-5');">IdleObject</a></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Module nbxmpp.proxy_connectors=nbxmpp.proxy_connectors-module.html"><a title="nbxmpp.proxy_connectors" class="py-name" href="#" onclick="return doclink('link-6', 'proxy_connectors', 'link-6');">proxy_connectors</a></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Module nbxmpp.tls_nb=nbxmpp.tls_nb-module.html"><a title="nbxmpp.tls_nb" class="py-name" href="#" onclick="return doclink('link-7', 'tls_nb', 'link-7');">tls_nb</a></tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">errno</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-8', 'log', 'link-8');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'nbxmpp.transports_nb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt>
+<a name="urisplit"></a><div id="urisplit-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="urisplit-toggle" onclick="return toggle('urisplit');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb-module.html#urisplit">urisplit</a><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="urisplit-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="urisplit-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> Function for splitting URI string to tuple (protocol, host, port, path).</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> e.g. urisplit('http://httpcm.jabber.org:123/webclient') returns ('http',</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> 'httpcm.jabber.org', 123, '/webclient') return 443 as default port if proto</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> is https else 80</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">splitted</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlsplit</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">proto</tt><tt class="py-op">,</tt> <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">splitted</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">splitted</tt><tt class="py-op">.</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">splitted</tt><tt class="py-op">.</tt><tt class="py-name">path</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">splitted</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt id="link-9" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-9', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'port cannot be extracted from BOSH URL %s, using default port'</tt> \ </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">port</tt><tt class="py-op">:</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">proto</tt> <tt class="py-op">==</tt> <tt class="py-string">'https'</tt><tt class="py-op">:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-number">443</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-number">80</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">proto</tt><tt class="py-op">,</tt> <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt> </tt>
+</div><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt>
+<a name="get_proxy_data_from_dict"></a><div id="get_proxy_data_from_dict-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="get_proxy_data_from_dict-toggle" onclick="return toggle('get_proxy_data_from_dict');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb-module.html#get_proxy_data_from_dict">get_proxy_data_from_dict</a><tt class="py-op">(</tt><tt class="py-param">proxy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_proxy_data_from_dict-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_proxy_data_from_dict-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">tcp_host</tt><tt class="py-op">,</tt> <tt class="py-name">tcp_port</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_pass</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-name">proxy_type</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">proxy_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'bosh'</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_useproxy'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-comment"># with BOSH not over proxy we have to parse the hostname from BOSH URI</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">proto</tt><tt class="py-op">,</tt> <tt class="py-name">tcp_host</tt><tt class="py-op">,</tt> <tt class="py-name">tcp_port</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name" targets="Function nbxmpp.transports_nb.urisplit()=nbxmpp.transports_nb-module.html#urisplit"><a title="nbxmpp.transports_nb.urisplit" class="py-name" href="#" onclick="return doclink('link-10', 'urisplit', 'link-10');">urisplit</a></tt><tt class="py-op">(</tt><tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'bosh_uri'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-comment"># with proxy!=bosh or with bosh over HTTP proxy we're connecting to proxy</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-comment"># machine</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">tcp_host</tt><tt class="py-op">,</tt> <tt class="py-name">tcp_port</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'port'</tt><tt class="py-op">]</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">proxy</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method nbxmpp.bosh.KeyStack.get()=nbxmpp.bosh.KeyStack-class.html#get"><a title="nbxmpp.bosh.KeyStack.get" class="py-name" href="#" onclick="return doclink('link-11', 'get', 'link-11');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'useauth'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_pass</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'user'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">proxy</tt><tt class="py-op">[</tt><tt class="py-string">'pass'</tt><tt class="py-op">]</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tcp_host</tt><tt class="py-op">,</tt> <tt class="py-name">tcp_port</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_pass</tt> </tt>
+</div><a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-comment">#: timeout to connect to the server socket, it doesn't include auth</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable nbxmpp.transports_nb.CONNECT_TIMEOUT_SECONDS=nbxmpp.transports_nb-module.html#CONNECT_TIMEOUT_SECONDS"><a title="nbxmpp.transports_nb.CONNECT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-12', 'CONNECT_TIMEOUT_SECONDS', 'link-12');">CONNECT_TIMEOUT_SECONDS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">30</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-comment">#: how long to wait for a disconnect to complete</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS=nbxmpp.transports_nb-module.html#DISCONNECT_TIMEOUT_SECONDS"><a title="nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-13', 'DISCONNECT_TIMEOUT_SECONDS', 'link-13');">DISCONNECT_TIMEOUT_SECONDS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-comment">#: size of the buffer which reads data from server</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-comment"># if lower, more stanzas will be fragmented and processed twice</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable nbxmpp.transports_nb.RECV_BUFSIZE=nbxmpp.transports_nb-module.html#RECV_BUFSIZE"><a title="nbxmpp.transports_nb.RECV_BUFSIZE" class="py-name" href="#" onclick="return doclink('link-14', 'RECV_BUFSIZE', 'link-14');">RECV_BUFSIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">32768</tt> <tt class="py-comment"># 2x maximum size of ssl packet, should be plenty</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-comment"># it's inefficient but should work. Problem is that connect machine makes wrong</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-comment"># assumptions and that we only check for pending data in sockets but not in SSL</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-comment"># buffer...</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable nbxmpp.transports_nb.DATA_RECEIVED=nbxmpp.transports_nb-module.html#DATA_RECEIVED"><a title="nbxmpp.transports_nb.DATA_RECEIVED" class="py-name" href="#" onclick="return doclink('link-15', 'DATA_RECEIVED', 'link-15');">DATA_RECEIVED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'DATA RECEIVED'</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable nbxmpp.transports_nb.DATA_SENT=nbxmpp.transports_nb-module.html#DATA_SENT"><a title="nbxmpp.transports_nb.DATA_SENT" class="py-name" href="#" onclick="return doclink('link-16', 'DATA_SENT', 'link-16');">DATA_SENT</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'DATA SENT'</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt id="link-17" class="py-name" targets="Variable nbxmpp.transports_nb.DATA_ERROR=nbxmpp.transports_nb-module.html#DATA_ERROR"><a title="nbxmpp.transports_nb.DATA_ERROR" class="py-name" href="#" onclick="return doclink('link-17', 'DATA_ERROR', 'link-17');">DATA_ERROR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'DATA ERROR'</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable nbxmpp.transports_nb.DISCONNECTED=nbxmpp.transports_nb-module.html#DISCONNECTED"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-18', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'DISCONNECTED'</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable nbxmpp.transports_nb.DISCONNECTING=nbxmpp.transports_nb-module.html#DISCONNECTING"><a title="nbxmpp.transports_nb.DISCONNECTING" class="py-name" href="#" onclick="return doclink('link-19', 'DISCONNECTING', 'link-19');">DISCONNECTING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'DISCONNECTING'</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable nbxmpp.transports_nb.CONNECTING=nbxmpp.transports_nb-module.html#CONNECTING"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-20', 'CONNECTING', 'link-20');">CONNECTING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'CONNECTING'</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt id="link-21" class="py-name" targets="Variable nbxmpp.transports_nb.PROXY_CONNECTING=nbxmpp.transports_nb-module.html#PROXY_CONNECTING"><a title="nbxmpp.transports_nb.PROXY_CONNECTING" class="py-name" href="#" onclick="return doclink('link-21', 'PROXY_CONNECTING', 'link-21');">PROXY_CONNECTING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'PROXY_CONNECTING'</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt id="link-22" class="py-name" targets="Variable nbxmpp.transports_nb.CONNECTED=nbxmpp.transports_nb-module.html#CONNECTED"><a title="nbxmpp.transports_nb.CONNECTED" class="py-name" href="#" onclick="return doclink('link-22', 'CONNECTED', 'link-22');">CONNECTED</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'CONNECTED'</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt id="link-23" class="py-name" targets="Variable nbxmpp.transports_nb.STATES=nbxmpp.transports_nb-module.html#STATES"><a title="nbxmpp.transports_nb.STATES" class="py-name" href="#" onclick="return doclink('link-23', 'STATES', 'link-23');">STATES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-24', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt><tt class="py-op">,</tt> <tt id="link-25" class="py-name"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-25', 'CONNECTING', 'link-20');">CONNECTING</a></tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name"><a title="nbxmpp.transports_nb.PROXY_CONNECTING" class="py-name" href="#" onclick="return doclink('link-26', 'PROXY_CONNECTING', 'link-21');">PROXY_CONNECTING</a></tt><tt class="py-op">,</tt> <tt id="link-27" class="py-name"><a title="nbxmpp.transports_nb.CONNECTED" class="py-name" href="#" onclick="return doclink('link-27', 'CONNECTED', 'link-22');">CONNECTED</a></tt><tt class="py-op">,</tt> <tt id="link-28" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTING" class="py-name" href="#" onclick="return doclink('link-28', 'DISCONNECTING', 'link-19');">DISCONNECTING</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport"></a><div id="NonBlockingTransport-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="NonBlockingTransport-toggle" onclick="return toggle('NonBlockingTransport');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a><tt class="py-op">(</tt><tt class="py-base-class">PlugIn</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingTransport-expanded"><a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> Abstract class representing a transport</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> Subclasses CAN have different constructor signature but connect method SHOULD</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> be the same.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.__init__"></a><div id="NonBlockingTransport.__init__-def"><a name="L111"></a><tt class="py-lineno">111</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.__init__-toggle" onclick="return toggle('NonBlockingTransport.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">raise_event</tt><tt class="py-op">,</tt> <tt class="py-param">on_disconnect</tt><tt class="py-op">,</tt> <tt class="py-param">idlequeue</tt><tt class="py-op">,</tt> <tt class="py-param">estabilish_tls</tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-param">certs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.__init__-expanded"><a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> Each trasport class can have different constructor but it has to have at</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> least all the arguments of NonBlockingTransport constructor</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> :param raise_event: callback for monitoring of sent and received data</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> :param on_disconnect: callback called on disconnection during runtime</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> :param idlequeue: processing idlequeue</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"> :param estabilish_tls: boolean whether to estabilish TLS connection after</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> TCP connection is done</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> :param certs: tuple of (cacerts, mycerts) see constructor of</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> tls_nb.NonBlockingTLS for more details</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-29', 'PlugIn', 'link-3');">PlugIn</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method nbxmpp.auth_nb.NonBlockingBind.__init__()=nbxmpp.auth_nb.NonBlockingBind-class.html#__init__,Method nbxmpp.auth_nb.NonBlockingNonSASL.__init__()=nbxmpp.auth_nb.NonBlockingNonSASL-class.html#__init__,Method nbxmpp.auth_nb.SASL.__init__()=nbxmpp.auth_nb.SASL-class.html#__init__,Method nbxmpp.bosh.AckChecker.__init__()=nbxmpp.bosh.AckChecker-class.html#__init__,Method nbxmpp.bosh.KeyStack.__init__()=nbxmpp.bosh.KeyStack-class.html#__init__,Method nbxmpp.bosh.NonBlockingBOSH.__init__()=nbxmpp.bosh.NonBlockingBOSH-class.html#__init__,Method nbxmpp.client_nb.NonBlockingClient.__init__()=nbxmpp.client_nb.NonBlockingClient-class.html#__init__,Method nbxmpp.dispatcher_nb.XMPPDispatcher.__init__()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#__init__,Method nbxmpp.idlequeue.IdleCommand.__init__()=nbxmpp.idlequeue.IdleCommand-class.html#__init__,Method nbxmpp.idlequeue.IdleObject.__init__()=nbxmpp.idlequeue.IdleObject-class.html#__init__,Method nbxmpp.idlequeue.IdleQueue.__init__()=nbxmpp.idlequeue.IdleQueue-class.html#__init__,Method nbxmpp.plugin.PlugIn.__init__()=nbxmpp.plugin.PlugIn-class.html#__init__,Method nbxmpp.protocol.Acks.__init__()=nbxmpp.protocol.Acks-class.html#__init__,Method nbxmpp.protocol.BOSHBody.__init__()=nbxmpp.protocol.BOSHBody-class.html#__init__,Method nbxmpp.protocol.DataField.__init__()=nbxmpp.protocol.DataField-class.html#__init__,Method nbxmpp.protocol.DataForm.__init__()=nbxmpp.protocol.DataForm-class.html#__init__,Method nbxmpp.protocol.Error.__init__()=nbxmpp.protocol.Error-class.html#__init__,Method nbxmpp.protocol.ErrorNode.__init__()=nbxmpp.protocol.ErrorNode-class.html#__init__,Method nbxmpp.protocol.Hashes.__init__()=nbxmpp.protocol.Hashes-class.html#__init__,Method nbxmpp.protocol.Iq.__init__()=nbxmpp.protocol.Iq-class.html#__init__,Method nbxmpp.protocol.JID.__init__()=nbxmpp.protocol.JID-class.html#__init__,Method nbxmpp.protocol.Message.__init__()=nbxmpp.protocol.Message-class.html#__init__,Method nbxmpp.protocol.Presence.__init__()=nbxmpp.protocol.Presence-class.html#__init__,Method nbxmpp.protocol.Protocol.__init__()=nbxmpp.protocol.Protocol-class.html#__init__,Method nbxmpp.proxy_connectors.ProxyConnector.__init__()=nbxmpp.proxy_connectors.ProxyConnector-class.html#__init__,Method nbxmpp.roster_nb.NonBlockingRoster.__init__()=nbxmpp.roster_nb.NonBlockingRoster-class.html#__init__,Method nbxmpp.simplexml.Node.__init__()=nbxmpp.simplexml.Node-class.html#__init__,Method nbxmpp.simplexml.NodeBuilder.__init__()=nbxmpp.simplexml.NodeBuilder-class.html#__init__,Method nbxmpp.simplexml.T.__init__()=nbxmpp.simplexml.T-class.html#__init__,Method nbxmpp.smacks.Smacks.__init__()=nbxmpp.smacks.Smacks-class.html#__init__,Method nbxmpp.stringprepare.EmptyMappingTable.__init__()=nbxmpp.stringprepare.EmptyMappingTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTable.__init__()=nbxmpp.stringprepare.LookupTable-class.html#__init__,Method nbxmpp.stringprepare.LookupTableFromFunction.__init__()=nbxmpp.stringprepare.LookupTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.MappingTableFromFunction.__init__()=nbxmpp.stringprepare.MappingTableFromFunction-class.html#__init__,Method nbxmpp.stringprepare.Profile.__init__()=nbxmpp.stringprepare.Profile-class.html#__init__,Method nbxmpp.tls_nb.NonBlockingTLS.__init__()=nbxmpp.tls_nb.NonBlockingTLS-class.html#__init__,Method nbxmpp.tls_nb.PyOpenSSLWrapper.__init__()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.Error.__init__()=nbxmpp.tls_nb.SSLWrapper.Error-class.html#__init__,Method nbxmpp.tls_nb.SSLWrapper.__init__()=nbxmpp.tls_nb.SSLWrapper-class.html#__init__,Method nbxmpp.tls_nb.StdlibSSLWrapper.__init__()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingHTTP.__init__()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTCP.__init__()=nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__,Method nbxmpp.transports_nb.NonBlockingTransport.__init__()=nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-30', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method nbxmpp.client_nb.NonBlockingClient.raise_event()=nbxmpp.client_nb.NonBlockingClient-class.html#raise_event"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-31', 'raise_event', 'link-31');">raise_event</a></tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-32', 'raise_event', 'link-31');">raise_event</a></tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_disconnect</tt> <tt class="py-op">=</tt> <tt class="py-name">on_disconnect</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-33', 'idlequeue', 'link-4');">idlequeue</a></tt> <tt class="py-op">=</tt> <tt id="link-34" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-34', 'idlequeue', 'link-4');">idlequeue</a></tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">conn_5tuple</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.set_state()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_state" class="py-name" href="#" onclick="return doclink('link-35', 'set_state', 'link-35');">set_state</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-36', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">estabilish_tls</tt> <tt class="py-op">=</tt> <tt class="py-name">estabilish_tls</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">certs</tt> <tt class="py-op">=</tt> <tt class="py-name">certs</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-comment"># type of used ssl lib (if any) will be assigned to this member var</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_exported_methods</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-37', 'onreceive', 'link-37');">onreceive</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout" class="py-name" href="#" onclick="return doclink('link-38', 'set_send_timeout', 'link-38');">set_send_timeout</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2" class="py-name" href="#" onclick="return doclink('link-39', 'set_send_timeout2', 'link-39');">set_send_timeout2</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.set_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.set_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.set_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout" class="py-name" href="#" onclick="return doclink('link-40', 'set_timeout', 'link-40');">set_timeout</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.remove_timeout()=nbxmpp.idlequeue.IdleQueue-class.html#remove_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.remove_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.remove_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-41', 'remove_timeout', 'link-41');">remove_timeout</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.start_disconnect()=nbxmpp.bosh.NonBlockingBOSH-class.html#start_disconnect,Method nbxmpp.transports_nb.NonBlockingTCP.start_disconnect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect,Method nbxmpp.transports_nb.NonBlockingTransport.start_disconnect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect"><a title="nbxmpp.bosh.NonBlockingBOSH.start_disconnect
+nbxmpp.transports_nb.NonBlockingTCP.start_disconnect
+nbxmpp.transports_nb.NonBlockingTransport.start_disconnect" class="py-name" href="#" onclick="return doclink('link-42', 'start_disconnect', 'link-42');">start_disconnect</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-comment"># time to wait for SOME stanza to come and then send keepalive</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-comment"># in case we want to something different than sending keepalives</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout2</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.plugin"></a><div id="NonBlockingTransport.plugin-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.plugin-toggle" onclick="return toggle('NonBlockingTransport.plugin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin">plugin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.plugin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.plugin-expanded"><a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+</div><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.plugout"></a><div id="NonBlockingTransport.plugout-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.plugout-toggle" onclick="return toggle('NonBlockingTransport.plugout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout">plugout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.plugout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.plugout-expanded"><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.disconnect()=nbxmpp.bosh.NonBlockingBOSH-class.html#disconnect,Method nbxmpp.client_nb.NonBlockingClient.disconnect()=nbxmpp.client_nb.NonBlockingClient-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTCP.disconnect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect,Method nbxmpp.transports_nb.NonBlockingTransport.disconnect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-43', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.connect"></a><div id="NonBlockingTransport.connect-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.connect-toggle" onclick="return toggle('NonBlockingTransport.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">conn_5tuple</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect_failure</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.connect-expanded"><a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> Creates and connects transport to server and port defined in conn_5tuple</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> which should be item from list returned from getaddrinfo</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> :param conn_5tuple: 5-tuple returned from getaddrinfo</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> :param on_connect: callback called on successful connect to the server</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> :param on_connect_failure: callback called on failure when connecting</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect</tt> <tt class="py-op">=</tt> <tt class="py-name">on_connect</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect_failure</tt> <tt class="py-op">=</tt> <tt class="py-name">on_connect_failure</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">conn_5tuple</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">conn_5tuple</tt> <tt class="py-op">=</tt> <tt class="py-name">conn_5tuple</tt> </tt>
+</div><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.set_state"></a><div id="NonBlockingTransport.set_state-def"><a name="L173"></a><tt class="py-lineno">173</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.set_state-toggle" onclick="return toggle('NonBlockingTransport.set_state');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state">set_state</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">newstate</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.set_state-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.set_state-expanded"><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-name">newstate</tt> <tt class="py-keyword">in</tt> <tt id="link-44" class="py-name"><a title="nbxmpp.transports_nb.STATES" class="py-name" href="#" onclick="return doclink('link-44', 'STATES', 'link-23');">STATES</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-name">newstate</tt> </tt>
+</div><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.get_state"></a><div id="NonBlockingTransport.get_state-def"><a name="L177"></a><tt class="py-lineno">177</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.get_state-toggle" onclick="return toggle('NonBlockingTransport.get_state');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state">get_state</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.get_state-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.get_state-expanded"><a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">state</tt> </tt>
+</div><a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport._on_connect"></a><div id="NonBlockingTransport._on_connect-def"><a name="L180"></a><tt class="py-lineno">180</tt> <a class="py-toggle" href="#" id="NonBlockingTransport._on_connect-toggle" onclick="return toggle('NonBlockingTransport._on_connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect">_on_connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport._on_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport._on_connect-expanded"><a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> Preceeds call of on_connect callback</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-comment"># data is reference to socket wrapper instance. We don't need it in client</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-comment"># because</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_state" class="py-name" href="#" onclick="return doclink('link-45', 'set_state', 'link-35');">set_state</a></tt><tt class="py-op">(</tt><tt id="link-46" class="py-name"><a title="nbxmpp.transports_nb.CONNECTED" class="py-name" href="#" onclick="return doclink('link-46', 'CONNECTED', 'link-22');">CONNECTED</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport._on_connect_failure"></a><div id="NonBlockingTransport._on_connect_failure-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="NonBlockingTransport._on_connect_failure-toggle" onclick="return toggle('NonBlockingTransport._on_connect_failure');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure">_on_connect_failure</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">err_message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport._on_connect_failure-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport._on_connect_failure-expanded"><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> Preceeds call of on_connect_failure callback</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-comment"># In case of error while connecting we need to disconnect transport</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-comment"># but we don't want to call DisconnectHandlers from client,</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-comment"># thus the do_callback=False</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-47', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_connect_failure</tt><tt class="py-op">(</tt><tt class="py-name">err_message</tt><tt class="py-op">=</tt><tt class="py-name">err_message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.send"></a><div id="NonBlockingTransport.send-def"><a name="L199"></a><tt class="py-lineno">199</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.send-toggle" onclick="return toggle('NonBlockingTransport.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">raw_data</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.send-expanded"><a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.get_state()=nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-48', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-49" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-49', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt id="link-50" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-50', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Unable to send %s \n because state is %s.'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">raw_data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-51', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.disconnect"></a><div id="NonBlockingTransport.disconnect-def"><a name="L204"></a><tt class="py-lineno">204</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.disconnect-toggle" onclick="return toggle('NonBlockingTransport.disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect">disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.disconnect-expanded"><a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_state" class="py-name" href="#" onclick="return doclink('link-52', 'set_state', 'link-35');">set_state</a></tt><tt class="py-op">(</tt><tt id="link-53" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-53', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">do_callback</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-comment"># invoke callback given in __init__</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_disconnect</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.onreceive"></a><div id="NonBlockingTransport.onreceive-def"><a name="L210"></a><tt class="py-lineno">210</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.onreceive-toggle" onclick="return toggle('NonBlockingTransport.onreceive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive">onreceive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">recv_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.onreceive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.onreceive-expanded"><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> Set the on_receive callback.</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"> onreceive(None) sets callback to Dispatcher.ProcessNonBlocking which is</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> the default one that will decide what to do with received stanza based on</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"> its tag name and namespace.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> Do not confuse it with on_receive() method, which is the callback</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> itself.</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">recv_handler</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_owner'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> <tt class="py-string">'Dispatcher'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Class nbxmpp.dispatcher_nb.Dispatcher=nbxmpp.dispatcher_nb.Dispatcher-class.html"><a title="nbxmpp.dispatcher_nb.Dispatcher" class="py-name" href="#" onclick="return doclink('link-54', 'Dispatcher', 'link-54');">Dispatcher</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking,Method nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-55', 'ProcessNonBlocking', 'link-55');">ProcessNonBlocking</a></tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt id="link-56" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-56', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'No Dispatcher plugged. Received data will not be processed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt> <tt class="py-op">=</tt> <tt class="py-name">recv_handler</tt> </tt>
+</div><a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport._tcp_connecting_started"></a><div id="NonBlockingTransport._tcp_connecting_started-def"><a name="L230"></a><tt class="py-lineno">230</tt> <a class="py-toggle" href="#" id="NonBlockingTransport._tcp_connecting_started-toggle" onclick="return toggle('NonBlockingTransport._tcp_connecting_started');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started">_tcp_connecting_started</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport._tcp_connecting_started-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport._tcp_connecting_started-expanded"><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_state" class="py-name" href="#" onclick="return doclink('link-57', 'set_state', 'link-35');">set_state</a></tt><tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-58', 'CONNECTING', 'link-20');">CONNECTING</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.read_timeout"></a><div id="NonBlockingTransport.read_timeout-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.read_timeout-toggle" onclick="return toggle('NonBlockingTransport.read_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout">read_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.read_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.read_timeout-expanded"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> Called when there's no response from server in defined timeout</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout</tt><tt class="py-op">:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout"><a title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout" class="py-name" href="#" onclick="return doclink('link-59', 'renew_send_timeout', 'link-59');">renew_send_timeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.read_timeout2"></a><div id="NonBlockingTransport.read_timeout2-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.read_timeout2-toggle" onclick="return toggle('NonBlockingTransport.read_timeout2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2">read_timeout2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.read_timeout2-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.read_timeout2-expanded"><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> called when there's no response from server in defined timeout</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout2</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout2</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2()=nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2"><a title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2" class="py-name" href="#" onclick="return doclink('link-60', 'renew_send_timeout2', 'link-60');">renew_send_timeout2</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.renew_send_timeout"></a><div id="NonBlockingTransport.renew_send_timeout-def"><a name="L249"></a><tt class="py-lineno">249</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.renew_send_timeout-toggle" onclick="return toggle('NonBlockingTransport.renew_send_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout">renew_send_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.renew_send_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.renew_send_timeout-expanded"><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout" class="py-name" href="#" onclick="return doclink('link-61', 'set_timeout', 'link-40');">set_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.renew_send_timeout2"></a><div id="NonBlockingTransport.renew_send_timeout2-def"><a name="L253"></a><tt class="py-lineno">253</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.renew_send_timeout2-toggle" onclick="return toggle('NonBlockingTransport.renew_send_timeout2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2">renew_send_timeout2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.renew_send_timeout2-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.renew_send_timeout2-expanded"><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout2</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout2</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.set_timeout2()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_timeout2" class="py-name" href="#" onclick="return doclink('link-62', 'set_timeout2', 'link-62');">set_timeout2</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout2</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.set_timeout"></a><div id="NonBlockingTransport.set_timeout-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.set_timeout-toggle" onclick="return toggle('NonBlockingTransport.set_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout">set_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.set_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.set_timeout-expanded"><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-63', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.set_read_timeout()=nbxmpp.idlequeue.IdleQueue-class.html#set_read_timeout"><a title="nbxmpp.idlequeue.IdleQueue.set_read_timeout" class="py-name" href="#" onclick="return doclink('link-64', 'set_read_timeout', 'link-64');">set_read_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.set_timeout2"></a><div id="NonBlockingTransport.set_timeout2-def"><a name="L260"></a><tt class="py-lineno">260</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.set_timeout2-toggle" onclick="return toggle('NonBlockingTransport.set_timeout2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2">set_timeout2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.set_timeout2-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.set_timeout2-expanded"><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-65', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.set_read_timeout" class="py-name" href="#" onclick="return doclink('link-66', 'set_read_timeout', 'link-64');">set_read_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">timeout2</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport.read_timeout2()=nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2"><a title="nbxmpp.transports_nb.NonBlockingTransport.read_timeout2" class="py-name" href="#" onclick="return doclink('link-67', 'read_timeout2', 'link-67');">read_timeout2</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.get_fd"></a><div id="NonBlockingTransport.get_fd-def"><a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.get_fd-toggle" onclick="return toggle('NonBlockingTransport.get_fd');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd">get_fd</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.get_fd-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.get_fd-expanded"><a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.remove_timeout"></a><div id="NonBlockingTransport.remove_timeout-def"><a name="L266"></a><tt class="py-lineno">266</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.remove_timeout-toggle" onclick="return toggle('NonBlockingTransport.remove_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout">remove_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.remove_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.remove_timeout-expanded"><a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-68', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-69', 'remove_timeout', 'link-41');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.set_send_timeout"></a><div id="NonBlockingTransport.set_send_timeout-def"><a name="L269"></a><tt class="py-lineno">269</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.set_send_timeout-toggle" onclick="return toggle('NonBlockingTransport.set_send_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout">set_send_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">on_timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.set_send_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.set_send_timeout-expanded"><a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout</tt> <tt class="py-op">=</tt> <tt class="py-name">timeout</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">on_timeout</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTransport.set_send_timeout2"></a><div id="NonBlockingTransport.set_send_timeout2-def"><a name="L276"></a><tt class="py-lineno">276</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.set_send_timeout2-toggle" onclick="return toggle('NonBlockingTransport.set_send_timeout2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2">set_send_timeout2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout2</tt><tt class="py-op">,</tt> <tt class="py-param">on_timeout2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.set_send_timeout2-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.set_send_timeout2-expanded"><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout2</tt> <tt class="py-op">=</tt> <tt class="py-name">timeout2</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendtimeout2</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout2</tt> <tt class="py-op">=</tt> <tt class="py-name">on_timeout2</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_timeout2</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: where and why does this need to be called</tt> </tt>
+<a name="NonBlockingTransport.start_disconnect"></a><div id="NonBlockingTransport.start_disconnect-def"><a name="L284"></a><tt class="py-lineno">284</tt> <a class="py-toggle" href="#" id="NonBlockingTransport.start_disconnect-toggle" onclick="return toggle('NonBlockingTransport.start_disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect">start_disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTransport.start_disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTransport.start_disconnect-expanded"><a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_state" class="py-name" href="#" onclick="return doclink('link-70', 'set_state', 'link-35');">set_state</a></tt><tt class="py-op">(</tt><tt id="link-71" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTING" class="py-name" href="#" onclick="return doclink('link-71', 'DISCONNECTING', 'link-19');">DISCONNECTING</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP"></a><div id="NonBlockingTCP-def"><a name="L288"></a><tt class="py-lineno">288</tt> <a class="py-toggle" href="#" id="NonBlockingTCP-toggle" onclick="return toggle('NonBlockingTCP');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a><tt class="py-op">(</tt><tt class="py-base-class">NonBlockingTransport</tt><tt class="py-op">,</tt> <tt class="py-base-class">IdleObject</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingTCP-expanded"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> Non-blocking TCP socket wrapper</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> It is used for simple XMPP connection. Can be connected via proxy and can</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> estabilish TLS connection.</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="NonBlockingTCP.__init__"></a><div id="NonBlockingTCP.__init__-def"><a name="L295"></a><tt class="py-lineno">295</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.__init__-toggle" onclick="return toggle('NonBlockingTCP.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">raise_event</tt><tt class="py-op">,</tt> <tt class="py-param">on_disconnect</tt><tt class="py-op">,</tt> <tt class="py-param">idlequeue</tt><tt class="py-op">,</tt> <tt class="py-param">estabilish_tls</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-param">certs</tt><tt class="py-op">,</tt> <tt class="py-param">proxy_dict</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.__init__-expanded"><a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> :param proxy_dict: dictionary with proxy data as loaded from config file</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt id="link-72" class="py-name" targets="Class nbxmpp.transports_nb.NonBlockingTransport=nbxmpp.transports_nb.NonBlockingTransport-class.html"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-72', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-73', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-74', 'raise_event', 'link-31');">raise_event</a></tt><tt class="py-op">,</tt> <tt class="py-name">on_disconnect</tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-75', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">estabilish_tls</tt><tt class="py-op">,</tt> <tt class="py-name">certs</tt><tt class="py-op">)</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="nbxmpp.idlequeue.IdleObject" class="py-name" href="#" onclick="return doclink('link-76', 'IdleObject', 'link-5');">IdleObject</a></tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-77', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-comment"># queue with messages to be send</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendqueue</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-comment"># bytes remained from the last send message</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">proxy_dict</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_remote_disconnect</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-78', 'disconnect', 'link-43');">disconnect</a></tt> </tt>
+</div><a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: transport should not be aware xmpp</tt> </tt>
+<a name="NonBlockingTCP.start_disconnect"></a><div id="NonBlockingTCP.start_disconnect-def"><a name="L314"></a><tt class="py-lineno">314</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.start_disconnect-toggle" onclick="return toggle('NonBlockingTCP.start_disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect">start_disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.start_disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.start_disconnect-expanded"><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt id="link-79" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-79', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.start_disconnect
+nbxmpp.transports_nb.NonBlockingTCP.start_disconnect
+nbxmpp.transports_nb.NonBlockingTransport.start_disconnect" class="py-name" href="#" onclick="return doclink('link-80', 'start_disconnect', 'link-42');">start_disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send()=nbxmpp.bosh.NonBlockingBOSH-class.html#send,Method nbxmpp.dispatcher_nb.XMPPDispatcher.send()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send,Method nbxmpp.tls_nb.PyOpenSSLWrapper.send()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#send,Method nbxmpp.tls_nb.SSLWrapper.send()=nbxmpp.tls_nb.SSLWrapper-class.html#send,Method nbxmpp.tls_nb.StdlibSSLWrapper.send()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#send,Method nbxmpp.transports_nb.NonBlockingTCP.send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#send,Method nbxmpp.transports_nb.NonBlockingTransport.send()=nbxmpp.transports_nb.NonBlockingTransport-class.html#send"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-81', 'send', 'link-81');">send</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;/stream:stream&gt;'</tt><tt class="py-op">,</tt> <tt class="py-name">now</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-82', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.connect"></a><div id="NonBlockingTCP.connect-def"><a name="L319"></a><tt class="py-lineno">319</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.connect-toggle" onclick="return toggle('NonBlockingTCP.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">conn_5tuple</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect</tt><tt class="py-op">,</tt> <tt class="py-param">on_connect_failure</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.connect-expanded"><a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt id="link-83" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-83', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.connect()=nbxmpp.bosh.NonBlockingBOSH-class.html#connect,Method nbxmpp.client_nb.NonBlockingClient.connect()=nbxmpp.client_nb.NonBlockingClient-class.html#connect,Method nbxmpp.transports_nb.NonBlockingTCP.connect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#connect,Method nbxmpp.transports_nb.NonBlockingTransport.connect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#connect"><a title="nbxmpp.bosh.NonBlockingBOSH.connect
+nbxmpp.client_nb.NonBlockingClient.connect
+nbxmpp.transports_nb.NonBlockingTCP.connect
+nbxmpp.transports_nb.NonBlockingTransport.connect" class="py-name" href="#" onclick="return doclink('link-84', 'connect', 'link-84');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">conn_5tuple</tt><tt class="py-op">,</tt> <tt class="py-name">on_connect</tt><tt class="py-op">,</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">on_connect_failure</tt><tt class="py-op">)</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt id="link-85" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-85', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'NonBlockingTCP Connect :: About to connect to %s:%s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">conn_5tuple</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure()=nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure"><a title="nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure" class="py-name" href="#" onclick="return doclink('link-86', '_on_connect_failure', 'link-86');">_on_connect_failure</a></tt><tt class="py-op">(</tt><tt class="py-string">'NonBlockingTCP Connect: Error while creating\</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-string"> socket: %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-87', 'send', 'link-81');">send</a></tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_recv</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name" targets="Method nbxmpp.tls_nb.PyOpenSSLWrapper.recv()=nbxmpp.tls_nb.PyOpenSSLWrapper-class.html#recv,Method nbxmpp.tls_nb.SSLWrapper.recv()=nbxmpp.tls_nb.SSLWrapper-class.html#recv,Method nbxmpp.tls_nb.StdlibSSLWrapper.recv()=nbxmpp.tls_nb.StdlibSSLWrapper-class.html#recv"><a title="nbxmpp.tls_nb.PyOpenSSLWrapper.recv
+nbxmpp.tls_nb.SSLWrapper.recv
+nbxmpp.tls_nb.StdlibSSLWrapper.recv" class="py-name" href="#" onclick="return doclink('link-88', 'recv', 'link-88');">recv</a></tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-comment"># we want to be notified when send is possible to connected socket because</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-comment"># it means the TCP connection is estabilished</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTCP._plug_idle()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle"><a title="nbxmpp.transports_nb.NonBlockingTCP._plug_idle" class="py-name" href="#" onclick="return doclink('link-89', '_plug_idle', 'link-89');">_plug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">writable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">readable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peerhost</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-comment"># variable for errno symbol that will be found from exception raised</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-comment"># from connect()</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-name">errnum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-name">errstr</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-comment"># set timeout for TCP connecting - if nonblocking connect() fails, pollend</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-comment"># is called. If if succeeds pollout is called.</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-90', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.set_read_timeout" class="py-name" href="#" onclick="return doclink('link-91', 'set_read_timeout', 'link-64');">set_read_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt id="link-92" class="py-name"><a title="nbxmpp.transports_nb.CONNECT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-92', 'CONNECT_TIMEOUT_SECONDS', 'link-12');">CONNECT_TIMEOUT_SECONDS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.connect
+nbxmpp.client_nb.NonBlockingClient.connect
+nbxmpp.transports_nb.NonBlockingTCP.connect
+nbxmpp.transports_nb.NonBlockingTransport.connect" class="py-name" href="#" onclick="return doclink('link-93', 'connect', 'link-84');">connect</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt> <tt class="py-op">=</tt> <tt class="py-name">exc</tt><tt class="py-op">.</tt><tt class="py-name">args</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">errnum</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EINPROGRESS</tt><tt class="py-op">,</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EALREADY</tt><tt class="py-op">,</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EWOULDBLOCK</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-comment"># connecting in progress</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt id="link-94" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-94', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'After NB connect() of %s. "%s" raised =&gt; CONNECTING'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started()=nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started"><a title="nbxmpp.transports_nb.NonBlockingTransport._tcp_connecting_started" class="py-name" href="#" onclick="return doclink('link-95', '_tcp_connecting_started', 'link-95');">_tcp_connecting_started</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-comment"># if there was some other exception, call failure callback and unplug</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-comment"># transport which will also remove read_timeouts for descriptor</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure" class="py-name" href="#" onclick="return doclink('link-96', '_on_connect_failure', 'link-86');">_on_connect_failure</a></tt><tt class="py-op">(</tt><tt class="py-string">'Exception while connecting to %s:%s - %s %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">,</tt> <tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP._connect_to_proxy"></a><div id="NonBlockingTCP._connect_to_proxy-def"><a name="L368"></a><tt class="py-lineno">368</tt> <a class="py-toggle" href="#" id="NonBlockingTCP._connect_to_proxy-toggle" onclick="return toggle('NonBlockingTCP._connect_to_proxy');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy">_connect_to_proxy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP._connect_to_proxy-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP._connect_to_proxy-expanded"><a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_state" class="py-name" href="#" onclick="return doclink('link-97', 'set_state', 'link-35');">set_state</a></tt><tt class="py-op">(</tt><tt id="link-98" class="py-name"><a title="nbxmpp.transports_nb.PROXY_CONNECTING" class="py-name" href="#" onclick="return doclink('link-98', 'PROXY_CONNECTING', 'link-21');">PROXY_CONNECTING</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'socks5'</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">proxyclass</tt> <tt class="py-op">=</tt> <tt id="link-99" class="py-name"><a title="nbxmpp.proxy_connectors" class="py-name" href="#" onclick="return doclink('link-99', 'proxy_connectors', 'link-6');">proxy_connectors</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Class nbxmpp.proxy_connectors.SOCKS5Connector=nbxmpp.proxy_connectors.SOCKS5Connector-class.html"><a title="nbxmpp.proxy_connectors.SOCKS5Connector" class="py-name" href="#" onclick="return doclink('link-100', 'SOCKS5Connector', 'link-100');">SOCKS5Connector</a></tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'type'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'http'</tt> <tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">proxyclass</tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="nbxmpp.proxy_connectors" class="py-name" href="#" onclick="return doclink('link-101', 'proxy_connectors', 'link-6');">proxy_connectors</a></tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Class nbxmpp.proxy_connectors.HTTPCONNECTConnector=nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html"><a title="nbxmpp.proxy_connectors.HTTPCONNECTConnector" class="py-name" href="#" onclick="return doclink('link-102', 'HTTPCONNECTConnector', 'link-102');">HTTPCONNECTConnector</a></tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">proxyclass</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Class Method nbxmpp.dispatcher_nb.Dispatcher.get_instance()=nbxmpp.dispatcher_nb.Dispatcher-class.html#get_instance,Class Method nbxmpp.plugin.PlugIn.get_instance()=nbxmpp.plugin.PlugIn-class.html#get_instance,Class Method nbxmpp.proxy_connectors.ProxyConnector.get_instance()=nbxmpp.proxy_connectors.ProxyConnector-class.html#get_instance"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-103', 'get_instance', 'link-103');">get_instance</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-name">send_method</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-104', 'send', 'link-81');">send</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt id="link-105" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-105', 'onreceive', 'link-37');">onreceive</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-106', 'onreceive', 'link-37');">onreceive</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">old_on_receive</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt><tt class="py-op">,</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">on_success</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH._on_connect()=nbxmpp.bosh.NonBlockingBOSH-class.html#_on_connect,Method nbxmpp.client_nb.NonBlockingClient._on_connect()=nbxmpp.client_nb.NonBlockingClient-class.html#_on_connect,Method nbxmpp.transports_nb.NonBlockingTCP._on_connect()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect,Method nbxmpp.transports_nb.NonBlockingTransport._on_connect()=nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-107', '_on_connect', 'link-107');">_on_connect</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">on_failure</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure" class="py-name" href="#" onclick="return doclink('link-108', '_on_connect_failure', 'link-86');">_on_connect_failure</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-name">xmpp_server</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'xmpp_server'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-name">proxy_creds</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">[</tt><tt class="py-string">'credentials'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP._on_connect"></a><div id="NonBlockingTCP._on_connect-def"><a name="L383"></a><tt class="py-lineno">383</tt> <a class="py-toggle" href="#" id="NonBlockingTCP._on_connect-toggle" onclick="return toggle('NonBlockingTCP._on_connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect">_on_connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP._on_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP._on_connect-expanded"><a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> Preceed invoking of on_connect callback. TCP connection is already</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"> estabilished by this time</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">estabilish_tls</tt><tt class="py-op">:</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTCP.tls_init()=nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init"><a title="nbxmpp.transports_nb.NonBlockingTCP.tls_init" class="py-name" href="#" onclick="return doclink('link-109', 'tls_init', 'link-109');">tls_init</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">on_succ</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt><tt class="py-op">:</tt> <tt id="link-110" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-110', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-111', '_on_connect', 'link-107');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">on_fail</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure" class="py-name" href="#" onclick="return doclink('link-112', '_on_connect_failure', 'link-86');">_on_connect_failure</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-string">'error while estabilishing TLS'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt id="link-113" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-113', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-114', '_on_connect', 'link-107');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.tls_init"></a><div id="NonBlockingTCP.tls_init-def"><a name="L396"></a><tt class="py-lineno">396</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.tls_init-toggle" onclick="return toggle('NonBlockingTCP.tls_init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init">tls_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">on_succ</tt><tt class="py-op">,</tt> <tt class="py-param">on_fail</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.tls_init-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.tls_init-expanded"><a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> Estabilishes TLS/SSL using this TCP connection by plugging a</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"> NonBlockingTLS module</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-name">cacerts</tt><tt class="py-op">,</tt> <tt class="py-name">mycerts</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">certs</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="nbxmpp.tls_nb" class="py-name" href="#" onclick="return doclink('link-115', 'tls_nb', 'link-7');">tls_nb</a></tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Class nbxmpp.tls_nb.NonBlockingTLS=nbxmpp.tls_nb.NonBlockingTLS-class.html"><a title="nbxmpp.tls_nb.NonBlockingTLS" class="py-name" href="#" onclick="return doclink('link-116', 'NonBlockingTLS', 'link-116');">NonBlockingTLS</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="nbxmpp.dispatcher_nb.Dispatcher.get_instance
+nbxmpp.plugin.PlugIn.get_instance
+nbxmpp.proxy_connectors.ProxyConnector.get_instance" class="py-name" href="#" onclick="return doclink('link-117', 'get_instance', 'link-103');">get_instance</a></tt><tt class="py-op">(</tt><tt class="py-name">cacerts</tt><tt class="py-op">,</tt> <tt class="py-name">mycerts</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.dispatcher_nb.Dispatcher.PlugIn
+nbxmpp.plugin.PlugIn
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-118', 'PlugIn', 'link-3');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">on_succ</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">on_fail</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.pollin"></a><div id="NonBlockingTCP.pollin-def"><a name="L408"></a><tt class="py-lineno">408</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.pollin-toggle" onclick="return toggle('NonBlockingTCP.pollin');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin">pollin</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.pollin-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.pollin-expanded"><a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-docstring"> Called by idlequeu when receive on plugged socket is possible</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt id="link-119" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-119', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'pollin called, state == %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-120', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTCP._do_receive()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive"><a title="nbxmpp.transports_nb.NonBlockingTCP._do_receive" class="py-name" href="#" onclick="return doclink('link-121', '_do_receive', 'link-121');">_do_receive</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.pollout"></a><div id="NonBlockingTCP.pollout-def"><a name="L415"></a><tt class="py-lineno">415</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.pollout-toggle" onclick="return toggle('NonBlockingTCP.pollout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout">pollout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.pollout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.pollout-expanded"><a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"> Called by idlequeu when send to plugged socket is possible</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt id="link-122" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-122', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'pollout called, state == %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-123', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-124', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-125" class="py-name"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-125', 'CONNECTING', 'link-20');">CONNECTING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt id="link-126" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-126', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'%s socket wrapper connected'</tt> <tt class="py-op">%</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-127', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-128', 'remove_timeout', 'link-41');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP._plug_idle" class="py-name" href="#" onclick="return doclink('link-129', '_plug_idle', 'link-89');">_plug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">writable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">readable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">peerhost</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt class="py-name">getsockname</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_dict</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTCP._connect_to_proxy()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy"><a title="nbxmpp.transports_nb.NonBlockingTCP._connect_to_proxy" class="py-name" href="#" onclick="return doclink('link-130', '_connect_to_proxy', 'link-130');">_connect_to_proxy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH._on_connect
+nbxmpp.client_nb.NonBlockingClient._on_connect
+nbxmpp.transports_nb.NonBlockingTCP._on_connect
+nbxmpp.transports_nb.NonBlockingTransport._on_connect" class="py-name" href="#" onclick="return doclink('link-131', '_on_connect', 'link-107');">_on_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingHTTPBOSH._do_send()=nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#_do_send,Method nbxmpp.transports_nb.NonBlockingTCP._do_send()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send"><a title="nbxmpp.transports_nb.NonBlockingHTTPBOSH._do_send
+nbxmpp.transports_nb.NonBlockingTCP._do_send" class="py-name" href="#" onclick="return doclink('link-132', '_do_send', 'link-132');">_do_send</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.pollend"></a><div id="NonBlockingTCP.pollend-def"><a name="L433"></a><tt class="py-lineno">433</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.pollend-toggle" onclick="return toggle('NonBlockingTCP.pollend');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend">pollend</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.pollend-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.pollend-expanded"><a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"><tt class="py-docstring"> Called by idlequeue on TCP connection errors</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt id="link-133" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-133', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'pollend called, state == %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-134', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-135', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-136" class="py-name"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-136', 'CONNECTING', 'link-20');">CONNECTING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure" class="py-name" href="#" onclick="return doclink('link-137', '_on_connect_failure', 'link-86');">_on_connect_failure</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error during connect to %s:%s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-138', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.disconnect"></a><div id="NonBlockingTCP.disconnect-def"><a name="L445"></a><tt class="py-lineno">445</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.disconnect-toggle" onclick="return toggle('NonBlockingTCP.disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect">disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.disconnect-expanded"><a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-139', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-140" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-140', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.set_state" class="py-name" href="#" onclick="return doclink('link-141', 'set_state', 'link-35');">set_state</a></tt><tt class="py-op">(</tt><tt id="link-142" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-142', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-143', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.unplug_idle()=nbxmpp.idlequeue.IdleQueue-class.html#unplug_idle"><a title="nbxmpp.idlequeue.IdleQueue.unplug_idle" class="py-name" href="#" onclick="return doclink('link-144', 'unplug_idle', 'link-144');">unplug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'NonBlockingTLS'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="nbxmpp.tls_nb.NonBlockingTLS" class="py-name" href="#" onclick="return doclink('link-145', 'NonBlockingTLS', 'link-116');">NonBlockingTLS</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method nbxmpp.plugin.PlugIn.PlugOut()=nbxmpp.plugin.PlugIn-class.html#PlugOut"><a title="nbxmpp.plugin.PlugIn.PlugOut" class="py-name" href="#" onclick="return doclink('link-146', 'PlugOut', 'link-146');">PlugOut</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt class="py-name">shutdown</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SHUT_RDWR</tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sock</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt id="link-147" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-147', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Error while disconnecting socket: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt id="link-148" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-148', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-149', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">do_callback</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.read_timeout"></a><div id="NonBlockingTCP.read_timeout-def"><a name="L460"></a><tt class="py-lineno">460</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.read_timeout-toggle" onclick="return toggle('NonBlockingTCP.read_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout">read_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.read_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.read_timeout-expanded"><a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt id="link-150" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-150', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'read_timeout called, state == %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-151', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-152', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-153" class="py-name"><a title="nbxmpp.transports_nb.CONNECTING" class="py-name" href="#" onclick="return doclink('link-153', 'CONNECTING', 'link-20');">CONNECTING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-comment"># if read_timeout is called during connecting, connect() didn't end yet</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-comment"># thus we have to call the tcp failure callback</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport._on_connect_failure" class="py-name" href="#" onclick="return doclink('link-154', '_on_connect_failure', 'link-86');">_on_connect_failure</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error during connect to %s:%s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt id="link-155" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-155', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Method nbxmpp.idlequeue.IdleCommand.read_timeout()=nbxmpp.idlequeue.IdleCommand-class.html#read_timeout,Method nbxmpp.idlequeue.IdleObject.read_timeout()=nbxmpp.idlequeue.IdleObject-class.html#read_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.read_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.read_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout"><a title="nbxmpp.idlequeue.IdleCommand.read_timeout
+nbxmpp.idlequeue.IdleObject.read_timeout
+nbxmpp.transports_nb.NonBlockingTCP.read_timeout
+nbxmpp.transports_nb.NonBlockingTransport.read_timeout" class="py-name" href="#" onclick="return doclink('link-156', 'read_timeout', 'link-156');">read_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.set_timeout"></a><div id="NonBlockingTCP.set_timeout-def"><a name="L470"></a><tt class="py-lineno">470</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.set_timeout-toggle" onclick="return toggle('NonBlockingTCP.set_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout">set_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.set_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.set_timeout-expanded"><a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-157', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt id="link-158" class="py-name"><a title="nbxmpp.transports_nb.DISCONNECTED" class="py-name" href="#" onclick="return doclink('link-158', 'DISCONNECTED', 'link-18');">DISCONNECTED</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt id="link-159" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-159', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.set_timeout
+nbxmpp.transports_nb.NonBlockingTCP.set_timeout
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout" class="py-name" href="#" onclick="return doclink('link-160', 'set_timeout', 'link-40');">set_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt id="link-161" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-161', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'set_timeout: TIMEOUT NOT SET: state is %s, fd is %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-162', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.remove_timeout"></a><div id="NonBlockingTCP.remove_timeout-def"><a name="L477"></a><tt class="py-lineno">477</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.remove_timeout-toggle" onclick="return toggle('NonBlockingTCP.remove_timeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout">remove_timeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.remove_timeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.remove_timeout-expanded"><a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt id="link-163" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-163', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-164', 'remove_timeout', 'link-41');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt id="link-165" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-165', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'remove_timeout: no self.fd state is %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-166', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.send"></a><div id="NonBlockingTCP.send-def"><a name="L483"></a><tt class="py-lineno">483</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.send-toggle" onclick="return toggle('NonBlockingTCP.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">raw_data</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.send-expanded"><a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"><tt class="py-docstring"> Append raw_data to the queue of messages to be send. If supplied data is</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"><tt class="py-docstring"> unicode string, encode it to utf-8.</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt id="link-167" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport" class="py-name" href="#" onclick="return doclink('link-167', 'NonBlockingTransport', 'link-72');">NonBlockingTransport</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-168', 'send', 'link-81');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">raw_data</tt><tt class="py-op">,</tt> <tt class="py-name">now</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingTCP.encode_stanza()=nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza"><a title="nbxmpp.transports_nb.NonBlockingTCP.encode_stanza" class="py-name" href="#" onclick="return doclink('link-169', 'encode_stanza', 'link-169');">encode_stanza</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">now</tt><tt class="py-op">:</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendqueue</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">r</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingHTTPBOSH._do_send
+nbxmpp.transports_nb.NonBlockingTCP._do_send" class="py-name" href="#" onclick="return doclink('link-170', '_do_send', 'link-132');">_do_send</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendqueue</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">)</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP._plug_idle" class="py-name" href="#" onclick="return doclink('link-171', '_plug_idle', 'link-89');">_plug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">writable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">readable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP.encode_stanza"></a><div id="NonBlockingTCP.encode_stanza-def"><a name="L500"></a><tt class="py-lineno">500</tt> <a class="py-toggle" href="#" id="NonBlockingTCP.encode_stanza-toggle" onclick="return toggle('NonBlockingTCP.encode_stanza');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza">encode_stanza</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP.encode_stanza-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP.encode_stanza-expanded"><a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"><tt class="py-docstring"> Encode str or unicode to utf-8</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt id="link-172" class="py-name"><a title="nbxmpp.simplexml.ustr" class="py-name" href="#" onclick="return doclink('link-172', 'ustr', 'link-1');">ustr</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">stanza</tt> </tt>
+</div><a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP._plug_idle"></a><div id="NonBlockingTCP._plug_idle-def"><a name="L510"></a><tt class="py-lineno">510</tt> <a class="py-toggle" href="#" id="NonBlockingTCP._plug_idle-toggle" onclick="return toggle('NonBlockingTCP._plug_idle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle">_plug_idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">writable</tt><tt class="py-op">,</tt> <tt class="py-param">readable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP._plug_idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP._plug_idle-expanded"><a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"><tt class="py-docstring"> Plug file descriptor of socket to Idlequeue</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"><tt class="py-docstring"> Plugged socket will be watched for "send possible" or/and "recv possible"</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"><tt class="py-docstring"> events. pollin() callback is invoked on "recv possible", pollout() on</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"><tt class="py-docstring"> "send_possible".</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"><tt class="py-docstring"> Plugged socket will always be watched for "error" event - in that case,</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"><tt class="py-docstring"> pollend() is called.</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt id="link-173" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-173', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Plugging fd %d, W:%s, R:%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt class="py-name">writable</tt><tt class="py-op">,</tt> <tt class="py-name">readable</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-174', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Method nbxmpp.idlequeue.IdleQueue.plug_idle()=nbxmpp.idlequeue.IdleQueue-class.html#plug_idle"><a title="nbxmpp.idlequeue.IdleQueue.plug_idle" class="py-name" href="#" onclick="return doclink('link-175', 'plug_idle', 'link-175');">plug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">writable</tt><tt class="py-op">,</tt> <tt class="py-name">readable</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP._do_send"></a><div id="NonBlockingTCP._do_send-def"><a name="L524"></a><tt class="py-lineno">524</tt> <a class="py-toggle" href="#" id="NonBlockingTCP._do_send-toggle" onclick="return toggle('NonBlockingTCP._do_send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send">_do_send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP._do_send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP._do_send-expanded"><a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> Called when send() to connected socket is possible. First message from</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"> sendqueue will be sent</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt><tt class="py-op">:</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendqueue</tt><tt class="py-op">:</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt id="link-176" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-176', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'calling send on empty buffer and queue'</tt><tt class="py-op">)</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP._plug_idle" class="py-name" href="#" onclick="return doclink('link-177', '_plug_idle', 'link-89');">_plug_idle</a></tt><tt class="py-op">(</tt><tt class="py-name">writable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">readable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendqueue</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">send_count</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">send_count</tt><tt class="py-op">:</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-name">sent_data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">send_count</tt><tt class="py-op">]</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt><tt class="py-op">[</tt><tt class="py-name">send_count</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP._plug_idle" class="py-name" href="#" onclick="return doclink('link-178', '_plug_idle', 'link-89');">_plug_idle</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-name">writable</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendqueue</tt><tt class="py-op">!=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt><tt class="py-op">!=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-name">readable</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-179', 'raise_event', 'link-31');">raise_event</a></tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="nbxmpp.transports_nb.DATA_SENT" class="py-name" href="#" onclick="return doclink('link-180', 'DATA_SENT', 'link-16');">DATA_SENT</a></tt><tt class="py-op">,</tt> <tt class="py-name">sent_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt id="link-181" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-181', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'_do_send:'</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">print_exc</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-182', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP._do_receive"></a><div id="NonBlockingTCP._do_receive-def"><a name="L550"></a><tt class="py-lineno">550</tt> <a class="py-toggle" href="#" id="NonBlockingTCP._do_receive-toggle" onclick="return toggle('NonBlockingTCP._do_receive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive">_do_receive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP._do_receive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP._do_receive-expanded"><a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"><tt class="py-docstring"> Reads all pending incoming data. Will call owner's disconnected() method</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"><tt class="py-docstring"> if appropriate</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-name">received</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-name">errnum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">errstr</tt> <tt class="py-op">=</tt> <tt class="py-string">'No Error Set'</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> <tt class="py-comment"># get as many bites, as possible, but not more than RECV_BUFSIZE</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-name">received</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_recv</tt><tt class="py-op">(</tt><tt id="link-183" class="py-name"><a title="nbxmpp.transports_nb.RECV_BUFSIZE" class="py-name" href="#" onclick="return doclink('link-183', 'RECV_BUFSIZE', 'link-14');">RECV_BUFSIZE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt id="link-184" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-184', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"_do_receive: got %s:"</tt> <tt class="py-op">%</tt> <tt class="py-name">received</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-185" class="py-name"><a title="nbxmpp.tls_nb" class="py-name" href="#" onclick="return doclink('link-185', 'tls_nb', 'link-7');">tls_nb</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Class nbxmpp.tls_nb.SSLWrapper=nbxmpp.tls_nb.SSLWrapper-class.html"><a title="nbxmpp.tls_nb.SSLWrapper" class="py-name" href="#" onclick="return doclink('link-186', 'SSLWrapper', 'link-186');">SSLWrapper</a></tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Class nbxmpp.protocol.Error=nbxmpp.protocol.Error-class.html,Class nbxmpp.tls_nb.SSLWrapper.Error=nbxmpp.tls_nb.SSLWrapper.Error-class.html"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-187', 'Error', 'link-187');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt id="link-188" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-188', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"_do_receive, caught SSL error, got %s:"</tt> <tt class="py-op">%</tt> <tt class="py-name">received</tt><tt class="py-op">,</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">received</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-name">errstr</tt> <tt class="py-op">=</tt> <tt class="py-string">'zero bytes on recv'</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">received</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> \ </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> <tt class="py-op">==</tt> <tt id="link-189" class="py-name"><a title="nbxmpp.tls_nb" class="py-name" href="#" onclick="return doclink('link-189', 'tls_nb', 'link-7');">tls_nb</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name" targets="Variable nbxmpp.tls_nb.PYSTDLIB=nbxmpp.tls_nb-module.html#PYSTDLIB"><a title="nbxmpp.tls_nb.PYSTDLIB" class="py-name" href="#" onclick="return doclink('link-190', 'PYSTDLIB', 'link-190');">PYSTDLIB</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">errnum</tt> <tt class="py-op">==</tt> <tt class="py-number">8</tt> <tt class="py-op">)</tt> <tt class="py-keyword">or</tt> \ </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ssl_lib</tt> <tt class="py-op">==</tt> <tt id="link-191" class="py-name"><a title="nbxmpp.tls_nb" class="py-name" href="#" onclick="return doclink('link-191', 'tls_nb', 'link-7');">tls_nb</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name" targets="Variable nbxmpp.tls_nb.PYOPENSSL=nbxmpp.tls_nb-module.html#PYOPENSSL"><a title="nbxmpp.tls_nb.PYOPENSSL" class="py-name" href="#" onclick="return doclink('link-192', 'PYOPENSSL', 'link-192');">PYOPENSSL</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">errnum</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-comment"># 8 in stdlib: errstr == EOF occured in violation of protocol</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-comment"># -1 in pyopenssl: errstr == Unexpected EOF</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt id="link-193" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-193', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Disconnected by remote server: #%s, %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_remote_disconnect</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">errnum</tt><tt class="py-op">:</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"> <tt id="link-194" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-194', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Connection to %s:%s lost: %s %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">,</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-name">errnum</tt><tt class="py-op">,</tt> <tt class="py-name">errstr</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-195', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-comment"># this branch is for case of non-fatal SSL errors - None is returned from</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> <tt class="py-comment"># recv() but no errnum is set</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">received</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-comment"># we have received some bytes, stop the timeout!</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="nbxmpp.idlequeue.IdleQueue.remove_timeout
+nbxmpp.transports_nb.NonBlockingTCP.remove_timeout
+nbxmpp.transports_nb.NonBlockingTransport.remove_timeout" class="py-name" href="#" onclick="return doclink('link-196', 'remove_timeout', 'link-41');">remove_timeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout" class="py-name" href="#" onclick="return doclink('link-197', 'renew_send_timeout', 'link-59');">renew_send_timeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2" class="py-name" href="#" onclick="return doclink('link-198', 'renew_send_timeout2', 'link-60');">renew_send_timeout2</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"> <tt class="py-comment"># pass received data to owner</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt><tt class="py-op">:</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-199', 'raise_event', 'link-31');">raise_event</a></tt><tt class="py-op">(</tt><tt id="link-200" class="py-name"><a title="nbxmpp.transports_nb.DATA_RECEIVED" class="py-name" href="#" onclick="return doclink('link-200', 'DATA_RECEIVED', 'link-15');">DATA_RECEIVED</a></tt><tt class="py-op">,</tt> <tt class="py-name">received</tt><tt class="py-op">)</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingHTTP._on_receive()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#_on_receive,Method nbxmpp.transports_nb.NonBlockingTCP._on_receive()=nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_receive"><a title="nbxmpp.transports_nb.NonBlockingHTTP._on_receive
+nbxmpp.transports_nb.NonBlockingTCP._on_receive" class="py-name" href="#" onclick="return doclink('link-201', '_on_receive', 'link-201');">_on_receive</a></tt><tt class="py-op">(</tt><tt class="py-name">received</tt><tt class="py-op">)</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-comment"># This should never happen, so we need the debug.</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-comment"># (If there is no handler on receive specified, data is passed to</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> <tt class="py-comment"># Dispatcher.ProcessNonBlocking)</tt> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> <tt id="link-202" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-202', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'SOCKET %s Unhandled data received: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-name">received</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-203', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingTCP._on_receive"></a><div id="NonBlockingTCP._on_receive-def"><a name="L608"></a><tt class="py-lineno">608</tt> <a class="py-toggle" href="#" id="NonBlockingTCP._on_receive-toggle" onclick="return toggle('NonBlockingTCP._on_receive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_receive">_on_receive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingTCP._on_receive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingTCP._on_receive-expanded"><a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"><tt class="py-docstring"> Preceeds on_receive callback. It peels off and checks HTTP headers in</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"><tt class="py-docstring"> HTTP classes, in here it just calls the callback</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTP"></a><div id="NonBlockingHTTP-def"><a name="L616"></a><tt class="py-lineno">616</tt> <a class="py-toggle" href="#" id="NonBlockingHTTP-toggle" onclick="return toggle('NonBlockingHTTP');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a><tt class="py-op">(</tt><tt class="py-base-class">NonBlockingTCP</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTP-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingHTTP-expanded"><a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"><tt class="py-docstring"> Socket wrapper that creates HTTP message out of sent data and peels-off HTTP</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"><tt class="py-docstring"> headers from incoming messages</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTP.__init__"></a><div id="NonBlockingHTTP.__init__-def"><a name="L622"></a><tt class="py-lineno">622</tt> <a class="py-toggle" href="#" id="NonBlockingHTTP.__init__-toggle" onclick="return toggle('NonBlockingHTTP.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">raise_event</tt><tt class="py-op">,</tt> <tt class="py-param">on_disconnect</tt><tt class="py-op">,</tt> <tt class="py-param">idlequeue</tt><tt class="py-op">,</tt> <tt class="py-param">estabilish_tls</tt><tt class="py-op">,</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-param">certs</tt><tt class="py-op">,</tt> <tt class="py-param">on_http_request_possible</tt><tt class="py-op">,</tt> <tt class="py-param">on_persistent_fallback</tt><tt class="py-op">,</tt> <tt class="py-param">http_dict</tt><tt class="py-op">,</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-param">proxy_dict</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTP.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingHTTP.__init__-expanded"><a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"><tt class="py-docstring"> :param on_http_request_possible: method to call when HTTP request to</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"><tt class="py-docstring"> socket owned by transport is possible.</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"><tt class="py-docstring"> :param on_persistent_fallback: callback called when server ends TCP</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"><tt class="py-docstring"> connection. It doesn't have to be fatal for HTTP session.</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"><tt class="py-docstring"> :param http_dict: dictionary with data for HTTP request and headers</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt id="link-204" class="py-name" targets="Class nbxmpp.transports_nb.NonBlockingTCP=nbxmpp.transports_nb.NonBlockingTCP-class.html"><a title="nbxmpp.transports_nb.NonBlockingTCP" class="py-name" href="#" onclick="return doclink('link-204', 'NonBlockingTCP', 'link-204');">NonBlockingTCP</a></tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="nbxmpp.auth_nb.NonBlockingBind.__init__
+nbxmpp.auth_nb.NonBlockingNonSASL.__init__
+nbxmpp.auth_nb.SASL.__init__
+nbxmpp.bosh.AckChecker.__init__
+nbxmpp.bosh.KeyStack.__init__
+nbxmpp.bosh.NonBlockingBOSH.__init__
+nbxmpp.client_nb.NonBlockingClient.__init__
+nbxmpp.dispatcher_nb.XMPPDispatcher.__init__
+nbxmpp.idlequeue.IdleCommand.__init__
+nbxmpp.idlequeue.IdleObject.__init__
+nbxmpp.idlequeue.IdleQueue.__init__
+nbxmpp.plugin.PlugIn.__init__
+nbxmpp.protocol.Acks.__init__
+nbxmpp.protocol.BOSHBody.__init__
+nbxmpp.protocol.DataField.__init__
+nbxmpp.protocol.DataForm.__init__
+nbxmpp.protocol.Error.__init__
+nbxmpp.protocol.ErrorNode.__init__
+nbxmpp.protocol.Hashes.__init__
+nbxmpp.protocol.Iq.__init__
+nbxmpp.protocol.JID.__init__
+nbxmpp.protocol.Message.__init__
+nbxmpp.protocol.Presence.__init__
+nbxmpp.protocol.Protocol.__init__
+nbxmpp.proxy_connectors.ProxyConnector.__init__
+nbxmpp.roster_nb.NonBlockingRoster.__init__
+nbxmpp.simplexml.Node.__init__
+nbxmpp.simplexml.NodeBuilder.__init__
+nbxmpp.simplexml.T.__init__
+nbxmpp.smacks.Smacks.__init__
+nbxmpp.stringprepare.EmptyMappingTable.__init__
+nbxmpp.stringprepare.LookupTable.__init__
+nbxmpp.stringprepare.LookupTableFromFunction.__init__
+nbxmpp.stringprepare.MappingTableFromFunction.__init__
+nbxmpp.stringprepare.Profile.__init__
+nbxmpp.tls_nb.NonBlockingTLS.__init__
+nbxmpp.tls_nb.PyOpenSSLWrapper.__init__
+nbxmpp.tls_nb.SSLWrapper.Error.__init__
+nbxmpp.tls_nb.SSLWrapper.__init__
+nbxmpp.tls_nb.StdlibSSLWrapper.__init__
+nbxmpp.transports_nb.NonBlockingHTTP.__init__
+nbxmpp.transports_nb.NonBlockingTCP.__init__
+nbxmpp.transports_nb.NonBlockingTransport.__init__" class="py-name" href="#" onclick="return doclink('link-205', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-206" class="py-name"><a title="nbxmpp.client_nb.NonBlockingClient.raise_event" class="py-name" href="#" onclick="return doclink('link-206', 'raise_event', 'link-31');">raise_event</a></tt><tt class="py-op">,</tt> <tt class="py-name">on_disconnect</tt><tt class="py-op">,</tt> <tt id="link-207" class="py-name"><a title="nbxmpp.idlequeue" class="py-name" href="#" onclick="return doclink('link-207', 'idlequeue', 'link-4');">idlequeue</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-name">estabilish_tls</tt><tt class="py-op">,</tt> <tt class="py-name">certs</tt><tt class="py-op">,</tt> <tt class="py-name">proxy_dict</tt><tt class="py-op">)</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_protocol</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_host</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_port</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_path</tt> <tt class="py-op">=</tt> \ </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt id="link-208" class="py-name"><a title="nbxmpp.transports_nb.urisplit" class="py-name" href="#" onclick="return doclink('link-208', 'urisplit', 'link-10');">urisplit</a></tt><tt class="py-op">(</tt><tt class="py-name">http_dict</tt><tt class="py-op">[</tt><tt class="py-string">'http_uri'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_protocol</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_protocol</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'http'</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_path</tt> <tt class="py-keyword">or</tt> <tt class="py-string">'/'</tt> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_version</tt> <tt class="py-op">=</tt> <tt class="py-name">http_dict</tt><tt class="py-op">[</tt><tt class="py-string">'http_version'</tt><tt class="py-op">]</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_persistent</tt> <tt class="py-op">=</tt> <tt class="py-name">http_dict</tt><tt class="py-op">[</tt><tt class="py-string">'http_persistent'</tt><tt class="py-op">]</tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">add_proxy_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">http_dict</tt><tt class="py-op">[</tt><tt class="py-string">'add_proxy_headers'</tt><tt class="py-op">]</tt> </tt>
+<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'proxy_user'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">http_dict</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'proxy_pass'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">http_dict</tt><tt class="py-op">:</tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt> <tt class="py-op">=</tt> <tt class="py-name">http_dict</tt><tt class="py-op">[</tt><tt class="py-string">'proxy_user'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">http_dict</tt><tt class="py-op">[</tt> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt class="py-string">'proxy_pass'</tt><tt class="py-op">]</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"> <tt class="py-comment"># buffer for partial responses</tt> </tt>
+<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">recvbuff</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expected_length</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pending_requests</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible()=nbxmpp.bosh.NonBlockingBOSH-class.html#on_http_request_possible"><a title="nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible" class="py-name" href="#" onclick="return doclink('link-209', 'on_http_request_possible', 'link-209');">on_http_request_possible</a></tt> <tt class="py-op">=</tt> <tt id="link-210" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible" class="py-name" href="#" onclick="return doclink('link-210', 'on_http_request_possible', 'link-209');">on_http_request_possible</a></tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_recv_time</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">close_current_connection</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_remote_disconnect</tt> <tt class="py-op">=</tt> <tt class="py-keyword">lambda</tt><tt class="py-op">:</tt> <tt id="link-211" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.on_persistent_fallback()=nbxmpp.bosh.NonBlockingBOSH-class.html#on_persistent_fallback"><a title="nbxmpp.bosh.NonBlockingBOSH.on_persistent_fallback" class="py-name" href="#" onclick="return doclink('link-211', 'on_persistent_fallback', 'link-211');">on_persistent_fallback</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTP.http_send"></a><div id="NonBlockingHTTP.http_send-def"><a name="L658"></a><tt class="py-lineno">658</tt> <a class="py-toggle" href="#" id="NonBlockingHTTP.http_send-toggle" onclick="return toggle('NonBlockingHTTP.http_send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send">http_send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">raw_data</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTP.http_send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingHTTP.http_send-expanded"><a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.dispatcher_nb.XMPPDispatcher.send
+nbxmpp.tls_nb.PyOpenSSLWrapper.send
+nbxmpp.tls_nb.SSLWrapper.send
+nbxmpp.tls_nb.StdlibSSLWrapper.send
+nbxmpp.transports_nb.NonBlockingTCP.send
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-212', 'send', 'link-81');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingHTTP.build_http_message()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message"><a title="nbxmpp.transports_nb.NonBlockingHTTP.build_http_message" class="py-name" href="#" onclick="return doclink('link-213', 'build_http_message', 'link-213');">build_http_message</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_data</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">now</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTP._on_receive"></a><div id="NonBlockingHTTP._on_receive-def"><a name="L661"></a><tt class="py-lineno">661</tt> <a class="py-toggle" href="#" id="NonBlockingHTTP._on_receive-toggle" onclick="return toggle('NonBlockingHTTP._on_receive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#_on_receive">_on_receive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTP._on_receive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingHTTP._on_receive-expanded"><a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"><tt class="py-docstring"> Preceeds passing received data to owner class. Gets rid of HTTP headers</tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"><tt class="py-docstring"> and checks them.</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTransport.get_state" class="py-name" href="#" onclick="return doclink('link-214', 'get_state', 'link-48');">get_state</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-215" class="py-name"><a title="nbxmpp.transports_nb.PROXY_CONNECTING" class="py-name" href="#" onclick="return doclink('link-215', 'PROXY_CONNECTING', 'link-21');">PROXY_CONNECTING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt id="link-216" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP" class="py-name" href="#" onclick="return doclink('link-216', 'NonBlockingTCP', 'link-204');">NonBlockingTCP</a></tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingHTTP._on_receive
+nbxmpp.transports_nb.NonBlockingTCP._on_receive" class="py-name" href="#" onclick="return doclink('link-217', '_on_receive', 'link-201');">_on_receive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-comment"># append currently received data to HTTP msg in buffer</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">recvbuff</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">recvbuff</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> <tt class="py-name">statusline</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">httpbody</tt><tt class="py-op">,</tt> <tt class="py-name">buffer_rest</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name" targets="Method nbxmpp.transports_nb.NonBlockingHTTP.parse_http_message()=nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message"><a title="nbxmpp.transports_nb.NonBlockingHTTP.parse_http_message" class="py-name" href="#" onclick="return doclink('link-218', 'parse_http_message', 'link-218');">parse_http_message</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">recvbuff</tt><tt class="py-op">)</tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> </tt>
+<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">statusline</tt> <tt class="py-keyword">and</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">and</tt> <tt class="py-name">httpbody</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt id="link-219" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-219', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Received incomplete HTTP response'</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">statusline</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'200'</tt><tt class="py-op">:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> <tt id="link-220" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-220', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'HTTP Error: %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">statusline</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">statusline</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-221', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expected_length</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Length'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'Connection'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">and</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'Connection'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-string">'close'</tt><tt class="py-op">:</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">close_current_connection</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expected_length</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">httpbody</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"> <tt class="py-comment"># If we haven't received the whole HTTP mess yet, let's end the thread.</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"> <tt class="py-comment"># It will be finnished from one of following recvs on plugged socket.</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"> <tt id="link-222" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.bosh.log
+nbxmpp.client_nb.log
+nbxmpp.dispatcher_nb.log
+nbxmpp.idlequeue.log
+nbxmpp.plugin.log
+nbxmpp.proxy_connectors.log
+nbxmpp.roster_nb.log
+nbxmpp.simplexml.log
+nbxmpp.smacks.log
+nbxmpp.tls_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-222', 'log', 'link-8');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'not enough bytes in HTTP response - %d expected, got %d'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expected_length</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">httpbody</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> <tt class="py-comment"># First part of buffer has been extraced and is going to be handled,</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> <tt class="py-comment"># remove it from buffer</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">recvbuff</tt> <tt class="py-op">=</tt> <tt class="py-name">buffer_rest</tt> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-comment"># everything was received</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expected_length</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_persistent</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">close_current_connection</tt><tt class="py-op">:</tt> </tt>
+<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt class="py-comment"># not-persistent connections disconnect after response</tt> </tt>
+<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.disconnect
+nbxmpp.client_nb.NonBlockingClient.disconnect
+nbxmpp.transports_nb.NonBlockingTCP.disconnect
+nbxmpp.transports_nb.NonBlockingTransport.disconnect" class="py-name" href="#" onclick="return doclink('link-223', 'disconnect', 'link-43');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">do_callback</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">close_current_connection</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_recv_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_receive</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-name">httpbody</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.on_http_request_possible" class="py-name" href="#" onclick="return doclink('link-224', 'on_http_request_possible', 'link-209');">on_http_request_possible</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTP.build_http_message"></a><div id="NonBlockingHTTP.build_http_message-def"><a name="L708"></a><tt class="py-lineno">708</tt> <a class="py-toggle" href="#" id="NonBlockingHTTP.build_http_message-toggle" onclick="return toggle('NonBlockingHTTP.build_http_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message">build_http_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">httpbody</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTP.build_http_message-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingHTTP.build_http_message-expanded"><a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"><tt class="py-docstring"> Builds http message with given body. Values for headers and status line</tt> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"><tt class="py-docstring"> fields are taken from class variables</tt> </tt>
+<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-name">absolute_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s://%s:%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_protocol</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_host</tt><tt class="py-op">,</tt> </tt>
+<a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_port</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_path</tt><tt class="py-op">)</tt> </tt>
+<a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'%s %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">absolute_uri</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_version</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L716"></a><tt class="py-lineno">716</tt> <tt class="py-line"> <tt class="py-string">'Host: %s:%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_host</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt class="py-string">'User-Agent: Gajim'</tt><tt class="py-op">,</tt> </tt>
+<a name="L718"></a><tt class="py-lineno">718</tt> <tt class="py-line"> <tt class="py-string">'Content-Type: text/xml; charset=utf-8'</tt><tt class="py-op">,</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-string">'Content-Length: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">httpbody</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">add_proxy_headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L721"></a><tt class="py-lineno">721</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Proxy-Connection: keep-alive'</tt><tt class="py-op">)</tt> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Pragma: no-cache'</tt><tt class="py-op">)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt><tt class="py-op">:</tt> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"> <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s:%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_user</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proxy_pass</tt><tt class="py-op">)</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"> <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-name">credentials</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Proxy-Authorization: Basic %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">credentials</tt><tt class="py-op">)</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Connection: Keep-Alive'</tt><tt class="py-op">)</tt> </tt>
+<a name="L729"></a><tt class="py-lineno">729</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L730"></a><tt class="py-lineno">730</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-string">'\r\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt> <tt class="py-line"> <tt class="py-keyword">return</tt><tt class="py-op">(</tt><tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">httpbody</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L732"></a><tt class="py-lineno">732</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTP.parse_http_message"></a><div id="NonBlockingHTTP.parse_http_message-def"><a name="L733"></a><tt class="py-lineno">733</tt> <a class="py-toggle" href="#" id="NonBlockingHTTP.parse_http_message-toggle" onclick="return toggle('NonBlockingHTTP.parse_http_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message">parse_http_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTP.parse_http_message-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingHTTP.parse_http_message-expanded"><a name="L734"></a><tt class="py-lineno">734</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L735"></a><tt class="py-lineno">735</tt> <tt class="py-line"><tt class="py-docstring"> Split http message into a tuple:</tt> </tt>
+<a name="L736"></a><tt class="py-lineno">736</tt> <tt class="py-line"><tt class="py-docstring"> - (statusline - list of e.g. ['HTTP/1.1', '200', 'OK'],</tt> </tt>
+<a name="L737"></a><tt class="py-lineno">737</tt> <tt class="py-line"><tt class="py-docstring"> - headers - dictionary of headers e.g. {'Content-Length': '604',</tt> </tt>
+<a name="L738"></a><tt class="py-lineno">738</tt> <tt class="py-line"><tt class="py-docstring"> 'Content-Type': 'text/xml; charset=utf-8'},</tt> </tt>
+<a name="L739"></a><tt class="py-lineno">739</tt> <tt class="py-line"><tt class="py-docstring"> - httpbody - string with http body)</tt> </tt>
+<a name="L740"></a><tt class="py-lineno">740</tt> <tt class="py-line"><tt class="py-docstring"> - http_rest - what is left in the message after a full HTTP header + body</tt> </tt>
+<a name="L741"></a><tt class="py-lineno">741</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L742"></a><tt class="py-lineno">742</tt> <tt class="py-line"> <tt class="py-name">splitted</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n\r\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L743"></a><tt class="py-lineno">743</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">splitted</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L744"></a><tt class="py-lineno">744</tt> <tt class="py-line"> <tt class="py-comment"># no complete http message. Keep filling the buffer until we find one</tt> </tt>
+<a name="L745"></a><tt class="py-lineno">745</tt> <tt class="py-line"> <tt class="py-name">buffer_rest</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
+<a name="L746"></a><tt class="py-lineno">746</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">buffer_rest</tt><tt class="py-op">)</tt> </tt>
+<a name="L747"></a><tt class="py-lineno">747</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L748"></a><tt class="py-lineno">748</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py-name">httpbody</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">splitted</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"> <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno">750</tt> <tt class="py-line"> <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L751"></a><tt class="py-lineno">751</tt> <tt class="py-line"> <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L752"></a><tt class="py-lineno">752</tt> <tt class="py-line"> <tt class="py-name">statusline</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L753"></a><tt class="py-lineno">753</tt> <tt class="py-line"> <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L755"></a><tt class="py-lineno">755</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">dummy</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
+<a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"> <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-name">dummy</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L757"></a><tt class="py-lineno">757</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-name">row</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">row</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L758"></a><tt class="py-lineno">758</tt> <tt class="py-line"> <tt class="py-name">body_size</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Length'</tt><tt class="py-op">]</tt> </tt>
+<a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"> <tt class="py-name">rest_splitted</tt> <tt class="py-op">=</tt> <tt class="py-name">splitted</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">httpbody</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">body_size</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">rest_splitted</tt><tt class="py-op">:</tt> </tt>
+<a name="L761"></a><tt class="py-lineno">761</tt> <tt class="py-line"> <tt class="py-comment"># Complete httpbody until it has the announced size</tt> </tt>
+<a name="L762"></a><tt class="py-lineno">762</tt> <tt class="py-line"> <tt class="py-name">httpbody</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">httpbody</tt><tt class="py-op">,</tt> <tt class="py-name">rest_splitted</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L763"></a><tt class="py-lineno">763</tt> <tt class="py-line"> <tt class="py-name">buffer_rest</tt> <tt class="py-op">=</tt> <tt class="py-string">"\n\n"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">rest_splitted</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno">764</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">statusline</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">httpbody</tt><tt class="py-op">,</tt> <tt class="py-name">buffer_rest</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L765"></a><tt class="py-lineno">765</tt> <tt class="py-line"> </tt>
+<a name="L766"></a><tt class="py-lineno">766</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTPBOSH"></a><div id="NonBlockingHTTPBOSH-def"><a name="L767"></a><tt class="py-lineno">767</tt> <a class="py-toggle" href="#" id="NonBlockingHTTPBOSH-toggle" onclick="return toggle('NonBlockingHTTPBOSH');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html">NonBlockingHTTPBOSH</a><tt class="py-op">(</tt><tt class="py-base-class">NonBlockingHTTP</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTPBOSH-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NonBlockingHTTPBOSH-expanded"><a name="L768"></a><tt class="py-lineno">768</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L769"></a><tt class="py-lineno">769</tt> <tt class="py-line"><tt class="py-docstring"> Class for BOSH HTTP connections. Slightly redefines HTTP transport by</tt> </tt>
+<a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"><tt class="py-docstring"> calling bosh bodytag generating callback before putting data on wire</tt> </tt>
+<a name="L771"></a><tt class="py-lineno">771</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L772"></a><tt class="py-lineno">772</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTPBOSH.set_stanza_build_cb"></a><div id="NonBlockingHTTPBOSH.set_stanza_build_cb-def"><a name="L773"></a><tt class="py-lineno">773</tt> <a class="py-toggle" href="#" id="NonBlockingHTTPBOSH.set_stanza_build_cb-toggle" onclick="return toggle('NonBlockingHTTPBOSH.set_stanza_build_cb');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#set_stanza_build_cb">set_stanza_build_cb</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">build_cb</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTPBOSH.set_stanza_build_cb-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingHTTPBOSH.set_stanza_build_cb-expanded"><a name="L774"></a><tt class="py-lineno">774</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">build_cb</tt> <tt class="py-op">=</tt> <tt class="py-name">build_cb</tt> </tt>
+</div><a name="L775"></a><tt class="py-lineno">775</tt> <tt class="py-line"> </tt>
+<a name="NonBlockingHTTPBOSH._do_send"></a><div id="NonBlockingHTTPBOSH._do_send-def"><a name="L776"></a><tt class="py-lineno">776</tt> <a class="py-toggle" href="#" id="NonBlockingHTTPBOSH._do_send-toggle" onclick="return toggle('NonBlockingHTTPBOSH._do_send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#_do_send">_do_send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NonBlockingHTTPBOSH._do_send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NonBlockingHTTPBOSH._do_send-expanded"><a name="L777"></a><tt class="py-lineno">777</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">state</tt> <tt class="py-op">==</tt> <tt id="link-225" class="py-name"><a title="nbxmpp.transports_nb.PROXY_CONNECTING" class="py-name" href="#" onclick="return doclink('link-225', 'PROXY_CONNECTING', 'link-21');">PROXY_CONNECTING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L778"></a><tt class="py-lineno">778</tt> <tt class="py-line"> <tt id="link-226" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP" class="py-name" href="#" onclick="return doclink('link-226', 'NonBlockingTCP', 'link-204');">NonBlockingTCP</a></tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingHTTPBOSH._do_send
+nbxmpp.transports_nb.NonBlockingTCP._do_send" class="py-name" href="#" onclick="return doclink('link-227', '_do_send', 'link-132');">_do_send</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L779"></a><tt class="py-lineno">779</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L780"></a><tt class="py-lineno">780</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt><tt class="py-op">:</tt> </tt>
+<a name="L781"></a><tt class="py-lineno">781</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">build_cb</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L782"></a><tt class="py-lineno">782</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP.encode_stanza" class="py-name" href="#" onclick="return doclink('link-228', 'encode_stanza', 'link-169');">encode_stanza</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L783"></a><tt class="py-lineno">783</tt> <tt class="py-line"> <tt class="py-name">stanza</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingHTTP.build_http_message" class="py-name" href="#" onclick="return doclink('link-229', 'build_http_message', 'link-213');">build_http_message</a></tt><tt class="py-op">(</tt><tt class="py-name">httpbody</tt><tt class="py-op">=</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L784"></a><tt class="py-lineno">784</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sendbuff</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt> </tt>
+<a name="L785"></a><tt class="py-lineno">785</tt> <tt class="py-line"> <tt id="link-230" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingTCP" class="py-name" href="#" onclick="return doclink('link-230', 'NonBlockingTCP', 'link-204');">NonBlockingTCP</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="nbxmpp.transports_nb.NonBlockingHTTPBOSH._do_send
+nbxmpp.transports_nb.NonBlockingTCP._do_send" class="py-name" href="#" onclick="return doclink('link-231', '_do_send', 'link-132');">_do_send</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L786"></a><tt class="py-lineno">786</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:09 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTP-class.html b/doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTP-class.html
new file mode 100644
index 0000000..02cbe35
--- /dev/null
+++ b/doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTP-class.html
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.transports_nb.NonBlockingHTTP</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.transports_nb-module.html">Module&nbsp;transports_nb</a> ::
+ Class&nbsp;NonBlockingHTTP
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingHTTP</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_6" name="uml_class_diagram_for_nbxmpp_t_6">
+<area shape="rect" id="node242" href="nbxmpp.idlequeue.IdleObject-class.html#fd" title="filedescriptor, must be unique for each IdleObject" alt="" coords="300,248,431,267"/>
+<area shape="rect" id="node1" href="nbxmpp.idlequeue.IdleObject-class.html" title="Idle listener interface. Listed methods are called by IdleQueue." alt="" coords="288,223,443,281"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect" title="nbxmpp.transports_nb.NonBlockingTCP.start_disconnect" alt="" coords="311,436,697,455"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect" title="Creates and connects transport to server and port defined in conn_5tuple which should be item from list returned from getaddrinfo" alt="" coords="311,455,697,473"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init" title="Estabilishes TLS/SSL using this TCP connection by plugging a NonBlockingTLS module" alt="" coords="311,473,697,492"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin" title="Called by idlequeu when receive on plugged socket is possible" alt="" coords="311,492,697,511"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout" title="Called by idlequeu when send to plugged socket is possible" alt="" coords="311,511,697,529"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend" title="Called by idlequeue on TCP connection errors" alt="" coords="311,529,697,548"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect" title="nbxmpp.transports_nb.NonBlockingTCP.disconnect" alt="" coords="311,548,697,567"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout" title="Called when there&#39;s no response from server in defined timeout" alt="" coords="311,567,697,585"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout" title="nbxmpp.transports_nb.NonBlockingTCP.set_timeout" alt="" coords="311,585,697,604"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout" title="nbxmpp.transports_nb.NonBlockingTCP.remove_timeout" alt="" coords="311,604,697,623"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send" title="Append raw_data to the queue of messages to be send. If supplied data is unicode string, encode it to utf&#45;8." alt="" coords="311,623,697,641"/>
+<area shape="rect" id="node239" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza" title="Encode str or unicode to utf&#45;8" alt="" coords="311,641,697,660"/>
+<area shape="rect" id="node2" href="nbxmpp.transports_nb.NonBlockingTCP-class.html" title="Non&#45;blocking TCP socket wrapper" alt="" coords="299,403,709,666"/>
+<area shape="rect" id="node238" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__" title="Each trasport class can have different constructor but it has to have at least all the arguments of NonBlockingTransport constructor" alt="" coords="17,719,989,737"/>
+<area shape="rect" id="node238" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send" title="nbxmpp.transports_nb.NonBlockingHTTP.http_send" alt="" coords="17,737,989,756"/>
+<area shape="rect" id="node238" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message" title="Builds http message with given body. Values for headers and status line fields are taken from class variables" alt="" coords="17,756,989,775"/>
+<area shape="rect" id="node238" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message" title="(statusline &#45; list of e.g. [&#39;HTTP/1.1&#39;, &#39;200&#39;, &#39;OK&#39;]," alt="" coords="17,775,989,793"/>
+<area shape="rect" id="node4" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html" title="Socket wrapper that creates HTTP message out of sent data and peels&#45;off HTTP headers from incoming messages" alt="" coords="5,686,1000,799"/>
+<area shape="rect" id="node241" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="529,39,755,57"/>
+<area shape="rect" id="node241" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="529,57,755,76"/>
+<area shape="rect" id="node241" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="529,76,755,95"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="517,6,765,101"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin" title="nbxmpp.transports_nb.NonBlockingTransport.plugin" alt="" coords="484,153,801,172"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout" title="nbxmpp.transports_nb.NonBlockingTransport.plugout" alt="" coords="484,172,801,191"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state" title="nbxmpp.transports_nb.NonBlockingTransport.set_state" alt="" coords="484,191,801,209"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state" title="nbxmpp.transports_nb.NonBlockingTransport.get_state" alt="" coords="484,209,801,228"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive" title="Set the on_receive callback." alt="" coords="484,228,801,247"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2" title="called when there&#39;s no response from server in defined timeout" alt="" coords="484,247,801,265"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout" alt="" coords="484,265,801,284"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2" alt="" coords="484,284,801,303"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_timeout2" alt="" coords="484,303,801,321"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd" title="nbxmpp.transports_nb.NonBlockingTransport.get_fd" alt="" coords="484,321,801,340"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout" alt="" coords="484,340,801,359"/>
+<area shape="rect" id="node240" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2" alt="" coords="484,359,801,377"/>
+<area shape="rect" id="node5" href="nbxmpp.transports_nb.NonBlockingTransport-class.html" title="Abstract class representing a transport" alt="" coords="472,121,813,383"/>
+<area shape="rect" id="node6" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" title="Class for BOSH HTTP connections. Slightly redefines HTTP transport by calling bosh bodytag generating callback before putting data on wire" alt="" coords="412,819,596,858"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_6.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_6" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Socket wrapper that creates HTTP message out of sent data and peels-off HTTP
+headers from incoming messages
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">raise_event</span>,
+ <span class="summary-sig-arg">on_disconnect</span>,
+ <span class="summary-sig-arg">idlequeue</span>,
+ <span class="summary-sig-arg">estabilish_tls</span>,
+ <span class="summary-sig-arg">certs</span>,
+ <span class="summary-sig-arg">on_http_request_possible</span>,
+ <span class="summary-sig-arg">on_persistent_fallback</span>,
+ <span class="summary-sig-arg">http_dict</span>,
+ <span class="summary-sig-arg">proxy_dict</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send" class="summary-sig-name">http_send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">raw_data</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.http_send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#_on_receive" class="summary-sig-name" onclick="show_private();">_on_receive</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Preceeds passing received data to owner class. Gets rid of HTTP headers
+and checks them.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP._on_receive">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message" class="summary-sig-name">build_http_message</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">httpbody</span>,
+ <span class="summary-sig-arg">method</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">POST</code><code class="variable-quote">'</code></span>)</span><br />
+ Builds http message with given body. Values for headers and status line
+fields are taken from class variables</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.build_http_message">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message" class="summary-sig-name">parse_http_message</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">message</span>)</span><br />
+ (statusline - list of e.g. ['HTTP/1.1', '200', 'OK'],</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.parse_http_message">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a></code></b>:
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect">connect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect">disconnect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza">encode_stanza</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend">pollend</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin">pollin</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout">pollout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout">read_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout">remove_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send">send</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout">set_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect">start_disconnect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init">tls_init</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a></code></b> (private):
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy" onclick="show_private();">_connect_to_proxy</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive" onclick="show_private();">_do_receive</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send" onclick="show_private();">_do_send</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect" onclick="show_private();">_on_connect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle" onclick="show_private();">_plug_idle</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a></code></b>:
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd">get_fd</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state">get_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive">onreceive</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin">plugin</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout">plugout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2">read_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout">renew_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2">renew_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout">set_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2">set_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state">set_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2">set_timeout2</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a></code></b> (private):
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure" onclick="show_private();">_on_connect_failure</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started" onclick="show_private();">_tcp_connecting_started</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleObject-class.html">idlequeue.IdleObject</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleObject-class.html#fd">fd</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">raise_event</span>,
+ <span class="sig-arg">on_disconnect</span>,
+ <span class="sig-arg">idlequeue</span>,
+ <span class="sig-arg">estabilish_tls</span>,
+ <span class="sig-arg">certs</span>,
+ <span class="sig-arg">on_http_request_possible</span>,
+ <span class="sig-arg">on_persistent_fallback</span>,
+ <span class="sig-arg">http_dict</span>,
+ <span class="sig-arg">proxy_dict</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>on_http_request_possible</code></strong> - method to call when HTTP request to
+socket owned by transport is possible.</li>
+ <li><strong class="pname"><code>on_persistent_fallback</code></strong> - callback called when server ends TCP
+connection. It doesn't have to be fatal for HTTP session.</li>
+ <li><strong class="pname"><code>http_dict</code></strong> - dictionary with data for HTTP request and headers</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#__init__">idlequeue.IdleObject.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="http_send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">http_send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">raw_data</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.http_send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_receive"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_receive</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP._on_receive">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Preceeds passing received data to owner class. Gets rid of HTTP headers
+and checks them.
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_receive" onclick="show_private();">NonBlockingTCP._on_receive</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="build_http_message"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">build_http_message</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">httpbody</span>,
+ <span class="sig-arg">method</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">POST</code><code class="variable-quote">'</code></span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.build_http_message">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Builds http message with given body. Values for headers and status line
+fields are taken from class variables
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="parse_http_message"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_http_message</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">message</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTP.parse_http_message">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <dl class="rst-docutils">
+<dt>Split http message into a tuple:</dt>
+<dd><ul class="rst-first rst-last">
+<li><p class="rst-first">(statusline - list of e.g. ['HTTP/1.1', '200', 'OK'],</p>
+</li>
+<li><dl class="rst-first rst-docutils">
+<dt>headers - dictionary of headers e.g. {'Content-Length': '604',</dt>
+<dd><p class="rst-first rst-last">'Content-Type': 'text/xml; charset=utf-8'},</p>
+</dd>
+</dl>
+</li>
+<li><p class="rst-first">httpbody - string with http body)</p>
+</li>
+<li><p class="rst-first">http_rest - what is left in the message after a full HTTP header + body</p>
+</li>
+</ul>
+</dd>
+</dl>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html b/doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html
new file mode 100644
index 0000000..339bd2e
--- /dev/null
+++ b/doc/apidocs/nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.transports_nb.NonBlockingHTTPBOSH</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.transports_nb-module.html">Module&nbsp;transports_nb</a> ::
+ Class&nbsp;NonBlockingHTTPBOSH
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingHTTPBOSH</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTPBOSH">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_7" name="uml_class_diagram_for_nbxmpp_t_7">
+<area shape="rect" id="node244" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#set_stanza_build_cb" title="nbxmpp.transports_nb.NonBlockingHTTPBOSH.set_stanza_build_cb" alt="" coords="389,852,617,871"/>
+<area shape="rect" id="node1" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" title="Class for BOSH HTTP connections. Slightly redefines HTTP transport by calling bosh bodytag generating callback before putting data on wire" alt="" coords="377,819,628,877"/>
+<area shape="rect" id="node249" href="nbxmpp.idlequeue.IdleObject-class.html#fd" title="filedescriptor, must be unique for each IdleObject" alt="" coords="300,248,431,267"/>
+<area shape="rect" id="node2" href="nbxmpp.idlequeue.IdleObject-class.html" title="Idle listener interface. Listed methods are called by IdleQueue." alt="" coords="288,223,443,281"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect" title="nbxmpp.transports_nb.NonBlockingTCP.start_disconnect" alt="" coords="311,436,697,455"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect" title="Creates and connects transport to server and port defined in conn_5tuple which should be item from list returned from getaddrinfo" alt="" coords="311,455,697,473"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init" title="Estabilishes TLS/SSL using this TCP connection by plugging a NonBlockingTLS module" alt="" coords="311,473,697,492"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin" title="Called by idlequeu when receive on plugged socket is possible" alt="" coords="311,492,697,511"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout" title="Called by idlequeu when send to plugged socket is possible" alt="" coords="311,511,697,529"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend" title="Called by idlequeue on TCP connection errors" alt="" coords="311,529,697,548"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect" title="nbxmpp.transports_nb.NonBlockingTCP.disconnect" alt="" coords="311,548,697,567"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout" title="Called when there&#39;s no response from server in defined timeout" alt="" coords="311,567,697,585"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout" title="nbxmpp.transports_nb.NonBlockingTCP.set_timeout" alt="" coords="311,585,697,604"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout" title="nbxmpp.transports_nb.NonBlockingTCP.remove_timeout" alt="" coords="311,604,697,623"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send" title="Append raw_data to the queue of messages to be send. If supplied data is unicode string, encode it to utf&#45;8." alt="" coords="311,623,697,641"/>
+<area shape="rect" id="node246" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza" title="Encode str or unicode to utf&#45;8" alt="" coords="311,641,697,660"/>
+<area shape="rect" id="node6" href="nbxmpp.transports_nb.NonBlockingTCP-class.html" title="Non&#45;blocking TCP socket wrapper" alt="" coords="299,403,709,666"/>
+<area shape="rect" id="node248" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="529,39,755,57"/>
+<area shape="rect" id="node248" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="529,57,755,76"/>
+<area shape="rect" id="node248" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="529,76,755,95"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="517,6,765,101"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin" title="nbxmpp.transports_nb.NonBlockingTransport.plugin" alt="" coords="484,153,801,172"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout" title="nbxmpp.transports_nb.NonBlockingTransport.plugout" alt="" coords="484,172,801,191"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state" title="nbxmpp.transports_nb.NonBlockingTransport.set_state" alt="" coords="484,191,801,209"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state" title="nbxmpp.transports_nb.NonBlockingTransport.get_state" alt="" coords="484,209,801,228"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive" title="Set the on_receive callback." alt="" coords="484,228,801,247"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2" title="called when there&#39;s no response from server in defined timeout" alt="" coords="484,247,801,265"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout" alt="" coords="484,265,801,284"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2" alt="" coords="484,284,801,303"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_timeout2" alt="" coords="484,303,801,321"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd" title="nbxmpp.transports_nb.NonBlockingTransport.get_fd" alt="" coords="484,321,801,340"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout" alt="" coords="484,340,801,359"/>
+<area shape="rect" id="node247" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2" alt="" coords="484,359,801,377"/>
+<area shape="rect" id="node5" href="nbxmpp.transports_nb.NonBlockingTransport-class.html" title="Abstract class representing a transport" alt="" coords="472,121,813,383"/>
+<area shape="rect" id="node245" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__" title="Each trasport class can have different constructor but it has to have at least all the arguments of NonBlockingTransport constructor" alt="" coords="17,719,989,737"/>
+<area shape="rect" id="node245" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send" title="nbxmpp.transports_nb.NonBlockingHTTP.http_send" alt="" coords="17,737,989,756"/>
+<area shape="rect" id="node245" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message" title="Builds http message with given body. Values for headers and status line fields are taken from class variables" alt="" coords="17,756,989,775"/>
+<area shape="rect" id="node245" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message" title="(statusline &#45; list of e.g. [&#39;HTTP/1.1&#39;, &#39;200&#39;, &#39;OK&#39;]," alt="" coords="17,775,989,793"/>
+<area shape="rect" id="node4" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html" title="Socket wrapper that creates HTTP message out of sent data and peels&#45;off HTTP headers from incoming messages" alt="" coords="5,686,1000,799"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_7.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_7" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Class for BOSH HTTP connections. Slightly redefines HTTP transport by
+calling bosh bodytag generating callback before putting data on wire
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#set_stanza_build_cb" class="summary-sig-name">set_stanza_build_cb</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">build_cb</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTPBOSH.set_stanza_build_cb">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html#_do_send" class="summary-sig-name" onclick="show_private();">_do_send</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called when send() to connected socket is possible. First message from
+sendqueue will be sent</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTPBOSH._do_send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a></code></b>:
+ <code><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#__init__">__init__</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#build_http_message">build_http_message</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#http_send">http_send</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#parse_http_message">parse_http_message</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html">NonBlockingHTTP</a></code></b> (private):
+ <code><a href="nbxmpp.transports_nb.NonBlockingHTTP-class.html#_on_receive" onclick="show_private();">_on_receive</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a></code></b>:
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect">connect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect">disconnect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza">encode_stanza</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend">pollend</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin">pollin</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout">pollout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout">read_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout">remove_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send">send</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout">set_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect">start_disconnect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init">tls_init</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html">NonBlockingTCP</a></code></b> (private):
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy" onclick="show_private();">_connect_to_proxy</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive" onclick="show_private();">_do_receive</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect" onclick="show_private();">_on_connect</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle" onclick="show_private();">_plug_idle</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a></code></b>:
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd">get_fd</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state">get_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive">onreceive</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin">plugin</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout">plugout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2">read_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout">renew_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2">renew_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout">set_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2">set_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state">set_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2">set_timeout2</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a></code></b> (private):
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure" onclick="show_private();">_on_connect_failure</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started" onclick="show_private();">_tcp_connecting_started</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleObject-class.html">idlequeue.IdleObject</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleObject-class.html#fd">fd</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="set_stanza_build_cb"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_stanza_build_cb</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">build_cb</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTPBOSH.set_stanza_build_cb">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_do_send"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_do_send</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingHTTPBOSH._do_send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called when send() to connected socket is possible. First message from
+sendqueue will be sent
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send" onclick="show_private();">NonBlockingTCP._do_send</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.transports_nb.NonBlockingTCP-class.html b/doc/apidocs/nbxmpp.transports_nb.NonBlockingTCP-class.html
new file mode 100644
index 0000000..7e4967a
--- /dev/null
+++ b/doc/apidocs/nbxmpp.transports_nb.NonBlockingTCP-class.html
@@ -0,0 +1,1061 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.transports_nb.NonBlockingTCP</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.transports_nb-module.html">Module&nbsp;transports_nb</a> ::
+ Class&nbsp;NonBlockingTCP
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTCP-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingTCP</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_8" name="uml_class_diagram_for_nbxmpp_t_8">
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin" title="nbxmpp.transports_nb.NonBlockingTransport.plugin" alt="" coords="291,153,608,172"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout" title="nbxmpp.transports_nb.NonBlockingTransport.plugout" alt="" coords="291,172,608,191"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state" title="nbxmpp.transports_nb.NonBlockingTransport.set_state" alt="" coords="291,191,608,209"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state" title="nbxmpp.transports_nb.NonBlockingTransport.get_state" alt="" coords="291,209,608,228"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive" title="Set the on_receive callback." alt="" coords="291,228,608,247"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2" title="called when there&#39;s no response from server in defined timeout" alt="" coords="291,247,608,265"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout" alt="" coords="291,265,608,284"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2" alt="" coords="291,284,608,303"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_timeout2" alt="" coords="291,303,608,321"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd" title="nbxmpp.transports_nb.NonBlockingTransport.get_fd" alt="" coords="291,321,608,340"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout" alt="" coords="291,340,608,359"/>
+<area shape="rect" id="node251" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.set_send_timeout2" alt="" coords="291,359,608,377"/>
+<area shape="rect" id="node1" href="nbxmpp.transports_nb.NonBlockingTransport-class.html" title="Abstract class representing a transport" alt="" coords="279,121,620,383"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__" title="Each trasport class can have different constructor but it has to have at least all the arguments of NonBlockingTransport constructor" alt="" coords="17,436,604,455"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect" title="nbxmpp.transports_nb.NonBlockingTCP.start_disconnect" alt="" coords="17,455,604,473"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect" title="Creates and connects transport to server and port defined in conn_5tuple which should be item from list returned from getaddrinfo" alt="" coords="17,473,604,492"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init" title="Estabilishes TLS/SSL using this TCP connection by plugging a NonBlockingTLS module" alt="" coords="17,492,604,511"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin" title="Called by idlequeu when receive on plugged socket is possible" alt="" coords="17,511,604,529"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout" title="Called by idlequeu when send to plugged socket is possible" alt="" coords="17,529,604,548"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend" title="Called by idlequeue on TCP connection errors" alt="" coords="17,548,604,567"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect" title="nbxmpp.transports_nb.NonBlockingTCP.disconnect" alt="" coords="17,567,604,585"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout" title="Called when there&#39;s no response from server in defined timeout" alt="" coords="17,585,604,604"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout" title="nbxmpp.transports_nb.NonBlockingTCP.set_timeout" alt="" coords="17,604,604,623"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout" title="nbxmpp.transports_nb.NonBlockingTCP.remove_timeout" alt="" coords="17,623,604,641"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send" title="Append raw_data to the queue of messages to be send. If supplied data is unicode string, encode it to utf&#45;8." alt="" coords="17,641,604,660"/>
+<area shape="rect" id="node250" href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza" title="Encode str or unicode to utf&#45;8" alt="" coords="17,660,604,679"/>
+<area shape="rect" id="node6" href="nbxmpp.transports_nb.NonBlockingTCP-class.html" title="Non&#45;blocking TCP socket wrapper" alt="" coords="5,403,616,685"/>
+<area shape="rect" id="node2" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" title="Class for BOSH HTTP connections. Slightly redefines HTTP transport by calling bosh bodytag generating callback before putting data on wire" alt="" coords="219,763,403,802"/>
+<area shape="rect" id="node252" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="336,39,561,57"/>
+<area shape="rect" id="node252" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="336,57,561,76"/>
+<area shape="rect" id="node252" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="336,76,561,95"/>
+<area shape="rect" id="node3" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="324,6,572,101"/>
+<area shape="rect" id="node4" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html" title="Socket wrapper that creates HTTP message out of sent data and peels&#45;off HTTP headers from incoming messages" alt="" coords="237,705,384,743"/>
+<area shape="rect" id="node253" href="nbxmpp.idlequeue.IdleObject-class.html#fd" title="filedescriptor, must be unique for each IdleObject" alt="" coords="107,248,237,267"/>
+<area shape="rect" id="node5" href="nbxmpp.idlequeue.IdleObject-class.html" title="Idle listener interface. Listed methods are called by IdleQueue." alt="" coords="95,223,249,281"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_8.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_8" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Non-blocking TCP socket wrapper</p>
+<p>It is used for simple XMPP connection. Can be connected via proxy and can
+estabilish TLS connection.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">raise_event</span>,
+ <span class="summary-sig-arg">on_disconnect</span>,
+ <span class="summary-sig-arg">idlequeue</span>,
+ <span class="summary-sig-arg">estabilish_tls</span>,
+ <span class="summary-sig-arg">certs</span>,
+ <span class="summary-sig-arg">proxy_dict</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#start_disconnect" class="summary-sig-name">start_disconnect</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.start_disconnect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#connect" class="summary-sig-name">connect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">conn_5tuple</span>,
+ <span class="summary-sig-arg">on_connect</span>,
+ <span class="summary-sig-arg">on_connect_failure</span>)</span><br />
+ Creates and connects transport to server and port defined in conn_5tuple
+which should be item from list returned from getaddrinfo</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_connect_to_proxy" class="summary-sig-name" onclick="show_private();">_connect_to_proxy</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._connect_to_proxy">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_connect" class="summary-sig-name" onclick="show_private();">_on_connect</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Preceed invoking of on_connect callback. TCP connection is already
+estabilished by this time</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._on_connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#tls_init" class="summary-sig-name">tls_init</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">on_succ</span>,
+ <span class="summary-sig-arg">on_fail</span>)</span><br />
+ Estabilishes TLS/SSL using this TCP connection by plugging a
+NonBlockingTLS module</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.tls_init">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollin" class="summary-sig-name">pollin</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called by idlequeu when receive on plugged socket is possible</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.pollin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollout" class="summary-sig-name">pollout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called by idlequeu when send to plugged socket is possible</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.pollout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#pollend" class="summary-sig-name">pollend</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called by idlequeue on TCP connection errors</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.pollend">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#disconnect" class="summary-sig-name">disconnect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">do_callback</span>=<span class="summary-sig-default">True</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.disconnect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#read_timeout" class="summary-sig-name">read_timeout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called when there's no response from server in defined timeout</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.read_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout" class="summary-sig-name">set_timeout</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">timeout</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.set_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#remove_timeout" class="summary-sig-name">remove_timeout</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.remove_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">raw_data</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span><br />
+ Append raw_data to the queue of messages to be send. If supplied data is
+unicode string, encode it to utf-8.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#encode_stanza" class="summary-sig-name">encode_stanza</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">stanza</span>)</span><br />
+ Encode str or unicode to utf-8</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.encode_stanza">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_plug_idle" class="summary-sig-name" onclick="show_private();">_plug_idle</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">writable</span>,
+ <span class="summary-sig-arg">readable</span>)</span><br />
+ Plug file descriptor of socket to Idlequeue</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._plug_idle">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_send" class="summary-sig-name" onclick="show_private();">_do_send</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called when send() to connected socket is possible. First message from
+sendqueue will be sent</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._do_send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_do_receive" class="summary-sig-name" onclick="show_private();">_do_receive</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Reads all pending incoming data. Will call owner's disconnected() method
+if appropriate</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._do_receive">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTCP-class.html#_on_receive" class="summary-sig-name" onclick="show_private();">_on_receive</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">data</span>)</span><br />
+ Preceeds on_receive callback. It peels off and checks HTTP headers in
+HTTP classes, in here it just calls the callback</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._on_receive">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a></code></b>:
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd">get_fd</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state">get_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive">onreceive</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin">plugin</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout">plugout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2">read_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout">renew_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2">renew_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout">set_send_timeout</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2">set_send_timeout2</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state">set_state</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2">set_timeout2</a></code>
+ </p>
+ <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html">NonBlockingTransport</a></code></b> (private):
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure" onclick="show_private();">_on_connect_failure</a></code>,
+ <code><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started" onclick="show_private();">_tcp_connecting_started</a></code>
+ </p></div>
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.idlequeue.IdleObject-class.html">idlequeue.IdleObject</a></code></b>:
+ <code><a href="nbxmpp.idlequeue.IdleObject-class.html#fd">fd</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">raise_event</span>,
+ <span class="sig-arg">on_disconnect</span>,
+ <span class="sig-arg">idlequeue</span>,
+ <span class="sig-arg">estabilish_tls</span>,
+ <span class="sig-arg">certs</span>,
+ <span class="sig-arg">proxy_dict</span>=<span class="sig-default">None</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>proxy_dict</code></strong> - dictionary with proxy data as loaded from config file</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#__init__">idlequeue.IdleObject.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="start_disconnect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">start_disconnect</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.start_disconnect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect">NonBlockingTransport.start_disconnect</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="connect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">connect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">conn_5tuple</span>,
+ <span class="sig-arg">on_connect</span>,
+ <span class="sig-arg">on_connect_failure</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Creates and connects transport to server and port defined in conn_5tuple
+which should be item from list returned from getaddrinfo
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>conn_5tuple</code></strong> - 5-tuple returned from getaddrinfo</li>
+ <li><strong class="pname"><code>on_connect</code></strong> - callback called on successful connect to the server</li>
+ <li><strong class="pname"><code>on_connect_failure</code></strong> - callback called on failure when connecting</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#connect">NonBlockingTransport.connect</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_connect_to_proxy"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_connect_to_proxy</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._connect_to_proxy">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_connect"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_connect</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._on_connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Preceed invoking of on_connect callback. TCP connection is already
+estabilished by this time
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect" onclick="show_private();">NonBlockingTransport._on_connect</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="tls_init"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">tls_init</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">on_succ</span>,
+ <span class="sig-arg">on_fail</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.tls_init">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Estabilishes TLS/SSL using this TCP connection by plugging a
+NonBlockingTLS module
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollin</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.pollin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called by idlequeu when receive on plugged socket is possible
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#pollin">idlequeue.IdleObject.pollin</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.pollout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called by idlequeu when send to plugged socket is possible
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#pollout">idlequeue.IdleObject.pollout</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="pollend"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">pollend</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.pollend">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called by idlequeue on TCP connection errors
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#pollend">idlequeue.IdleObject.pollend</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="disconnect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">disconnect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">do_callback</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.disconnect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect">NonBlockingTransport.disconnect</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="read_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">read_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.read_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called when there's no response from server in defined timeout
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.idlequeue.IdleObject-class.html#read_timeout">idlequeue.IdleObject.read_timeout</a>
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_timeout</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">timeout</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.set_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout">NonBlockingTransport.set_timeout</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="remove_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">remove_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.remove_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout">NonBlockingTransport.remove_timeout</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">raw_data</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Append raw_data to the queue of messages to be send. If supplied data is
+unicode string, encode it to utf-8.
+ <dl class="fields">
+ <dt>Overrides:
+ <a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#send">NonBlockingTransport.send</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="encode_stanza"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">encode_stanza</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">stanza</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP.encode_stanza">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Encode str or unicode to utf-8
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_plug_idle"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_plug_idle</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">writable</span>,
+ <span class="sig-arg">readable</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._plug_idle">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Plug file descriptor of socket to Idlequeue</p>
+<p>Plugged socket will be watched for &quot;send possible&quot; or/and &quot;recv possible&quot;
+events. pollin() callback is invoked on &quot;recv possible&quot;, pollout() on
+&quot;send_possible&quot;.</p>
+<p>Plugged socket will always be watched for &quot;error&quot; event - in that case,
+pollend() is called.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_do_send"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_do_send</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._do_send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called when send() to connected socket is possible. First message from
+sendqueue will be sent
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_do_receive"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_do_receive</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._do_receive">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Reads all pending incoming data. Will call owner's disconnected() method
+if appropriate
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_receive"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_receive</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">data</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTCP._on_receive">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Preceeds on_receive callback. It peels off and checks HTTP headers in
+HTTP classes, in here it just calls the callback
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/nbxmpp.transports_nb.NonBlockingTransport-class.html b/doc/apidocs/nbxmpp.transports_nb.NonBlockingTransport-class.html
new file mode 100644
index 0000000..56fed7a
--- /dev/null
+++ b/doc/apidocs/nbxmpp.transports_nb.NonBlockingTransport-class.html
@@ -0,0 +1,1102 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp.transports_nb.NonBlockingTransport</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="nbxmpp-module.html">Package&nbsp;nbxmpp</a> ::
+ <a href="nbxmpp.transports_nb-module.html">Module&nbsp;transports_nb</a> ::
+ Class&nbsp;NonBlockingTransport
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >]&nbsp;|&nbsp;<a href="nbxmpp.transports_nb.NonBlockingTransport-class.html"
+ target="_top">no&nbsp;frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NonBlockingTransport</h1><p class="nomargin-top"><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport">source&nbsp;code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_nbxmpp_t_9" name="uml_class_diagram_for_nbxmpp_t_9">
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__" title="Each trasport class can have different constructor but it has to have at least all the arguments of NonBlockingTransport constructor" alt="" coords="17,153,485,172"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin" title="nbxmpp.transports_nb.NonBlockingTransport.plugin" alt="" coords="17,172,485,191"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout" title="nbxmpp.transports_nb.NonBlockingTransport.plugout" alt="" coords="17,191,485,209"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#connect" title="Creates and connects transport to server and port defined in conn_5tuple which should be item from list returned from getaddrinfo" alt="" coords="17,209,485,228"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state" title="nbxmpp.transports_nb.NonBlockingTransport.set_state" alt="" coords="17,228,485,247"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state" title="nbxmpp.transports_nb.NonBlockingTransport.get_state" alt="" coords="17,247,485,265"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#send" title="nbxmpp.transports_nb.NonBlockingTransport.send" alt="" coords="17,265,485,284"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect" title="nbxmpp.transports_nb.NonBlockingTransport.disconnect" alt="" coords="17,284,485,303"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive" title="Set the on_receive callback." alt="" coords="17,303,485,321"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout" title="Called when there&#39;s no response from server in defined timeout" alt="" coords="17,321,485,340"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2" title="called when there&#39;s no response from server in defined timeout" alt="" coords="17,340,485,359"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout" alt="" coords="17,359,485,377"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2" title="nbxmpp.transports_nb.NonBlockingTransport.renew_send_timeout2" alt="" coords="17,377,485,396"/>
+<area shape="rect" id="node256" href="nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect" title="nbxmpp.transports_nb.NonBlockingTransport.start_disconnect" alt="" coords="17,415,485,433"/>
+<area shape="rect" id="node1" href="nbxmpp.transports_nb.NonBlockingTransport-class.html" title="Abstract class representing a transport" alt="" coords="5,121,496,439"/>
+<area shape="rect" id="node4" href="nbxmpp.bosh.NonBlockingBOSH-class.html" title="nbxmpp.bosh.NonBlockingBOSH" alt="" coords="61,459,251,498"/>
+<area shape="rect" id="node6" href="nbxmpp.transports_nb.NonBlockingTCP-class.html" title="Non&#45;blocking TCP socket wrapper" alt="" coords="280,459,419,498"/>
+<area shape="rect" id="node257" href="nbxmpp.plugin.PlugIn-class.html#PlugIn" title="Attach to owner and register ourself and our _exported_methods in it. If defined by a subclass, call self.plugin(owner) to execute hook code after plugging" alt="" coords="139,39,364,57"/>
+<area shape="rect" id="node257" href="nbxmpp.plugin.PlugIn-class.html#PlugOut" title="Unregister our _exported_methods from owner and detach from it. If defined by a subclass, call self.plugout() after unplugging to execute hook code" alt="" coords="139,57,364,76"/>
+<area shape="rect" id="node257" href="nbxmpp.plugin.PlugIn-class.html#get_instance" title="Factory Method for object creation" alt="" coords="139,76,364,95"/>
+<area shape="rect" id="node2" href="nbxmpp.plugin.PlugIn-class.html" title="Abstract xmpppy plugin infrastructure code, providing plugging in/out and debugging functionality" alt="" coords="127,6,375,101"/>
+<area shape="rect" id="node3" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html" title="Socket wrapper that creates HTTP message out of sent data and peels&#45;off HTTP headers from incoming messages" alt="" coords="276,518,423,557"/>
+<area shape="rect" id="node5" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html" title="Class for BOSH HTTP connections. Slightly redefines HTTP transport by calling bosh bodytag generating callback before putting data on wire" alt="" coords="257,577,441,615"/>
+</map>
+ <img src="uml_class_diagram_for_nbxmpp_t_9.gif" alt='' usemap="#uml_class_diagram_for_nbxmpp_t_9" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Abstract class representing a transport</p>
+<p>Subclasses CAN have different constructor signature but connect method SHOULD
+be the same.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">raise_event</span>,
+ <span class="summary-sig-arg">on_disconnect</span>,
+ <span class="summary-sig-arg">idlequeue</span>,
+ <span class="summary-sig-arg">estabilish_tls</span>,
+ <span class="summary-sig-arg">certs</span>)</span><br />
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.__init__">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugin" class="summary-sig-name">plugin</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">owner</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.plugin">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#plugout" class="summary-sig-name">plugout</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.plugout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#connect" class="summary-sig-name">connect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">conn_5tuple</span>,
+ <span class="summary-sig-arg">on_connect</span>,
+ <span class="summary-sig-arg">on_connect_failure</span>)</span><br />
+ Creates and connects transport to server and port defined in conn_5tuple
+which should be item from list returned from getaddrinfo</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_state" class="summary-sig-name">set_state</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">newstate</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_state">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_state" class="summary-sig-name">get_state</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.get_state">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect" class="summary-sig-name" onclick="show_private();">_on_connect</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Preceeds call of on_connect callback</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport._on_connect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_on_connect_failure" class="summary-sig-name" onclick="show_private();">_on_connect_failure</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">err_message</span>)</span><br />
+ Preceeds call of on_connect_failure callback</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport._on_connect_failure">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">raw_data</span>,
+ <span class="summary-sig-arg">now</span>=<span class="summary-sig-default">False</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.send">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#disconnect" class="summary-sig-name">disconnect</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">do_callback</span>=<span class="summary-sig-default">True</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.disconnect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive" class="summary-sig-name">onreceive</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">recv_handler</span>)</span><br />
+ Set the on_receive callback.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.onreceive">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#_tcp_connecting_started" class="summary-sig-name" onclick="show_private();">_tcp_connecting_started</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport._tcp_connecting_started">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout" class="summary-sig-name">read_timeout</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Called when there's no response from server in defined timeout</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.read_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#read_timeout2" class="summary-sig-name">read_timeout2</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ called when there's no response from server in defined timeout</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.read_timeout2">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout" class="summary-sig-name">renew_send_timeout</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.renew_send_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#renew_send_timeout2" class="summary-sig-name">renew_send_timeout2</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.renew_send_timeout2">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout" class="summary-sig-name">set_timeout</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">timeout</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout2" class="summary-sig-name">set_timeout2</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">timeout2</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_timeout2">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#get_fd" class="summary-sig-name">get_fd</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.get_fd">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#remove_timeout" class="summary-sig-name">remove_timeout</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.remove_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout" class="summary-sig-name">set_send_timeout</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">timeout</span>,
+ <span class="summary-sig-arg">on_timeout</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_send_timeout">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#set_send_timeout2" class="summary-sig-name">set_send_timeout2</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">timeout2</span>,
+ <span class="summary-sig-arg">on_timeout2</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_send_timeout2">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">&nbsp;</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="nbxmpp.transports_nb.NonBlockingTransport-class.html#start_disconnect" class="summary-sig-name">start_disconnect</a>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.start_disconnect">source&nbsp;code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugIn">PlugIn</a></code>,
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#PlugOut">PlugOut</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS METHODS ==================== -->
+<a name="section-ClassMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="nbxmpp.plugin.PlugIn-class.html">plugin.PlugIn</a></code></b>:
+ <code><a href="nbxmpp.plugin.PlugIn-class.html#get_instance">get_instance</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">raise_event</span>,
+ <span class="sig-arg">on_disconnect</span>,
+ <span class="sig-arg">idlequeue</span>,
+ <span class="sig-arg">estabilish_tls</span>,
+ <span class="sig-arg">certs</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.__init__">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Each trasport class can have different constructor but it has to have at
+least all the arguments of NonBlockingTransport constructor
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>raise_event</code></strong> - callback for monitoring of sent and received data</li>
+ <li><strong class="pname"><code>on_disconnect</code></strong> - callback called on disconnection during runtime</li>
+ <li><strong class="pname"><code>idlequeue</code></strong> - processing idlequeue</li>
+ <li><strong class="pname"><code>estabilish_tls</code></strong> - boolean whether to estabilish TLS connection after
+TCP connection is done</li>
+ <li><strong class="pname"><code>certs</code></strong> - tuple of (cacerts, mycerts) see constructor of
+tls_nb.NonBlockingTLS for more details</li>
+ </ul></dd>
+ <dt>Overrides:
+ <a href="nbxmpp.plugin.PlugIn-class.html#__init__">plugin.PlugIn.__init__</a>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugin"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugin</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">owner</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.plugin">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="plugout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">plugout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.plugout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="connect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">connect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">conn_5tuple</span>,
+ <span class="sig-arg">on_connect</span>,
+ <span class="sig-arg">on_connect_failure</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Creates and connects transport to server and port defined in conn_5tuple
+which should be item from list returned from getaddrinfo
+ <dl class="fields">
+ <dt>Parameters:</dt>
+ <dd><ul class="nomargin-top">
+ <li><strong class="pname"><code>conn_5tuple</code></strong> - 5-tuple returned from getaddrinfo</li>
+ <li><strong class="pname"><code>on_connect</code></strong> - callback called on successful connect to the server</li>
+ <li><strong class="pname"><code>on_connect_failure</code></strong> - callback called on failure when connecting</li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_state"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_state</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">newstate</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_state">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_state"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_state</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.get_state">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_connect"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_connect</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport._on_connect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Preceeds call of on_connect callback
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_on_connect_failure"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_on_connect_failure</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">err_message</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport._on_connect_failure">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Preceeds call of on_connect_failure callback
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="send"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">send</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">raw_data</span>,
+ <span class="sig-arg">now</span>=<span class="sig-default">False</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.send">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="disconnect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">disconnect</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">do_callback</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.disconnect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="onreceive"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">onreceive</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">recv_handler</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.onreceive">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ <p>Set the on_receive callback.</p>
+<p>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.</p>
+<p>Do not confuse it with on_receive() method, which is the callback
+itself.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="_tcp_connecting_started"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_tcp_connecting_started</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport._tcp_connecting_started">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="read_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">read_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.read_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ Called when there's no response from server in defined timeout
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="read_timeout2"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">read_timeout2</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.read_timeout2">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+ called when there's no response from server in defined timeout
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="renew_send_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">renew_send_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.renew_send_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="renew_send_timeout2"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">renew_send_timeout2</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.renew_send_timeout2">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_timeout</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">timeout</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_timeout2"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_timeout2</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">timeout2</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_timeout2">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_fd"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_fd</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.get_fd">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="remove_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">remove_timeout</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.remove_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_send_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_send_timeout</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">timeout</span>,
+ <span class="sig-arg">on_timeout</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_send_timeout">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_send_timeout2"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_send_timeout2</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">timeout2</span>,
+ <span class="sig-arg">on_timeout2</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.set_send_timeout2">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="start_disconnect"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">start_disconnect</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="nbxmpp.transports_nb-pysrc.html#NonBlockingTransport.start_disconnect">source&nbsp;code</a></span>&nbsp;
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="nbxmpp-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Tree link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Index link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Help link -->
+ <th>&nbsp;&nbsp;&nbsp;<a
+ href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://python-nbxmpp.gajim.org">python-nbxmpp</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/redirect.html b/doc/apidocs/redirect.html
new file mode 100644
index 0000000..743f852
--- /dev/null
+++ b/doc/apidocs/redirect.html
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["nbxmpp.stringprepare.MappingTableFromFunction-c", "nbxmpp.proxy_connectors.HTTPCONNECTConnector-c", "nbxmpp.stringprepare.LookupTableFromFunction-c", "nbxmpp.transports_nb.NonBlockingTransport-c", "nbxmpp.transports_nb.NonBlockingHTTPBOSH-c", "nbxmpp.proxy_connectors.SOCKS5Connector-c", "nbxmpp.protocol.RemoteConnectionFailed-c", "nbxmpp.proxy_connectors.ProxyConnector-c", "nbxmpp.stringprepare.EmptyMappingTable-c", "nbxmpp.protocol.UnsupportedStanzaType-c", "nbxmpp.transports_nb.NonBlockingHTTP-c", "nbxmpp.dispatcher_nb.BOSHDispatcher-c", "nbxmpp.dispatcher_nb.XMPPDispatcher-c", "nbxmpp.protocol.InternalServerError-c", "nbxmpp.protocol.UnsupportedEncoding-c", "nbxmpp.transports_nb.NonBlockingTCP-c", "nbxmpp.client_nb.NonBlockingClient-c", "nbxmpp.protocol.BadNamespacePrefix-c", "nbxmpp.protocol.ImproperAddressing-c", "nbxmpp.protocol.ResourceConstraint-c", "nbxmpp.protocol.UndefinedCondition-c", "nbxmpp.protocol.UnsupportedVersion-c", "nbxmpp.roster_nb.NonBlockingRoster-c", "nbxmpp.stringprepare.IMappingTable-c", "nbxmpp.auth_nb.NonBlockingNonSASL-c", "nbxmpp.protocol.ConnectionTimeout-c", "nbxmpp.stringprepare.ILookupTable-c", "nbxmpp.idlequeue.SelectIdleQueue-c", "nbxmpp.protocol.InvalidNamespace-c", "nbxmpp.protocol.XMLNotWellFormed-c", "nbxmpp.stringprepare.LookupTable-c", "nbxmpp.dispatcher_nb.Dispatcher-c", "nbxmpp.protocol.PolicyViolation-c", "nbxmpp.auth_nb.NonBlockingBind-c", "nbxmpp.idlequeue.GlibIdleQueue-c", "nbxmpp.protocol.SystemShutdown-c", "nbxmpp.tls_nb.PyOpenSSLWrapper-c", "nbxmpp.tls_nb.SSLWrapper.Error-c", "nbxmpp.tls_nb.StdlibSSLWrapper-c", "nbxmpp.protocol.NodeProcessed-c", "nbxmpp.protocol.NotAuthorized-c", "nbxmpp.protocol.RestrictedXML-c", "nbxmpp.stringprepare.NamePrep-c", "nbxmpp.idlequeue.IdleCommand-c", "nbxmpp.protocol.SeeOtherHost-c", "nbxmpp.simplexml.NodeBuilder-c", "nbxmpp.stringprepare.Profile-c", "nbxmpp.tls_nb.NonBlockingTLS-c", "nbxmpp.bosh.NonBlockingBOSH-c", "nbxmpp.idlequeue.IdleObject-c", "nbxmpp.protocol.HostUnknown-c", "nbxmpp.protocol.InvalidFrom-c", "nbxmpp.protocol.StreamError-c", "nbxmpp.idlequeue.IdleQueue-c", "nbxmpp.protocol.InvalidXML-c", "nbxmpp.protocol.BadFormat-c", "nbxmpp.protocol.DataField-c", "nbxmpp.protocol.ErrorNode-c", "nbxmpp.protocol.InvalidID-c", "nbxmpp.protocol.BOSHBody-c", "nbxmpp.protocol.Conflict-c", "nbxmpp.protocol.DataForm-c", "nbxmpp.protocol.HostGone-c", "nbxmpp.protocol.Presence-c", "nbxmpp.protocol.Protocol-c", "nbxmpp.tls_nb.SSLWrapper-c", "nbxmpp.proxy_connectors-m", "nbxmpp.protocol.Message-c", "nbxmpp.bosh.AckChecker-c", "nbxmpp.protocol.Hashes-c", "nbxmpp.protocol.Error-c", "nbxmpp.simplexml.Node-c", "nbxmpp.dispatcher_nb-m", "nbxmpp.stringprepare-m", "nbxmpp.transports_nb-m", "nbxmpp.bosh.KeyStack-c", "nbxmpp.plugin.PlugIn-c", "nbxmpp.protocol.Acks-c", "nbxmpp.smacks.Smacks-c", "nbxmpp.auth_nb.SASL-c", "nbxmpp.protocol.JID-c", "nbxmpp.simplexml.NT-c", "nbxmpp.features_nb-m", "nbxmpp.protocol.Iq-c", "nbxmpp.simplexml.T-c", "nbxmpp.client_nb-m", "nbxmpp.idlequeue-m", "nbxmpp.roster_nb-m", "nbxmpp.simplexml-m", "nbxmpp.protocol-m", "nbxmpp.auth_nb-m", "nbxmpp.plugin-m", "nbxmpp.smacks-m", "nbxmpp.tls_nb-m", "nbxmpp.bosh-m", "nbxmpp.c14n-m", "nbxmpp-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+ var target = redirect_url(dottedName);
+ if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message"> &nbsp; </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+ var msg = document.getElementById("message");
+ msg.innerHTML = "No documentation found for <tt>"+
+ dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/doc/apidocs/toc-everything.html b/doc/apidocs/toc-everything.html
new file mode 100644
index 0000000..55d622e
--- /dev/null
+++ b/doc/apidocs/toc-everything.html
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Everything</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+ <h2 class="toc">All Classes</h2>
+ <a target="mainFrame" href="nbxmpp.auth_nb.NonBlockingBind-class.html"
+ >nbxmpp.auth_nb.NonBlockingBind</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html"
+ >nbxmpp.auth_nb.NonBlockingNonSASL</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb.SASL-class.html"
+ >nbxmpp.auth_nb.SASL</a><br /> <a target="mainFrame" href="nbxmpp.bosh.AckChecker-class.html"
+ >nbxmpp.bosh.AckChecker</a><br /> <a target="mainFrame" href="nbxmpp.bosh.KeyStack-class.html"
+ >nbxmpp.bosh.KeyStack</a><br /> <a target="mainFrame" href="nbxmpp.bosh.NonBlockingBOSH-class.html"
+ >nbxmpp.bosh.NonBlockingBOSH</a><br /> <a target="mainFrame" href="nbxmpp.client_nb.NonBlockingClient-class.html"
+ >nbxmpp.client_nb.NonBlockingClient</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html"
+ >nbxmpp.dispatcher_nb.BOSHDispatcher</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb.Dispatcher-class.html"
+ >nbxmpp.dispatcher_nb.Dispatcher</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html"
+ >nbxmpp.dispatcher_nb.XMPPDispatcher</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.GlibIdleQueue-class.html"
+ >nbxmpp.idlequeue.GlibIdleQueue</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.IdleCommand-class.html"
+ >nbxmpp.idlequeue.IdleCommand</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.IdleObject-class.html"
+ >nbxmpp.idlequeue.IdleObject</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.IdleQueue-class.html"
+ >nbxmpp.idlequeue.IdleQueue</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.SelectIdleQueue-class.html"
+ >nbxmpp.idlequeue.SelectIdleQueue</a><br /> <a target="mainFrame" href="nbxmpp.plugin.PlugIn-class.html"
+ >nbxmpp.plugin.PlugIn</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Acks-class.html"
+ >nbxmpp.protocol.Acks</a><br /> <a target="mainFrame" href="nbxmpp.protocol.BOSHBody-class.html"
+ >nbxmpp.protocol.BOSHBody</a><br /> <a target="mainFrame" href="nbxmpp.protocol.BadFormat-class.html"
+ >nbxmpp.protocol.BadFormat</a><br /> <a target="mainFrame" href="nbxmpp.protocol.BadNamespacePrefix-class.html"
+ >nbxmpp.protocol.BadNamespacePrefix</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Conflict-class.html"
+ >nbxmpp.protocol.Conflict</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ConnectionTimeout-class.html"
+ >nbxmpp.protocol.ConnectionTimeout</a><br /> <a target="mainFrame" href="nbxmpp.protocol.DataField-class.html"
+ >nbxmpp.protocol.DataField</a><br /> <a target="mainFrame" href="nbxmpp.protocol.DataForm-class.html"
+ >nbxmpp.protocol.DataForm</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Error-class.html"
+ >nbxmpp.protocol.Error</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ErrorNode-class.html"
+ >nbxmpp.protocol.ErrorNode</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Hashes-class.html"
+ >nbxmpp.protocol.Hashes</a><br /> <a target="mainFrame" href="nbxmpp.protocol.HostGone-class.html"
+ >nbxmpp.protocol.HostGone</a><br /> <a target="mainFrame" href="nbxmpp.protocol.HostUnknown-class.html"
+ >nbxmpp.protocol.HostUnknown</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ImproperAddressing-class.html"
+ >nbxmpp.protocol.ImproperAddressing</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InternalServerError-class.html"
+ >nbxmpp.protocol.InternalServerError</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidFrom-class.html"
+ >nbxmpp.protocol.InvalidFrom</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidID-class.html"
+ >nbxmpp.protocol.InvalidID</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidNamespace-class.html"
+ >nbxmpp.protocol.InvalidNamespace</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidXML-class.html"
+ >nbxmpp.protocol.InvalidXML</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Iq-class.html"
+ >nbxmpp.protocol.Iq</a><br /> <a target="mainFrame" href="nbxmpp.protocol.JID-class.html"
+ >nbxmpp.protocol.JID</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Message-class.html"
+ >nbxmpp.protocol.Message</a><br /> <a target="mainFrame" href="nbxmpp.protocol.NodeProcessed-class.html"
+ >nbxmpp.protocol.NodeProcessed</a><br /> <a target="mainFrame" href="nbxmpp.protocol.NotAuthorized-class.html"
+ >nbxmpp.protocol.NotAuthorized</a><br /> <a target="mainFrame" href="nbxmpp.protocol.PolicyViolation-class.html"
+ >nbxmpp.protocol.PolicyViolation</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Presence-class.html"
+ >nbxmpp.protocol.Presence</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Protocol-class.html"
+ >nbxmpp.protocol.Protocol</a><br /> <a target="mainFrame" href="nbxmpp.protocol.RemoteConnectionFailed-class.html"
+ >nbxmpp.protocol.RemoteConnectionFailed</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ResourceConstraint-class.html"
+ >nbxmpp.protocol.ResourceConstraint</a><br /> <a target="mainFrame" href="nbxmpp.protocol.RestrictedXML-class.html"
+ >nbxmpp.protocol.RestrictedXML</a><br /> <a target="mainFrame" href="nbxmpp.protocol.SeeOtherHost-class.html"
+ >nbxmpp.protocol.SeeOtherHost</a><br /> <a target="mainFrame" href="nbxmpp.protocol.StreamError-class.html"
+ >nbxmpp.protocol.StreamError</a><br /> <a target="mainFrame" href="nbxmpp.protocol.SystemShutdown-class.html"
+ >nbxmpp.protocol.SystemShutdown</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UndefinedCondition-class.html"
+ >nbxmpp.protocol.UndefinedCondition</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UnsupportedEncoding-class.html"
+ >nbxmpp.protocol.UnsupportedEncoding</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UnsupportedStanzaType-class.html"
+ >nbxmpp.protocol.UnsupportedStanzaType</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UnsupportedVersion-class.html"
+ >nbxmpp.protocol.UnsupportedVersion</a><br /> <a target="mainFrame" href="nbxmpp.protocol.XMLNotWellFormed-class.html"
+ >nbxmpp.protocol.XMLNotWellFormed</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html"
+ >nbxmpp.proxy_connectors.HTTPCONNECTConnector</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors.ProxyConnector-class.html"
+ >nbxmpp.proxy_connectors.ProxyConnector</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html"
+ >nbxmpp.proxy_connectors.SOCKS5Connector</a><br /> <a target="mainFrame" href="nbxmpp.roster_nb.NonBlockingRoster-class.html"
+ >nbxmpp.roster_nb.NonBlockingRoster</a><br /> <a target="mainFrame" href="nbxmpp.simplexml.NT-class.html"
+ >nbxmpp.simplexml.NT</a><br /> <a target="mainFrame" href="nbxmpp.simplexml.Node-class.html"
+ >nbxmpp.simplexml.Node</a><br /> <a target="mainFrame" href="nbxmpp.simplexml.NodeBuilder-class.html"
+ >nbxmpp.simplexml.NodeBuilder</a><br /> <a target="mainFrame" href="nbxmpp.simplexml.T-class.html"
+ >nbxmpp.simplexml.T</a><br /> <a target="mainFrame" href="nbxmpp.smacks.Smacks-class.html"
+ >nbxmpp.smacks.Smacks</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.EmptyMappingTable-class.html"
+ >nbxmpp.stringprepare.EmptyMappingTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.ILookupTable-class.html"
+ >nbxmpp.stringprepare.ILookupTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.IMappingTable-class.html"
+ >nbxmpp.stringprepare.IMappingTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.LookupTable-class.html"
+ >nbxmpp.stringprepare.LookupTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.LookupTableFromFunction-class.html"
+ >nbxmpp.stringprepare.LookupTableFromFunction</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.MappingTableFromFunction-class.html"
+ >nbxmpp.stringprepare.MappingTableFromFunction</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.NamePrep-class.html"
+ >nbxmpp.stringprepare.NamePrep</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.Profile-class.html"
+ >nbxmpp.stringprepare.Profile</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.NonBlockingTLS-class.html"
+ >nbxmpp.tls_nb.NonBlockingTLS</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html"
+ >nbxmpp.tls_nb.PyOpenSSLWrapper</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.SSLWrapper-class.html"
+ >nbxmpp.tls_nb.SSLWrapper</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.SSLWrapper.Error-class.html"
+ >nbxmpp.tls_nb.SSLWrapper.Error</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html"
+ >nbxmpp.tls_nb.StdlibSSLWrapper</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html"
+ >nbxmpp.transports_nb.NonBlockingHTTP</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html"
+ >nbxmpp.transports_nb.NonBlockingHTTPBOSH</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingTCP-class.html"
+ >nbxmpp.transports_nb.NonBlockingTCP</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingTransport-class.html"
+ >nbxmpp.transports_nb.NonBlockingTransport</a><br /> <h2 class="toc">All Functions</h2>
+ <a target="mainFrame" href="nbxmpp.auth_nb-module.html#C"
+ >nbxmpp.auth_nb.C</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#H"
+ >nbxmpp.auth_nb.H</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#HH"
+ >nbxmpp.auth_nb.HH</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#challenge_splitter"
+ >nbxmpp.auth_nb.challenge_splitter</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#scram_parse"
+ >nbxmpp.auth_nb.scram_parse</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#get_rand_number"
+ >nbxmpp.bosh.get_rand_number</a><br /> <a target="mainFrame" href="nbxmpp.c14n-module.html#c14n"
+ >nbxmpp.c14n.c14n</a><br /> <a target="mainFrame" href="nbxmpp.c14n-module.html#normalise_attr"
+ >nbxmpp.c14n.normalise_attr</a><br /> <a target="mainFrame" href="nbxmpp.c14n-module.html#normalise_text"
+ >nbxmpp.c14n.normalise_text</a><br /> <div class="private">
+ <a target="mainFrame" href="nbxmpp.features_nb-module.html#_ReceivedRegInfo"
+ >nbxmpp.features_nb._ReceivedRegInfo</a><br /> </div>
+ <div class="private">
+ <a target="mainFrame" href="nbxmpp.features_nb-module.html#_on_default_response"
+ >nbxmpp.features_nb._on_default_response</a><br /> </div>
+ <a target="mainFrame" href="nbxmpp.features_nb-module.html#changePasswordTo"
+ >nbxmpp.features_nb.changePasswordTo</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#delPrivacyList"
+ >nbxmpp.features_nb.delPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getActiveAndDefaultPrivacyLists"
+ >nbxmpp.features_nb.getActiveAndDefaultPrivacyLists</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getPrivacyList"
+ >nbxmpp.features_nb.getPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getPrivacyLists"
+ >nbxmpp.features_nb.getPrivacyLists</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getRegInfo"
+ >nbxmpp.features_nb.getRegInfo</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#register"
+ >nbxmpp.features_nb.register</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#setActivePrivacyList"
+ >nbxmpp.features_nb.setActivePrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#setDefaultPrivacyList"
+ >nbxmpp.features_nb.setDefaultPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#setPrivacyList"
+ >nbxmpp.features_nb.setPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#unregister"
+ >nbxmpp.features_nb.unregister</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#get_idlequeue"
+ >nbxmpp.idlequeue.get_idlequeue</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ascii_upper"
+ >nbxmpp.protocol.ascii_upper</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#isErrorNode"
+ >nbxmpp.protocol.isErrorNode</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#isResultNode"
+ >nbxmpp.protocol.isResultNode</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#BadXML2Node"
+ >nbxmpp.simplexml.BadXML2Node</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#XML2Node"
+ >nbxmpp.simplexml.XML2Node</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#XMLescape"
+ >nbxmpp.simplexml.XMLescape</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#ustr"
+ >nbxmpp.simplexml.ustr</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#gattr"
+ >nbxmpp.tls_nb.gattr</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#get_proxy_data_from_dict"
+ >nbxmpp.transports_nb.get_proxy_data_from_dict</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#urisplit"
+ >nbxmpp.transports_nb.urisplit</a><br /> <h2 class="toc">All Variables</h2>
+ <a target="mainFrame" href="nbxmpp-module.html#ERRORS"
+ >nbxmpp.ERRORS</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_BAD_REQUEST"
+ >nbxmpp.ERR_BAD_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_CONFLICT"
+ >nbxmpp.ERR_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_FEATURE_NOT_IMPLEMENTED"
+ >nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_FORBIDDEN"
+ >nbxmpp.ERR_FORBIDDEN</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_GONE"
+ >nbxmpp.ERR_GONE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_INTERNAL_SERVER_ERROR"
+ >nbxmpp.ERR_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_ITEM_NOT_FOUND"
+ >nbxmpp.ERR_ITEM_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_JID_MALFORMED"
+ >nbxmpp.ERR_JID_MALFORMED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_NOT_ACCEPTABLE"
+ >nbxmpp.ERR_NOT_ACCEPTABLE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_NOT_ALLOWED"
+ >nbxmpp.ERR_NOT_ALLOWED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_NOT_AUTHORIZED"
+ >nbxmpp.ERR_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_PAYMENT_REQUIRED"
+ >nbxmpp.ERR_PAYMENT_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_RECIPIENT_UNAVAILABLE"
+ >nbxmpp.ERR_RECIPIENT_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REDIRECT"
+ >nbxmpp.ERR_REDIRECT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REGISTRATION_REQUIRED"
+ >nbxmpp.ERR_REGISTRATION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REMOTE_SERVER_NOT_FOUND"
+ >nbxmpp.ERR_REMOTE_SERVER_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REMOTE_SERVER_TIMEOUT"
+ >nbxmpp.ERR_REMOTE_SERVER_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_RESOURCE_CONSTRAINT"
+ >nbxmpp.ERR_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_SERVICE_UNAVAILABLE"
+ >nbxmpp.ERR_SERVICE_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_SUBSCRIPTION_REQUIRED"
+ >nbxmpp.ERR_SUBSCRIPTION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_UNDEFINED_CONDITION"
+ >nbxmpp.ERR_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_UNEXPECTED_REQUEST"
+ >nbxmpp.ERR_UNEXPECTED_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_ABORTED"
+ >nbxmpp.SASL_ABORTED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_INCORRECT_ENCODING"
+ >nbxmpp.SASL_INCORRECT_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_INVALID_AUTHZID"
+ >nbxmpp.SASL_INVALID_AUTHZID</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_INVALID_MECHANISM"
+ >nbxmpp.SASL_INVALID_MECHANISM</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_MECHANISM_TOO_WEAK"
+ >nbxmpp.SASL_MECHANISM_TOO_WEAK</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_NOT_AUTHORIZED"
+ >nbxmpp.SASL_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_TEMPORARY_AUTH_FAILURE"
+ >nbxmpp.SASL_TEMPORARY_AUTH_FAILURE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_BAD_FORMAT"
+ >nbxmpp.STREAM_BAD_FORMAT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_BAD_NAMESPACE_PREFIX"
+ >nbxmpp.STREAM_BAD_NAMESPACE_PREFIX</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_CONFLICT"
+ >nbxmpp.STREAM_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_CONNECTION_TIMEOUT"
+ >nbxmpp.STREAM_CONNECTION_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_HOST_GONE"
+ >nbxmpp.STREAM_HOST_GONE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_HOST_UNKNOWN"
+ >nbxmpp.STREAM_HOST_UNKNOWN</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_IMPROPER_ADDRESSING"
+ >nbxmpp.STREAM_IMPROPER_ADDRESSING</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INTERNAL_SERVER_ERROR"
+ >nbxmpp.STREAM_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_FROM"
+ >nbxmpp.STREAM_INVALID_FROM</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_ID"
+ >nbxmpp.STREAM_INVALID_ID</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_NAMESPACE"
+ >nbxmpp.STREAM_INVALID_NAMESPACE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_XML"
+ >nbxmpp.STREAM_INVALID_XML</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_NOT_AUTHORIZED"
+ >nbxmpp.STREAM_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_POLICY_VIOLATION"
+ >nbxmpp.STREAM_POLICY_VIOLATION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_REMOTE_CONNECTION_FAILED"
+ >nbxmpp.STREAM_REMOTE_CONNECTION_FAILED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_RESOURCE_CONSTRAINT"
+ >nbxmpp.STREAM_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_RESTRICTED_XML"
+ >nbxmpp.STREAM_RESTRICTED_XML</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_SEE_OTHER_HOST"
+ >nbxmpp.STREAM_SEE_OTHER_HOST</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_SYSTEM_SHUTDOWN"
+ >nbxmpp.STREAM_SYSTEM_SHUTDOWN</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNDEFINED_CONDITION"
+ >nbxmpp.STREAM_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNSUPPORTED_ENCODING"
+ >nbxmpp.STREAM_UNSUPPORTED_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNSUPPORTED_STANZA_TYPE"
+ >nbxmpp.STREAM_UNSUPPORTED_STANZA_TYPE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNSUPPORTED_VERSION"
+ >nbxmpp.STREAM_UNSUPPORTED_VERSION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_XML_NOT_WELL_FORMED"
+ >nbxmpp.STREAM_XML_NOT_WELL_FORMED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#__package__"
+ >nbxmpp.__package__</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#GSS_STATE_STEP"
+ >nbxmpp.auth_nb.GSS_STATE_STEP</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#GSS_STATE_WRAP"
+ >nbxmpp.auth_nb.GSS_STATE_WRAP</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_FAILURE"
+ >nbxmpp.auth_nb.SASL_FAILURE</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_FAILURE_IN_PROGRESS"
+ >nbxmpp.auth_nb.SASL_FAILURE_IN_PROGRESS</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_IN_PROCESS"
+ >nbxmpp.auth_nb.SASL_IN_PROCESS</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_SUCCESS"
+ >nbxmpp.auth_nb.SASL_SUCCESS</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_UNSUPPORTED"
+ >nbxmpp.auth_nb.SASL_UNSUPPORTED</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#__package__"
+ >nbxmpp.auth_nb.__package__</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#have_kerberos"
+ >nbxmpp.auth_nb.have_kerberos</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#kerberos"
+ >nbxmpp.auth_nb.kerberos</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#log"
+ >nbxmpp.auth_nb.log</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#FAKE_DESCRIPTOR"
+ >nbxmpp.bosh.FAKE_DESCRIPTOR</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#KEY_COUNT"
+ >nbxmpp.bosh.KEY_COUNT</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#__package__"
+ >nbxmpp.bosh.__package__</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#bosh_errors"
+ >nbxmpp.bosh.bosh_errors</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#log"
+ >nbxmpp.bosh.log</a><br /> <a target="mainFrame" href="nbxmpp.c14n-module.html#__package__"
+ >nbxmpp.c14n.__package__</a><br /> <a target="mainFrame" href="nbxmpp.client_nb-module.html#__package__"
+ >nbxmpp.client_nb.__package__</a><br /> <a target="mainFrame" href="nbxmpp.client_nb-module.html#log"
+ >nbxmpp.client_nb.log</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#DEFAULT_TIMEOUT_SECONDS"
+ >nbxmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#XML_DECLARATION"
+ >nbxmpp.dispatcher_nb.XML_DECLARATION</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#__package__"
+ >nbxmpp.dispatcher_nb.__package__</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#log"
+ >nbxmpp.dispatcher_nb.log</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#outgoingID"
+ >nbxmpp.dispatcher_nb.outgoingID</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_ACT_ALLOW"
+ >nbxmpp.features_nb.PL_ACT_ALLOW</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_ACT_DENY"
+ >nbxmpp.features_nb.PL_ACT_DENY</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_TYPE_GROUP"
+ >nbxmpp.features_nb.PL_TYPE_GROUP</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_TYPE_JID"
+ >nbxmpp.features_nb.PL_TYPE_JID</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_TYPE_SUBC"
+ >nbxmpp.features_nb.PL_TYPE_SUBC</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_ACTIVE_DEFAULT"
+ >nbxmpp.features_nb.PRIVACY_LISTS_ACTIVE_DEFAULT</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_RECEIVED"
+ >nbxmpp.features_nb.PRIVACY_LISTS_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PRIVACY_LIST_RECEIVED"
+ >nbxmpp.features_nb.PRIVACY_LIST_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#REGISTER_DATA_RECEIVED"
+ >nbxmpp.features_nb.REGISTER_DATA_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#__package__"
+ >nbxmpp.features_nb.__package__</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_CLOSE"
+ >nbxmpp.idlequeue.FLAG_CLOSE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_READ"
+ >nbxmpp.idlequeue.FLAG_READ</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_READ_WRITE"
+ >nbxmpp.idlequeue.FLAG_READ_WRITE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_WRITE"
+ >nbxmpp.idlequeue.FLAG_WRITE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#HAVE_GOBJECT"
+ >nbxmpp.idlequeue.HAVE_GOBJECT</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#IS_CLOSED"
+ >nbxmpp.idlequeue.IS_CLOSED</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#PENDING_READ"
+ >nbxmpp.idlequeue.PENDING_READ</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#PENDING_WRITE"
+ >nbxmpp.idlequeue.PENDING_WRITE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#__package__"
+ >nbxmpp.idlequeue.__package__</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#log"
+ >nbxmpp.idlequeue.log</a><br /> <a target="mainFrame" href="nbxmpp-module.html#name"
+ >nbxmpp.name</a><br /> <a target="mainFrame" href="nbxmpp.plugin-module.html#__package__"
+ >nbxmpp.plugin.__package__</a><br /> <a target="mainFrame" href="nbxmpp.plugin-module.html#log"
+ >nbxmpp.plugin.log</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERRORS"
+ >nbxmpp.protocol.ERRORS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_BAD_REQUEST"
+ >nbxmpp.protocol.ERR_BAD_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_CONFLICT"
+ >nbxmpp.protocol.ERR_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED"
+ >nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_FORBIDDEN"
+ >nbxmpp.protocol.ERR_FORBIDDEN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_GONE"
+ >nbxmpp.protocol.ERR_GONE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_INTERNAL_SERVER_ERROR"
+ >nbxmpp.protocol.ERR_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_ITEM_NOT_FOUND"
+ >nbxmpp.protocol.ERR_ITEM_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_JID_MALFORMED"
+ >nbxmpp.protocol.ERR_JID_MALFORMED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_NOT_ACCEPTABLE"
+ >nbxmpp.protocol.ERR_NOT_ACCEPTABLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_NOT_ALLOWED"
+ >nbxmpp.protocol.ERR_NOT_ALLOWED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_NOT_AUTHORIZED"
+ >nbxmpp.protocol.ERR_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_PAYMENT_REQUIRED"
+ >nbxmpp.protocol.ERR_PAYMENT_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_RECIPIENT_UNAVAILABLE"
+ >nbxmpp.protocol.ERR_RECIPIENT_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REDIRECT"
+ >nbxmpp.protocol.ERR_REDIRECT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REGISTRATION_REQUIRED"
+ >nbxmpp.protocol.ERR_REGISTRATION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_NOT_FOUND"
+ >nbxmpp.protocol.ERR_REMOTE_SERVER_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_TIMEOUT"
+ >nbxmpp.protocol.ERR_REMOTE_SERVER_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_RESOURCE_CONSTRAINT"
+ >nbxmpp.protocol.ERR_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_SERVICE_UNAVAILABLE"
+ >nbxmpp.protocol.ERR_SERVICE_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_SUBSCRIPTION_REQUIRED"
+ >nbxmpp.protocol.ERR_SUBSCRIPTION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_UNDEFINED_CONDITION"
+ >nbxmpp.protocol.ERR_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_UNEXPECTED_REQUEST"
+ >nbxmpp.protocol.ERR_UNEXPECTED_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ACTIVITY"
+ >nbxmpp.protocol.NS_ACTIVITY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ADDRESS"
+ >nbxmpp.protocol.NS_ADDRESS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AGENTS"
+ >nbxmpp.protocol.NS_AGENTS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AMP"
+ >nbxmpp.protocol.NS_AMP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AMP_ERRORS"
+ >nbxmpp.protocol.NS_AMP_ERRORS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE"
+ >nbxmpp.protocol.NS_ARCHIVE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_AUTO"
+ >nbxmpp.protocol.NS_ARCHIVE_AUTO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANAGE"
+ >nbxmpp.protocol.NS_ARCHIVE_MANAGE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANUAL"
+ >nbxmpp.protocol.NS_ARCHIVE_MANUAL</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_PREF"
+ >nbxmpp.protocol.NS_ARCHIVE_PREF</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ATOM"
+ >nbxmpp.protocol.NS_ATOM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ATTENTION"
+ >nbxmpp.protocol.NS_ATTENTION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AUTH"
+ >nbxmpp.protocol.NS_AUTH</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AVATAR"
+ >nbxmpp.protocol.NS_AVATAR</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BIND"
+ >nbxmpp.protocol.NS_BIND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BOB"
+ >nbxmpp.protocol.NS_BOB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BOOKMARKS"
+ >nbxmpp.protocol.NS_BOOKMARKS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BROWSE"
+ >nbxmpp.protocol.NS_BROWSE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BROWSING"
+ >nbxmpp.protocol.NS_BROWSING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BYTESTREAM"
+ >nbxmpp.protocol.NS_BYTESTREAM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CAPS"
+ >nbxmpp.protocol.NS_CAPS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CAPTCHA"
+ >nbxmpp.protocol.NS_CAPTCHA</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CARBONS"
+ >nbxmpp.protocol.NS_CARBONS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CHATSTATES"
+ >nbxmpp.protocol.NS_CHATSTATES</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CHATTING"
+ >nbxmpp.protocol.NS_CHATTING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CLIENT"
+ >nbxmpp.protocol.NS_CLIENT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMMANDS"
+ >nbxmpp.protocol.NS_COMMANDS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMPONENT_1"
+ >nbxmpp.protocol.NS_COMPONENT_1</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMPONENT_ACCEPT"
+ >nbxmpp.protocol.NS_COMPONENT_ACCEPT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMPRESS"
+ >nbxmpp.protocol.NS_COMPRESS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CONDITIONS"
+ >nbxmpp.protocol.NS_CONDITIONS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CONFERENCE"
+ >nbxmpp.protocol.NS_CONFERENCE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA"
+ >nbxmpp.protocol.NS_DATA</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA_LAYOUT"
+ >nbxmpp.protocol.NS_DATA_LAYOUT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA_MEDIA"
+ >nbxmpp.protocol.NS_DATA_MEDIA</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA_VALIDATE"
+ >nbxmpp.protocol.NS_DATA_VALIDATE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DELAY"
+ >nbxmpp.protocol.NS_DELAY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DELAY2"
+ >nbxmpp.protocol.NS_DELAY2</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DIALBACK"
+ >nbxmpp.protocol.NS_DIALBACK</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DISCO"
+ >nbxmpp.protocol.NS_DISCO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DISCO_INFO"
+ >nbxmpp.protocol.NS_DISCO_INFO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DISCO_ITEMS"
+ >nbxmpp.protocol.NS_DISCO_ITEMS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ENCRYPTED"
+ >nbxmpp.protocol.NS_ENCRYPTED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ESESSION"
+ >nbxmpp.protocol.NS_ESESSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ESESSION_INIT"
+ >nbxmpp.protocol.NS_ESESSION_INIT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_EVENT"
+ >nbxmpp.protocol.NS_EVENT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_FEATURE"
+ >nbxmpp.protocol.NS_FEATURE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_FILE"
+ >nbxmpp.protocol.NS_FILE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_FORWARD"
+ >nbxmpp.protocol.NS_FORWARD</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GAMING"
+ >nbxmpp.protocol.NS_GAMING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GATEWAY"
+ >nbxmpp.protocol.NS_GATEWAY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GEOLOC"
+ >nbxmpp.protocol.NS_GEOLOC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GMAILNOTIFY"
+ >nbxmpp.protocol.NS_GMAILNOTIFY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GROUPCHAT"
+ >nbxmpp.protocol.NS_GROUPCHAT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GTALKSETTING"
+ >nbxmpp.protocol.NS_GTALKSETTING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES"
+ >nbxmpp.protocol.NS_HASHES</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_MD5"
+ >nbxmpp.protocol.NS_HASHES_MD5</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_SHA1"
+ >nbxmpp.protocol.NS_HASHES_SHA1</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_SHA256"
+ >nbxmpp.protocol.NS_HASHES_SHA256</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_SHA512"
+ >nbxmpp.protocol.NS_HASHES_SHA512</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HTTP_AUTH"
+ >nbxmpp.protocol.NS_HTTP_AUTH</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HTTP_BIND"
+ >nbxmpp.protocol.NS_HTTP_BIND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_IBB"
+ >nbxmpp.protocol.NS_IBB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_INVISIBLE"
+ >nbxmpp.protocol.NS_INVISIBLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_IQ"
+ >nbxmpp.protocol.NS_IQ</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE"
+ >nbxmpp.protocol.NS_JINGLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_BYTESTREAM"
+ >nbxmpp.protocol.NS_JINGLE_BYTESTREAM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_ERRORS"
+ >nbxmpp.protocol.NS_JINGLE_ERRORS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_FILE_TRANSFER"
+ >nbxmpp.protocol.NS_JINGLE_FILE_TRANSFER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_IBB"
+ >nbxmpp.protocol.NS_JINGLE_IBB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_ICE_UDP"
+ >nbxmpp.protocol.NS_JINGLE_ICE_UDP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RAW_UDP"
+ >nbxmpp.protocol.NS_JINGLE_RAW_UDP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RTP"
+ >nbxmpp.protocol.NS_JINGLE_RTP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_AUDIO"
+ >nbxmpp.protocol.NS_JINGLE_RTP_AUDIO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_VIDEO"
+ >nbxmpp.protocol.NS_JINGLE_RTP_VIDEO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_XTLS"
+ >nbxmpp.protocol.NS_JINGLE_XTLS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_LAST"
+ >nbxmpp.protocol.NS_LAST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_LOCATION"
+ >nbxmpp.protocol.NS_LOCATION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MESSAGE"
+ >nbxmpp.protocol.NS_MESSAGE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MOOD"
+ >nbxmpp.protocol.NS_MOOD</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC"
+ >nbxmpp.protocol.NS_MUC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_ADMIN"
+ >nbxmpp.protocol.NS_MUC_ADMIN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_CONFIG"
+ >nbxmpp.protocol.NS_MUC_CONFIG</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_OWNER"
+ >nbxmpp.protocol.NS_MUC_OWNER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_UNIQUE"
+ >nbxmpp.protocol.NS_MUC_UNIQUE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_USER"
+ >nbxmpp.protocol.NS_MUC_USER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_NICK"
+ >nbxmpp.protocol.NS_NICK</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_OFFLINE"
+ >nbxmpp.protocol.NS_OFFLINE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PHYSLOC"
+ >nbxmpp.protocol.NS_PHYSLOC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PING"
+ >nbxmpp.protocol.NS_PING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PRESENCE"
+ >nbxmpp.protocol.NS_PRESENCE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PRIVACY"
+ >nbxmpp.protocol.NS_PRIVACY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PRIVATE"
+ >nbxmpp.protocol.NS_PRIVATE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PROFILE"
+ >nbxmpp.protocol.NS_PROFILE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBKEY_ATTEST"
+ >nbxmpp.protocol.NS_PUBKEY_ATTEST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBKEY_PUBKEY"
+ >nbxmpp.protocol.NS_PUBKEY_PUBKEY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBKEY_REVOKE"
+ >nbxmpp.protocol.NS_PUBKEY_REVOKE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB"
+ >nbxmpp.protocol.NS_PUBSUB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB_EVENT"
+ >nbxmpp.protocol.NS_PUBSUB_EVENT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB_OWNER"
+ >nbxmpp.protocol.NS_PUBSUB_OWNER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB_PUBLISH_OPTIONS"
+ >nbxmpp.protocol.NS_PUBSUB_PUBLISH_OPTIONS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_RECEIPTS"
+ >nbxmpp.protocol.NS_RECEIPTS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_REGISTER"
+ >nbxmpp.protocol.NS_REGISTER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTER"
+ >nbxmpp.protocol.NS_ROSTER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTERNOTES"
+ >nbxmpp.protocol.NS_ROSTERNOTES</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTERX"
+ >nbxmpp.protocol.NS_ROSTERX</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTER_VER"
+ >nbxmpp.protocol.NS_ROSTER_VER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_RPC"
+ >nbxmpp.protocol.NS_RPC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_RSM"
+ >nbxmpp.protocol.NS_RSM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SASL"
+ >nbxmpp.protocol.NS_SASL</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SEARCH"
+ >nbxmpp.protocol.NS_SEARCH</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SECLABEL"
+ >nbxmpp.protocol.NS_SECLABEL</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SECLABEL_CATALOG"
+ >nbxmpp.protocol.NS_SECLABEL_CATALOG</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SERVER"
+ >nbxmpp.protocol.NS_SERVER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SESSION"
+ >nbxmpp.protocol.NS_SESSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SI"
+ >nbxmpp.protocol.NS_SI</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SIGNED"
+ >nbxmpp.protocol.NS_SIGNED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SI_PUB"
+ >nbxmpp.protocol.NS_SI_PUB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SSN"
+ >nbxmpp.protocol.NS_SSN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STANZAS"
+ >nbxmpp.protocol.NS_STANZAS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STANZA_CRYPTO"
+ >nbxmpp.protocol.NS_STANZA_CRYPTO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STREAM"
+ >nbxmpp.protocol.NS_STREAM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STREAMS"
+ >nbxmpp.protocol.NS_STREAMS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STREAM_MGMT"
+ >nbxmpp.protocol.NS_STREAM_MGMT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TIME"
+ >nbxmpp.protocol.NS_TIME</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TIME_REVISED"
+ >nbxmpp.protocol.NS_TIME_REVISED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TLS"
+ >nbxmpp.protocol.NS_TLS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TUNE"
+ >nbxmpp.protocol.NS_TUNE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VACATION"
+ >nbxmpp.protocol.NS_VACATION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VCARD"
+ >nbxmpp.protocol.NS_VCARD</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VCARD_UPDATE"
+ >nbxmpp.protocol.NS_VCARD_UPDATE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VERSION"
+ >nbxmpp.protocol.NS_VERSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VIEWING"
+ >nbxmpp.protocol.NS_VIEWING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_WAITINGLIST"
+ >nbxmpp.protocol.NS_WAITINGLIST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_XHTML"
+ >nbxmpp.protocol.NS_XHTML</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_XHTML_IM"
+ >nbxmpp.protocol.NS_XHTML_IM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_XMPP_STREAMS"
+ >nbxmpp.protocol.NS_XMPP_STREAMS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_ABORTED"
+ >nbxmpp.protocol.SASL_ABORTED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_INCORRECT_ENCODING"
+ >nbxmpp.protocol.SASL_INCORRECT_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_INVALID_AUTHZID"
+ >nbxmpp.protocol.SASL_INVALID_AUTHZID</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_INVALID_MECHANISM"
+ >nbxmpp.protocol.SASL_INVALID_MECHANISM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_MECHANISM_TOO_WEAK"
+ >nbxmpp.protocol.SASL_MECHANISM_TOO_WEAK</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_NOT_AUTHORIZED"
+ >nbxmpp.protocol.SASL_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_TEMPORARY_AUTH_FAILURE"
+ >nbxmpp.protocol.SASL_TEMPORARY_AUTH_FAILURE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_BAD_FORMAT"
+ >nbxmpp.protocol.STREAM_BAD_FORMAT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_BAD_NAMESPACE_PREFIX"
+ >nbxmpp.protocol.STREAM_BAD_NAMESPACE_PREFIX</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_CONFLICT"
+ >nbxmpp.protocol.STREAM_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_CONNECTION_TIMEOUT"
+ >nbxmpp.protocol.STREAM_CONNECTION_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_HOST_GONE"
+ >nbxmpp.protocol.STREAM_HOST_GONE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_HOST_UNKNOWN"
+ >nbxmpp.protocol.STREAM_HOST_UNKNOWN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_IMPROPER_ADDRESSING"
+ >nbxmpp.protocol.STREAM_IMPROPER_ADDRESSING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INTERNAL_SERVER_ERROR"
+ >nbxmpp.protocol.STREAM_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_FROM"
+ >nbxmpp.protocol.STREAM_INVALID_FROM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_ID"
+ >nbxmpp.protocol.STREAM_INVALID_ID</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_NAMESPACE"
+ >nbxmpp.protocol.STREAM_INVALID_NAMESPACE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_XML"
+ >nbxmpp.protocol.STREAM_INVALID_XML</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_NOT_AUTHORIZED"
+ >nbxmpp.protocol.STREAM_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_POLICY_VIOLATION"
+ >nbxmpp.protocol.STREAM_POLICY_VIOLATION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_REMOTE_CONNECTION_FAILED"
+ >nbxmpp.protocol.STREAM_REMOTE_CONNECTION_FAILED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_RESOURCE_CONSTRAINT"
+ >nbxmpp.protocol.STREAM_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_RESTRICTED_XML"
+ >nbxmpp.protocol.STREAM_RESTRICTED_XML</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_SEE_OTHER_HOST"
+ >nbxmpp.protocol.STREAM_SEE_OTHER_HOST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_SYSTEM_SHUTDOWN"
+ >nbxmpp.protocol.STREAM_SYSTEM_SHUTDOWN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNDEFINED_CONDITION"
+ >nbxmpp.protocol.STREAM_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_ENCODING"
+ >nbxmpp.protocol.STREAM_UNSUPPORTED_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_STANZA_TYPE"
+ >nbxmpp.protocol.STREAM_UNSUPPORTED_STANZA_TYPE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_VERSION"
+ >nbxmpp.protocol.STREAM_UNSUPPORTED_VERSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_XML_NOT_WELL_FORMED"
+ >nbxmpp.protocol.STREAM_XML_NOT_WELL_FORMED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#__package__"
+ >nbxmpp.protocol.__package__</a><br /> <div class="private">
+ <a target="mainFrame" href="nbxmpp.protocol-module.html#_errorcodes"
+ >nbxmpp.protocol._errorcodes</a><br /> </div>
+ <a target="mainFrame" href="nbxmpp.protocol-module.html#name"
+ >nbxmpp.protocol.name</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#sasl_error_conditions"
+ >nbxmpp.protocol.sasl_error_conditions</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#stream_exceptions"
+ >nbxmpp.protocol.stream_exceptions</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#xmpp_stanza_error_conditions"
+ >nbxmpp.protocol.xmpp_stanza_error_conditions</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#xmpp_stream_error_conditions"
+ >nbxmpp.protocol.xmpp_stream_error_conditions</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors-module.html#__package__"
+ >nbxmpp.proxy_connectors.__package__</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors-module.html#log"
+ >nbxmpp.proxy_connectors.log</a><br /> <a target="mainFrame" href="nbxmpp.roster_nb-module.html#__package__"
+ >nbxmpp.roster_nb.__package__</a><br /> <a target="mainFrame" href="nbxmpp.roster_nb-module.html#log"
+ >nbxmpp.roster_nb.log</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#ENCODING"
+ >nbxmpp.simplexml.ENCODING</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#__package__"
+ >nbxmpp.simplexml.__package__</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#log"
+ >nbxmpp.simplexml.log</a><br /> <a target="mainFrame" href="nbxmpp.smacks-module.html#__package__"
+ >nbxmpp.smacks.__package__</a><br /> <a target="mainFrame" href="nbxmpp.smacks-module.html#log"
+ >nbxmpp.smacks.log</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#B_1"
+ >nbxmpp.stringprepare.B_1</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#B_2"
+ >nbxmpp.stringprepare.B_2</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_11"
+ >nbxmpp.stringprepare.C_11</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_12"
+ >nbxmpp.stringprepare.C_12</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_21"
+ >nbxmpp.stringprepare.C_21</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_22"
+ >nbxmpp.stringprepare.C_22</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_3"
+ >nbxmpp.stringprepare.C_3</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_4"
+ >nbxmpp.stringprepare.C_4</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_5"
+ >nbxmpp.stringprepare.C_5</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_6"
+ >nbxmpp.stringprepare.C_6</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_7"
+ >nbxmpp.stringprepare.C_7</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_8"
+ >nbxmpp.stringprepare.C_8</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_9"
+ >nbxmpp.stringprepare.C_9</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#__package__"
+ >nbxmpp.stringprepare.__package__</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#nameprep"
+ >nbxmpp.stringprepare.nameprep</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#nodeprep"
+ >nbxmpp.stringprepare.nodeprep</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#resourceprep"
+ >nbxmpp.stringprepare.resourceprep</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#PYOPENSSL"
+ >nbxmpp.tls_nb.PYOPENSSL</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#PYSTDLIB"
+ >nbxmpp.tls_nb.PYSTDLIB</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#USE_PYOPENSSL"
+ >nbxmpp.tls_nb.USE_PYOPENSSL</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#__package__"
+ >nbxmpp.tls_nb.__package__</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#log"
+ >nbxmpp.tls_nb.log</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#CONNECTED"
+ >nbxmpp.transports_nb.CONNECTED</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#CONNECTING"
+ >nbxmpp.transports_nb.CONNECTING</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#CONNECT_TIMEOUT_SECONDS"
+ >nbxmpp.transports_nb.CONNECT_TIMEOUT_SECONDS</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DATA_ERROR"
+ >nbxmpp.transports_nb.DATA_ERROR</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DATA_RECEIVED"
+ >nbxmpp.transports_nb.DATA_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DATA_SENT"
+ >nbxmpp.transports_nb.DATA_SENT</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DISCONNECTED"
+ >nbxmpp.transports_nb.DISCONNECTED</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DISCONNECTING"
+ >nbxmpp.transports_nb.DISCONNECTING</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DISCONNECT_TIMEOUT_SECONDS"
+ >nbxmpp.transports_nb.DISCONNECT_TIMEOUT_SECONDS</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#PROXY_CONNECTING"
+ >nbxmpp.transports_nb.PROXY_CONNECTING</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#RECV_BUFSIZE"
+ >nbxmpp.transports_nb.RECV_BUFSIZE</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#STATES"
+ >nbxmpp.transports_nb.STATES</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#__package__"
+ >nbxmpp.transports_nb.__package__</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#log"
+ >nbxmpp.transports_nb.log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp-module.html b/doc/apidocs/toc-nbxmpp-module.html
new file mode 100644
index 0000000..7063434
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp-module.html
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>nbxmpp</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module nbxmpp</h1>
+<hr />
+ <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp-module.html#ERRORS"
+ >ERRORS</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_BAD_REQUEST"
+ >ERR_BAD_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_CONFLICT"
+ >ERR_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_FEATURE_NOT_IMPLEMENTED"
+ >ERR_FEATURE_NOT_IMPLEMENTED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_FORBIDDEN"
+ >ERR_FORBIDDEN</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_GONE"
+ >ERR_GONE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_INTERNAL_SERVER_ERROR"
+ >ERR_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_ITEM_NOT_FOUND"
+ >ERR_ITEM_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_JID_MALFORMED"
+ >ERR_JID_MALFORMED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_NOT_ACCEPTABLE"
+ >ERR_NOT_ACCEPTABLE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_NOT_ALLOWED"
+ >ERR_NOT_ALLOWED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_NOT_AUTHORIZED"
+ >ERR_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_PAYMENT_REQUIRED"
+ >ERR_PAYMENT_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_RECIPIENT_UNAVAILABLE"
+ >ERR_RECIPIENT_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REDIRECT"
+ >ERR_REDIRECT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REGISTRATION_REQUIRED"
+ >ERR_REGISTRATION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REMOTE_SERVER_NOT_FOUND"
+ >ERR_REMOTE_SERVER_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_REMOTE_SERVER_TIMEOUT"
+ >ERR_REMOTE_SERVER_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_RESOURCE_CONSTRAINT"
+ >ERR_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_SERVICE_UNAVAILABLE"
+ >ERR_SERVICE_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_SUBSCRIPTION_REQUIRED"
+ >ERR_SUBSCRIPTION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_UNDEFINED_CONDITION"
+ >ERR_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#ERR_UNEXPECTED_REQUEST"
+ >ERR_UNEXPECTED_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_ABORTED"
+ >SASL_ABORTED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_INCORRECT_ENCODING"
+ >SASL_INCORRECT_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_INVALID_AUTHZID"
+ >SASL_INVALID_AUTHZID</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_INVALID_MECHANISM"
+ >SASL_INVALID_MECHANISM</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_MECHANISM_TOO_WEAK"
+ >SASL_MECHANISM_TOO_WEAK</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_NOT_AUTHORIZED"
+ >SASL_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#SASL_TEMPORARY_AUTH_FAILURE"
+ >SASL_TEMPORARY_AUTH_FAILURE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_BAD_FORMAT"
+ >STREAM_BAD_FORMAT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_BAD_NAMESPACE_PREFIX"
+ >STREAM_BAD_NAMESPACE_PREFIX</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_CONFLICT"
+ >STREAM_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_CONNECTION_TIMEOUT"
+ >STREAM_CONNECTION_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_HOST_GONE"
+ >STREAM_HOST_GONE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_HOST_UNKNOWN"
+ >STREAM_HOST_UNKNOWN</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_IMPROPER_ADDRESSING"
+ >STREAM_IMPROPER_ADDRESSING</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INTERNAL_SERVER_ERROR"
+ >STREAM_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_FROM"
+ >STREAM_INVALID_FROM</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_ID"
+ >STREAM_INVALID_ID</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_NAMESPACE"
+ >STREAM_INVALID_NAMESPACE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_INVALID_XML"
+ >STREAM_INVALID_XML</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_NOT_AUTHORIZED"
+ >STREAM_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_POLICY_VIOLATION"
+ >STREAM_POLICY_VIOLATION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_REMOTE_CONNECTION_FAILED"
+ >STREAM_REMOTE_CONNECTION_FAILED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_RESOURCE_CONSTRAINT"
+ >STREAM_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_RESTRICTED_XML"
+ >STREAM_RESTRICTED_XML</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_SEE_OTHER_HOST"
+ >STREAM_SEE_OTHER_HOST</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_SYSTEM_SHUTDOWN"
+ >STREAM_SYSTEM_SHUTDOWN</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNDEFINED_CONDITION"
+ >STREAM_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNSUPPORTED_ENCODING"
+ >STREAM_UNSUPPORTED_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNSUPPORTED_STANZA_TYPE"
+ >STREAM_UNSUPPORTED_STANZA_TYPE</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_UNSUPPORTED_VERSION"
+ >STREAM_UNSUPPORTED_VERSION</a><br /> <a target="mainFrame" href="nbxmpp-module.html#STREAM_XML_NOT_WELL_FORMED"
+ >STREAM_XML_NOT_WELL_FORMED</a><br /> <a target="mainFrame" href="nbxmpp-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp-module.html#name"
+ >name</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.auth_nb-module.html b/doc/apidocs/toc-nbxmpp.auth_nb-module.html
new file mode 100644
index 0000000..25e5a39
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.auth_nb-module.html
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>auth_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module auth_nb</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.auth_nb.NonBlockingBind-class.html"
+ >NonBlockingBind</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb.NonBlockingNonSASL-class.html"
+ >NonBlockingNonSASL</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb.SASL-class.html"
+ >SASL</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.auth_nb-module.html#C"
+ >C</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#H"
+ >H</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#HH"
+ >HH</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#challenge_splitter"
+ >challenge_splitter</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#scram_parse"
+ >scram_parse</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.auth_nb-module.html#GSS_STATE_STEP"
+ >GSS_STATE_STEP</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#GSS_STATE_WRAP"
+ >GSS_STATE_WRAP</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_FAILURE"
+ >SASL_FAILURE</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_FAILURE_IN_PROGRESS"
+ >SASL_FAILURE_IN_PROGRESS</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_IN_PROCESS"
+ >SASL_IN_PROCESS</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_SUCCESS"
+ >SASL_SUCCESS</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#SASL_UNSUPPORTED"
+ >SASL_UNSUPPORTED</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#have_kerberos"
+ >have_kerberos</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#kerberos"
+ >kerberos</a><br /> <a target="mainFrame" href="nbxmpp.auth_nb-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.bosh-module.html b/doc/apidocs/toc-nbxmpp.bosh-module.html
new file mode 100644
index 0000000..d3082e1
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.bosh-module.html
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>bosh</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module bosh</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.bosh.AckChecker-class.html"
+ >AckChecker</a><br /> <a target="mainFrame" href="nbxmpp.bosh.KeyStack-class.html"
+ >KeyStack</a><br /> <a target="mainFrame" href="nbxmpp.bosh.NonBlockingBOSH-class.html"
+ >NonBlockingBOSH</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.bosh-module.html#get_rand_number"
+ >get_rand_number</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.bosh-module.html#FAKE_DESCRIPTOR"
+ >FAKE_DESCRIPTOR</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#KEY_COUNT"
+ >KEY_COUNT</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#bosh_errors"
+ >bosh_errors</a><br /> <a target="mainFrame" href="nbxmpp.bosh-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.c14n-module.html b/doc/apidocs/toc-nbxmpp.c14n-module.html
new file mode 100644
index 0000000..d1286ad
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.c14n-module.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>c14n</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module c14n</h1>
+<hr />
+ <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.c14n-module.html#c14n"
+ >c14n</a><br /> <a target="mainFrame" href="nbxmpp.c14n-module.html#normalise_attr"
+ >normalise_attr</a><br /> <a target="mainFrame" href="nbxmpp.c14n-module.html#normalise_text"
+ >normalise_text</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.c14n-module.html#__package__"
+ >__package__</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.client_nb-module.html b/doc/apidocs/toc-nbxmpp.client_nb-module.html
new file mode 100644
index 0000000..8d881d2
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.client_nb-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>client_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module client_nb</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.client_nb.NonBlockingClient-class.html"
+ >NonBlockingClient</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.client_nb-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.client_nb-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.dispatcher_nb-module.html b/doc/apidocs/toc-nbxmpp.dispatcher_nb-module.html
new file mode 100644
index 0000000..ccc106a
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.dispatcher_nb-module.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>dispatcher_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module dispatcher_nb</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html"
+ >BOSHDispatcher</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb.Dispatcher-class.html"
+ >Dispatcher</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html"
+ >XMPPDispatcher</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#DEFAULT_TIMEOUT_SECONDS"
+ >DEFAULT_TIMEOUT_SECONDS</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#XML_DECLARATION"
+ >XML_DECLARATION</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#log"
+ >log</a><br /> <a target="mainFrame" href="nbxmpp.dispatcher_nb-module.html#outgoingID"
+ >outgoingID</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.features_nb-module.html b/doc/apidocs/toc-nbxmpp.features_nb-module.html
new file mode 100644
index 0000000..653ce80
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.features_nb-module.html
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>features_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module features_nb</h1>
+<hr />
+ <h2 class="toc">Functions</h2>
+ <div class="private">
+ <a target="mainFrame" href="nbxmpp.features_nb-module.html#_ReceivedRegInfo"
+ >_ReceivedRegInfo</a><br /> </div>
+ <div class="private">
+ <a target="mainFrame" href="nbxmpp.features_nb-module.html#_on_default_response"
+ >_on_default_response</a><br /> </div>
+ <a target="mainFrame" href="nbxmpp.features_nb-module.html#changePasswordTo"
+ >changePasswordTo</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#delPrivacyList"
+ >delPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getActiveAndDefaultPrivacyLists"
+ >getActiveAndDefaultPrivacyLists</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getPrivacyList"
+ >getPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getPrivacyLists"
+ >getPrivacyLists</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#getRegInfo"
+ >getRegInfo</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#register"
+ >register</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#setActivePrivacyList"
+ >setActivePrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#setDefaultPrivacyList"
+ >setDefaultPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#setPrivacyList"
+ >setPrivacyList</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#unregister"
+ >unregister</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_ACT_ALLOW"
+ >PL_ACT_ALLOW</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_ACT_DENY"
+ >PL_ACT_DENY</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_TYPE_GROUP"
+ >PL_TYPE_GROUP</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_TYPE_JID"
+ >PL_TYPE_JID</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PL_TYPE_SUBC"
+ >PL_TYPE_SUBC</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_ACTIVE_DEFAULT"
+ >PRIVACY_LISTS_ACTIVE_DEFAULT</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PRIVACY_LISTS_RECEIVED"
+ >PRIVACY_LISTS_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#PRIVACY_LIST_RECEIVED"
+ >PRIVACY_LIST_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#REGISTER_DATA_RECEIVED"
+ >REGISTER_DATA_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.features_nb-module.html#__package__"
+ >__package__</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.idlequeue-module.html b/doc/apidocs/toc-nbxmpp.idlequeue-module.html
new file mode 100644
index 0000000..74cdd48
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.idlequeue-module.html
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>idlequeue</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module idlequeue</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.idlequeue.GlibIdleQueue-class.html"
+ >GlibIdleQueue</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.IdleCommand-class.html"
+ >IdleCommand</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.IdleObject-class.html"
+ >IdleObject</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.IdleQueue-class.html"
+ >IdleQueue</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue.SelectIdleQueue-class.html"
+ >SelectIdleQueue</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.idlequeue-module.html#get_idlequeue"
+ >get_idlequeue</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_CLOSE"
+ >FLAG_CLOSE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_READ"
+ >FLAG_READ</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_READ_WRITE"
+ >FLAG_READ_WRITE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#FLAG_WRITE"
+ >FLAG_WRITE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#HAVE_GOBJECT"
+ >HAVE_GOBJECT</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#IS_CLOSED"
+ >IS_CLOSED</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#PENDING_READ"
+ >PENDING_READ</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#PENDING_WRITE"
+ >PENDING_WRITE</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.idlequeue-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.plugin-module.html b/doc/apidocs/toc-nbxmpp.plugin-module.html
new file mode 100644
index 0000000..5b0391b
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.plugin-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>plugin</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module plugin</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.plugin.PlugIn-class.html"
+ >PlugIn</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.plugin-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.plugin-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.protocol-module.html b/doc/apidocs/toc-nbxmpp.protocol-module.html
new file mode 100644
index 0000000..2290cd9
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.protocol-module.html
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>protocol</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module protocol</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.protocol.Acks-class.html"
+ >Acks</a><br /> <a target="mainFrame" href="nbxmpp.protocol.BOSHBody-class.html"
+ >BOSHBody</a><br /> <a target="mainFrame" href="nbxmpp.protocol.BadFormat-class.html"
+ >BadFormat</a><br /> <a target="mainFrame" href="nbxmpp.protocol.BadNamespacePrefix-class.html"
+ >BadNamespacePrefix</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Conflict-class.html"
+ >Conflict</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ConnectionTimeout-class.html"
+ >ConnectionTimeout</a><br /> <a target="mainFrame" href="nbxmpp.protocol.DataField-class.html"
+ >DataField</a><br /> <a target="mainFrame" href="nbxmpp.protocol.DataForm-class.html"
+ >DataForm</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Error-class.html"
+ >Error</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ErrorNode-class.html"
+ >ErrorNode</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Hashes-class.html"
+ >Hashes</a><br /> <a target="mainFrame" href="nbxmpp.protocol.HostGone-class.html"
+ >HostGone</a><br /> <a target="mainFrame" href="nbxmpp.protocol.HostUnknown-class.html"
+ >HostUnknown</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ImproperAddressing-class.html"
+ >ImproperAddressing</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InternalServerError-class.html"
+ >InternalServerError</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidFrom-class.html"
+ >InvalidFrom</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidID-class.html"
+ >InvalidID</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidNamespace-class.html"
+ >InvalidNamespace</a><br /> <a target="mainFrame" href="nbxmpp.protocol.InvalidXML-class.html"
+ >InvalidXML</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Iq-class.html"
+ >Iq</a><br /> <a target="mainFrame" href="nbxmpp.protocol.JID-class.html"
+ >JID</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Message-class.html"
+ >Message</a><br /> <a target="mainFrame" href="nbxmpp.protocol.NodeProcessed-class.html"
+ >NodeProcessed</a><br /> <a target="mainFrame" href="nbxmpp.protocol.NotAuthorized-class.html"
+ >NotAuthorized</a><br /> <a target="mainFrame" href="nbxmpp.protocol.PolicyViolation-class.html"
+ >PolicyViolation</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Presence-class.html"
+ >Presence</a><br /> <a target="mainFrame" href="nbxmpp.protocol.Protocol-class.html"
+ >Protocol</a><br /> <a target="mainFrame" href="nbxmpp.protocol.RemoteConnectionFailed-class.html"
+ >RemoteConnectionFailed</a><br /> <a target="mainFrame" href="nbxmpp.protocol.ResourceConstraint-class.html"
+ >ResourceConstraint</a><br /> <a target="mainFrame" href="nbxmpp.protocol.RestrictedXML-class.html"
+ >RestrictedXML</a><br /> <a target="mainFrame" href="nbxmpp.protocol.SeeOtherHost-class.html"
+ >SeeOtherHost</a><br /> <a target="mainFrame" href="nbxmpp.protocol.StreamError-class.html"
+ >StreamError</a><br /> <a target="mainFrame" href="nbxmpp.protocol.SystemShutdown-class.html"
+ >SystemShutdown</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UndefinedCondition-class.html"
+ >UndefinedCondition</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UnsupportedEncoding-class.html"
+ >UnsupportedEncoding</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UnsupportedStanzaType-class.html"
+ >UnsupportedStanzaType</a><br /> <a target="mainFrame" href="nbxmpp.protocol.UnsupportedVersion-class.html"
+ >UnsupportedVersion</a><br /> <a target="mainFrame" href="nbxmpp.protocol.XMLNotWellFormed-class.html"
+ >XMLNotWellFormed</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.protocol-module.html#ascii_upper"
+ >ascii_upper</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#isErrorNode"
+ >isErrorNode</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#isResultNode"
+ >isResultNode</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.protocol-module.html#ERRORS"
+ >ERRORS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_BAD_REQUEST"
+ >ERR_BAD_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_CONFLICT"
+ >ERR_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED"
+ >ERR_FEATURE_NOT_IMPLEMENTED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_FORBIDDEN"
+ >ERR_FORBIDDEN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_GONE"
+ >ERR_GONE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_INTERNAL_SERVER_ERROR"
+ >ERR_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_ITEM_NOT_FOUND"
+ >ERR_ITEM_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_JID_MALFORMED"
+ >ERR_JID_MALFORMED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_NOT_ACCEPTABLE"
+ >ERR_NOT_ACCEPTABLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_NOT_ALLOWED"
+ >ERR_NOT_ALLOWED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_NOT_AUTHORIZED"
+ >ERR_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_PAYMENT_REQUIRED"
+ >ERR_PAYMENT_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_RECIPIENT_UNAVAILABLE"
+ >ERR_RECIPIENT_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REDIRECT"
+ >ERR_REDIRECT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REGISTRATION_REQUIRED"
+ >ERR_REGISTRATION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_NOT_FOUND"
+ >ERR_REMOTE_SERVER_NOT_FOUND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_REMOTE_SERVER_TIMEOUT"
+ >ERR_REMOTE_SERVER_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_RESOURCE_CONSTRAINT"
+ >ERR_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_SERVICE_UNAVAILABLE"
+ >ERR_SERVICE_UNAVAILABLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_SUBSCRIPTION_REQUIRED"
+ >ERR_SUBSCRIPTION_REQUIRED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_UNDEFINED_CONDITION"
+ >ERR_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#ERR_UNEXPECTED_REQUEST"
+ >ERR_UNEXPECTED_REQUEST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ACTIVITY"
+ >NS_ACTIVITY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ADDRESS"
+ >NS_ADDRESS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AGENTS"
+ >NS_AGENTS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AMP"
+ >NS_AMP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AMP_ERRORS"
+ >NS_AMP_ERRORS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE"
+ >NS_ARCHIVE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_AUTO"
+ >NS_ARCHIVE_AUTO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANAGE"
+ >NS_ARCHIVE_MANAGE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_MANUAL"
+ >NS_ARCHIVE_MANUAL</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ARCHIVE_PREF"
+ >NS_ARCHIVE_PREF</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ATOM"
+ >NS_ATOM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ATTENTION"
+ >NS_ATTENTION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AUTH"
+ >NS_AUTH</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_AVATAR"
+ >NS_AVATAR</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BIND"
+ >NS_BIND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BOB"
+ >NS_BOB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BOOKMARKS"
+ >NS_BOOKMARKS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BROWSE"
+ >NS_BROWSE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BROWSING"
+ >NS_BROWSING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_BYTESTREAM"
+ >NS_BYTESTREAM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CAPS"
+ >NS_CAPS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CAPTCHA"
+ >NS_CAPTCHA</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CARBONS"
+ >NS_CARBONS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CHATSTATES"
+ >NS_CHATSTATES</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CHATTING"
+ >NS_CHATTING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CLIENT"
+ >NS_CLIENT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMMANDS"
+ >NS_COMMANDS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMPONENT_1"
+ >NS_COMPONENT_1</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMPONENT_ACCEPT"
+ >NS_COMPONENT_ACCEPT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_COMPRESS"
+ >NS_COMPRESS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CONDITIONS"
+ >NS_CONDITIONS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_CONFERENCE"
+ >NS_CONFERENCE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA"
+ >NS_DATA</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA_LAYOUT"
+ >NS_DATA_LAYOUT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA_MEDIA"
+ >NS_DATA_MEDIA</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DATA_VALIDATE"
+ >NS_DATA_VALIDATE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DELAY"
+ >NS_DELAY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DELAY2"
+ >NS_DELAY2</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DIALBACK"
+ >NS_DIALBACK</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DISCO"
+ >NS_DISCO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DISCO_INFO"
+ >NS_DISCO_INFO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_DISCO_ITEMS"
+ >NS_DISCO_ITEMS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ENCRYPTED"
+ >NS_ENCRYPTED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ESESSION"
+ >NS_ESESSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ESESSION_INIT"
+ >NS_ESESSION_INIT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_EVENT"
+ >NS_EVENT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_FEATURE"
+ >NS_FEATURE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_FILE"
+ >NS_FILE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_FORWARD"
+ >NS_FORWARD</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GAMING"
+ >NS_GAMING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GATEWAY"
+ >NS_GATEWAY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GEOLOC"
+ >NS_GEOLOC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GMAILNOTIFY"
+ >NS_GMAILNOTIFY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GROUPCHAT"
+ >NS_GROUPCHAT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_GTALKSETTING"
+ >NS_GTALKSETTING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES"
+ >NS_HASHES</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_MD5"
+ >NS_HASHES_MD5</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_SHA1"
+ >NS_HASHES_SHA1</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_SHA256"
+ >NS_HASHES_SHA256</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HASHES_SHA512"
+ >NS_HASHES_SHA512</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HTTP_AUTH"
+ >NS_HTTP_AUTH</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_HTTP_BIND"
+ >NS_HTTP_BIND</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_IBB"
+ >NS_IBB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_INVISIBLE"
+ >NS_INVISIBLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_IQ"
+ >NS_IQ</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE"
+ >NS_JINGLE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_BYTESTREAM"
+ >NS_JINGLE_BYTESTREAM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_ERRORS"
+ >NS_JINGLE_ERRORS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_FILE_TRANSFER"
+ >NS_JINGLE_FILE_TRANSFER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_IBB"
+ >NS_JINGLE_IBB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_ICE_UDP"
+ >NS_JINGLE_ICE_UDP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RAW_UDP"
+ >NS_JINGLE_RAW_UDP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RTP"
+ >NS_JINGLE_RTP</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_AUDIO"
+ >NS_JINGLE_RTP_AUDIO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_RTP_VIDEO"
+ >NS_JINGLE_RTP_VIDEO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_JINGLE_XTLS"
+ >NS_JINGLE_XTLS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_LAST"
+ >NS_LAST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_LOCATION"
+ >NS_LOCATION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MESSAGE"
+ >NS_MESSAGE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MOOD"
+ >NS_MOOD</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC"
+ >NS_MUC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_ADMIN"
+ >NS_MUC_ADMIN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_CONFIG"
+ >NS_MUC_CONFIG</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_OWNER"
+ >NS_MUC_OWNER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_UNIQUE"
+ >NS_MUC_UNIQUE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_MUC_USER"
+ >NS_MUC_USER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_NICK"
+ >NS_NICK</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_OFFLINE"
+ >NS_OFFLINE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PHYSLOC"
+ >NS_PHYSLOC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PING"
+ >NS_PING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PRESENCE"
+ >NS_PRESENCE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PRIVACY"
+ >NS_PRIVACY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PRIVATE"
+ >NS_PRIVATE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PROFILE"
+ >NS_PROFILE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBKEY_ATTEST"
+ >NS_PUBKEY_ATTEST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBKEY_PUBKEY"
+ >NS_PUBKEY_PUBKEY</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBKEY_REVOKE"
+ >NS_PUBKEY_REVOKE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB"
+ >NS_PUBSUB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB_EVENT"
+ >NS_PUBSUB_EVENT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB_OWNER"
+ >NS_PUBSUB_OWNER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_PUBSUB_PUBLISH_OPTIONS"
+ >NS_PUBSUB_PUBLISH_OPTIONS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_RECEIPTS"
+ >NS_RECEIPTS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_REGISTER"
+ >NS_REGISTER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTER"
+ >NS_ROSTER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTERNOTES"
+ >NS_ROSTERNOTES</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTERX"
+ >NS_ROSTERX</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_ROSTER_VER"
+ >NS_ROSTER_VER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_RPC"
+ >NS_RPC</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_RSM"
+ >NS_RSM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SASL"
+ >NS_SASL</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SEARCH"
+ >NS_SEARCH</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SECLABEL"
+ >NS_SECLABEL</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SECLABEL_CATALOG"
+ >NS_SECLABEL_CATALOG</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SERVER"
+ >NS_SERVER</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SESSION"
+ >NS_SESSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SI"
+ >NS_SI</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SIGNED"
+ >NS_SIGNED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SI_PUB"
+ >NS_SI_PUB</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_SSN"
+ >NS_SSN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STANZAS"
+ >NS_STANZAS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STANZA_CRYPTO"
+ >NS_STANZA_CRYPTO</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STREAM"
+ >NS_STREAM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STREAMS"
+ >NS_STREAMS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_STREAM_MGMT"
+ >NS_STREAM_MGMT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TIME"
+ >NS_TIME</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TIME_REVISED"
+ >NS_TIME_REVISED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TLS"
+ >NS_TLS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_TUNE"
+ >NS_TUNE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VACATION"
+ >NS_VACATION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VCARD"
+ >NS_VCARD</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VCARD_UPDATE"
+ >NS_VCARD_UPDATE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VERSION"
+ >NS_VERSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_VIEWING"
+ >NS_VIEWING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_WAITINGLIST"
+ >NS_WAITINGLIST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_XHTML"
+ >NS_XHTML</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_XHTML_IM"
+ >NS_XHTML_IM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#NS_XMPP_STREAMS"
+ >NS_XMPP_STREAMS</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_ABORTED"
+ >SASL_ABORTED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_INCORRECT_ENCODING"
+ >SASL_INCORRECT_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_INVALID_AUTHZID"
+ >SASL_INVALID_AUTHZID</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_INVALID_MECHANISM"
+ >SASL_INVALID_MECHANISM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_MECHANISM_TOO_WEAK"
+ >SASL_MECHANISM_TOO_WEAK</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_NOT_AUTHORIZED"
+ >SASL_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#SASL_TEMPORARY_AUTH_FAILURE"
+ >SASL_TEMPORARY_AUTH_FAILURE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_BAD_FORMAT"
+ >STREAM_BAD_FORMAT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_BAD_NAMESPACE_PREFIX"
+ >STREAM_BAD_NAMESPACE_PREFIX</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_CONFLICT"
+ >STREAM_CONFLICT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_CONNECTION_TIMEOUT"
+ >STREAM_CONNECTION_TIMEOUT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_HOST_GONE"
+ >STREAM_HOST_GONE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_HOST_UNKNOWN"
+ >STREAM_HOST_UNKNOWN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_IMPROPER_ADDRESSING"
+ >STREAM_IMPROPER_ADDRESSING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INTERNAL_SERVER_ERROR"
+ >STREAM_INTERNAL_SERVER_ERROR</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_FROM"
+ >STREAM_INVALID_FROM</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_ID"
+ >STREAM_INVALID_ID</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_NAMESPACE"
+ >STREAM_INVALID_NAMESPACE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_INVALID_XML"
+ >STREAM_INVALID_XML</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_NOT_AUTHORIZED"
+ >STREAM_NOT_AUTHORIZED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_POLICY_VIOLATION"
+ >STREAM_POLICY_VIOLATION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_REMOTE_CONNECTION_FAILED"
+ >STREAM_REMOTE_CONNECTION_FAILED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_RESOURCE_CONSTRAINT"
+ >STREAM_RESOURCE_CONSTRAINT</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_RESTRICTED_XML"
+ >STREAM_RESTRICTED_XML</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_SEE_OTHER_HOST"
+ >STREAM_SEE_OTHER_HOST</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_SYSTEM_SHUTDOWN"
+ >STREAM_SYSTEM_SHUTDOWN</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNDEFINED_CONDITION"
+ >STREAM_UNDEFINED_CONDITION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_ENCODING"
+ >STREAM_UNSUPPORTED_ENCODING</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_STANZA_TYPE"
+ >STREAM_UNSUPPORTED_STANZA_TYPE</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_UNSUPPORTED_VERSION"
+ >STREAM_UNSUPPORTED_VERSION</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#STREAM_XML_NOT_WELL_FORMED"
+ >STREAM_XML_NOT_WELL_FORMED</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#__package__"
+ >__package__</a><br /> <div class="private">
+ <a target="mainFrame" href="nbxmpp.protocol-module.html#_errorcodes"
+ >_errorcodes</a><br /> </div>
+ <a target="mainFrame" href="nbxmpp.protocol-module.html#name"
+ >name</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#sasl_error_conditions"
+ >sasl_error_conditions</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#stream_exceptions"
+ >stream_exceptions</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#xmpp_stanza_error_conditions"
+ >xmpp_stanza_error_conditions</a><br /> <a target="mainFrame" href="nbxmpp.protocol-module.html#xmpp_stream_error_conditions"
+ >xmpp_stream_error_conditions</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.proxy_connectors-module.html b/doc/apidocs/toc-nbxmpp.proxy_connectors-module.html
new file mode 100644
index 0000000..42c829f
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.proxy_connectors-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>proxy_connectors</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module proxy_connectors</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.proxy_connectors.HTTPCONNECTConnector-class.html"
+ >HTTPCONNECTConnector</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors.ProxyConnector-class.html"
+ >ProxyConnector</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors.SOCKS5Connector-class.html"
+ >SOCKS5Connector</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.proxy_connectors-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.proxy_connectors-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.roster_nb-module.html b/doc/apidocs/toc-nbxmpp.roster_nb-module.html
new file mode 100644
index 0000000..ee127c9
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.roster_nb-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>roster_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module roster_nb</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.roster_nb.NonBlockingRoster-class.html"
+ >NonBlockingRoster</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.roster_nb-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.roster_nb-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.simplexml-module.html b/doc/apidocs/toc-nbxmpp.simplexml-module.html
new file mode 100644
index 0000000..ec58961
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.simplexml-module.html
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>simplexml</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module simplexml</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.simplexml.NT-class.html"
+ >NT</a><br /> <a target="mainFrame" href="nbxmpp.simplexml.Node-class.html"
+ >Node</a><br /> <a target="mainFrame" href="nbxmpp.simplexml.NodeBuilder-class.html"
+ >NodeBuilder</a><br /> <a target="mainFrame" href="nbxmpp.simplexml.T-class.html"
+ >T</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.simplexml-module.html#BadXML2Node"
+ >BadXML2Node</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#XML2Node"
+ >XML2Node</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#XMLescape"
+ >XMLescape</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#ustr"
+ >ustr</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.simplexml-module.html#ENCODING"
+ >ENCODING</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.simplexml-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.smacks-module.html b/doc/apidocs/toc-nbxmpp.smacks-module.html
new file mode 100644
index 0000000..e202485
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.smacks-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>smacks</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module smacks</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.smacks.Smacks-class.html"
+ >Smacks</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.smacks-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.smacks-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.stringprepare-module.html b/doc/apidocs/toc-nbxmpp.stringprepare-module.html
new file mode 100644
index 0000000..7a4a984
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.stringprepare-module.html
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>stringprepare</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module stringprepare</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.stringprepare.EmptyMappingTable-class.html"
+ >EmptyMappingTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.ILookupTable-class.html"
+ >ILookupTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.IMappingTable-class.html"
+ >IMappingTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.LookupTable-class.html"
+ >LookupTable</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.LookupTableFromFunction-class.html"
+ >LookupTableFromFunction</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.MappingTableFromFunction-class.html"
+ >MappingTableFromFunction</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.NamePrep-class.html"
+ >NamePrep</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare.Profile-class.html"
+ >Profile</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.stringprepare-module.html#B_1"
+ >B_1</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#B_2"
+ >B_2</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_11"
+ >C_11</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_12"
+ >C_12</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_21"
+ >C_21</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_22"
+ >C_22</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_3"
+ >C_3</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_4"
+ >C_4</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_5"
+ >C_5</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_6"
+ >C_6</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_7"
+ >C_7</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_8"
+ >C_8</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#C_9"
+ >C_9</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#nameprep"
+ >nameprep</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#nodeprep"
+ >nodeprep</a><br /> <a target="mainFrame" href="nbxmpp.stringprepare-module.html#resourceprep"
+ >resourceprep</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.tls_nb-module.html b/doc/apidocs/toc-nbxmpp.tls_nb-module.html
new file mode 100644
index 0000000..77402ba
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.tls_nb-module.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>tls_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module tls_nb</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.tls_nb.NonBlockingTLS-class.html"
+ >NonBlockingTLS</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.PyOpenSSLWrapper-class.html"
+ >PyOpenSSLWrapper</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.SSLWrapper-class.html"
+ >SSLWrapper</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb.StdlibSSLWrapper-class.html"
+ >StdlibSSLWrapper</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.tls_nb-module.html#gattr"
+ >gattr</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.tls_nb-module.html#PYOPENSSL"
+ >PYOPENSSL</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#PYSTDLIB"
+ >PYSTDLIB</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#USE_PYOPENSSL"
+ >USE_PYOPENSSL</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.tls_nb-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc-nbxmpp.transports_nb-module.html b/doc/apidocs/toc-nbxmpp.transports_nb-module.html
new file mode 100644
index 0000000..e4fd452
--- /dev/null
+++ b/doc/apidocs/toc-nbxmpp.transports_nb-module.html
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>transports_nb</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module transports_nb</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingHTTP-class.html"
+ >NonBlockingHTTP</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingHTTPBOSH-class.html"
+ >NonBlockingHTTPBOSH</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingTCP-class.html"
+ >NonBlockingTCP</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb.NonBlockingTransport-class.html"
+ >NonBlockingTransport</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="nbxmpp.transports_nb-module.html#get_proxy_data_from_dict"
+ >get_proxy_data_from_dict</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#urisplit"
+ >urisplit</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="nbxmpp.transports_nb-module.html#CONNECTED"
+ >CONNECTED</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#CONNECTING"
+ >CONNECTING</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#CONNECT_TIMEOUT_SECONDS"
+ >CONNECT_TIMEOUT_SECONDS</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DATA_ERROR"
+ >DATA_ERROR</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DATA_RECEIVED"
+ >DATA_RECEIVED</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DATA_SENT"
+ >DATA_SENT</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DISCONNECTED"
+ >DISCONNECTED</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DISCONNECTING"
+ >DISCONNECTING</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#DISCONNECT_TIMEOUT_SECONDS"
+ >DISCONNECT_TIMEOUT_SECONDS</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#PROXY_CONNECTING"
+ >PROXY_CONNECTING</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#RECV_BUFSIZE"
+ >RECV_BUFSIZE</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#STATES"
+ >STATES</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#__package__"
+ >__package__</a><br /> <a target="mainFrame" href="nbxmpp.transports_nb-module.html#log"
+ >log</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/toc.html b/doc/apidocs/toc.html
new file mode 100644
index 0000000..85c1260
--- /dev/null
+++ b/doc/apidocs/toc.html
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Table of Contents</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Table&nbsp;of&nbsp;Contents</h1>
+<hr />
+ <a target="moduleFrame" href="toc-everything.html">Everything</a>
+ <br />
+ <h2 class="toc">Modules</h2>
+ <a target="moduleFrame" href="toc-nbxmpp-module.html"
+ onclick="setFrame('toc-nbxmpp-module.html','nbxmpp-module.html');" >nbxmpp</a><br /> <a target="moduleFrame" href="toc-nbxmpp.auth_nb-module.html"
+ onclick="setFrame('toc-nbxmpp.auth_nb-module.html','nbxmpp.auth_nb-module.html');" >nbxmpp.auth_nb</a><br /> <a target="moduleFrame" href="toc-nbxmpp.bosh-module.html"
+ onclick="setFrame('toc-nbxmpp.bosh-module.html','nbxmpp.bosh-module.html');" >nbxmpp.bosh</a><br /> <a target="moduleFrame" href="toc-nbxmpp.c14n-module.html"
+ onclick="setFrame('toc-nbxmpp.c14n-module.html','nbxmpp.c14n-module.html');" >nbxmpp.c14n</a><br /> <a target="moduleFrame" href="toc-nbxmpp.client_nb-module.html"
+ onclick="setFrame('toc-nbxmpp.client_nb-module.html','nbxmpp.client_nb-module.html');" >nbxmpp.client_nb</a><br /> <a target="moduleFrame" href="toc-nbxmpp.dispatcher_nb-module.html"
+ onclick="setFrame('toc-nbxmpp.dispatcher_nb-module.html','nbxmpp.dispatcher_nb-module.html');" >nbxmpp.dispatcher_nb</a><br /> <a target="moduleFrame" href="toc-nbxmpp.features_nb-module.html"
+ onclick="setFrame('toc-nbxmpp.features_nb-module.html','nbxmpp.features_nb-module.html');" >nbxmpp.features_nb</a><br /> <a target="moduleFrame" href="toc-nbxmpp.idlequeue-module.html"
+ onclick="setFrame('toc-nbxmpp.idlequeue-module.html','nbxmpp.idlequeue-module.html');" >nbxmpp.idlequeue</a><br /> <a target="moduleFrame" href="toc-nbxmpp.plugin-module.html"
+ onclick="setFrame('toc-nbxmpp.plugin-module.html','nbxmpp.plugin-module.html');" >nbxmpp.plugin</a><br /> <a target="moduleFrame" href="toc-nbxmpp.protocol-module.html"
+ onclick="setFrame('toc-nbxmpp.protocol-module.html','nbxmpp.protocol-module.html');" >nbxmpp.protocol</a><br /> <a target="moduleFrame" href="toc-nbxmpp.proxy_connectors-module.html"
+ onclick="setFrame('toc-nbxmpp.proxy_connectors-module.html','nbxmpp.proxy_connectors-module.html');" >nbxmpp.proxy_connectors</a><br /> <a target="moduleFrame" href="toc-nbxmpp.roster_nb-module.html"
+ onclick="setFrame('toc-nbxmpp.roster_nb-module.html','nbxmpp.roster_nb-module.html');" >nbxmpp.roster_nb</a><br /> <a target="moduleFrame" href="toc-nbxmpp.simplexml-module.html"
+ onclick="setFrame('toc-nbxmpp.simplexml-module.html','nbxmpp.simplexml-module.html');" >nbxmpp.simplexml</a><br /> <a target="moduleFrame" href="toc-nbxmpp.smacks-module.html"
+ onclick="setFrame('toc-nbxmpp.smacks-module.html','nbxmpp.smacks-module.html');" >nbxmpp.smacks</a><br /> <a target="moduleFrame" href="toc-nbxmpp.stringprepare-module.html"
+ onclick="setFrame('toc-nbxmpp.stringprepare-module.html','nbxmpp.stringprepare-module.html');" >nbxmpp.stringprepare</a><br /> <a target="moduleFrame" href="toc-nbxmpp.tls_nb-module.html"
+ onclick="setFrame('toc-nbxmpp.tls_nb-module.html','nbxmpp.tls_nb-module.html');" >nbxmpp.tls_nb</a><br /> <a target="moduleFrame" href="toc-nbxmpp.transports_nb-module.html"
+ onclick="setFrame('toc-nbxmpp.transports_nb-module.html','nbxmpp.transports_nb-module.html');" >nbxmpp.transports_nb</a><br /><hr />
+ <span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_a.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_a.gif
new file mode 100644
index 0000000..6829821
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_a.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_a_2.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_a_2.gif
new file mode 100644
index 0000000..2e11581
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_a_2.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_a_3.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_a_3.gif
new file mode 100644
index 0000000..0288c22
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_a_3.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_b.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_b.gif
new file mode 100644
index 0000000..726f617
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_b.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_d.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_d.gif
new file mode 100644
index 0000000..daa5035
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_d.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_d_2.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_d_2.gif
new file mode 100644
index 0000000..36a71f8
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_d_2.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_i.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_i.gif
new file mode 100644
index 0000000..ec58645
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_i.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_i_2.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_2.gif
new file mode 100644
index 0000000..c997ecd
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_2.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_i_3.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_3.gif
new file mode 100644
index 0000000..e52fced
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_3.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_i_4.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_4.gif
new file mode 100644
index 0000000..ba36bf9
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_4.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_i_5.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_5.gif
new file mode 100644
index 0000000..61d36ae
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_i_5.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p.gif
new file mode 100644
index 0000000..d75f6be
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_10.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_10.gif
new file mode 100644
index 0000000..ae75407
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_10.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_11.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_11.gif
new file mode 100644
index 0000000..4a1a9ed
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_11.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_12.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_12.gif
new file mode 100644
index 0000000..ab6cca4
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_12.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_13.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_13.gif
new file mode 100644
index 0000000..9e759de
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_13.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_14.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_14.gif
new file mode 100644
index 0000000..368d5bc
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_14.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_15.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_15.gif
new file mode 100644
index 0000000..a68ec36
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_15.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_16.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_16.gif
new file mode 100644
index 0000000..47a8723
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_16.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_17.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_17.gif
new file mode 100644
index 0000000..258c512
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_17.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_18.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_18.gif
new file mode 100644
index 0000000..7fdb22f
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_18.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_19.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_19.gif
new file mode 100644
index 0000000..bb71e88
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_19.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_2.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_2.gif
new file mode 100644
index 0000000..ae8f529
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_2.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_20.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_20.gif
new file mode 100644
index 0000000..3ebd77e
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_20.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_21.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_21.gif
new file mode 100644
index 0000000..b376946
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_21.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_22.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_22.gif
new file mode 100644
index 0000000..dd3c363
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_22.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_23.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_23.gif
new file mode 100644
index 0000000..9f5cca3
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_23.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_24.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_24.gif
new file mode 100644
index 0000000..b3e0167
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_24.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_25.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_25.gif
new file mode 100644
index 0000000..8714d59
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_25.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_26.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_26.gif
new file mode 100644
index 0000000..17ac10f
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_26.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_27.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_27.gif
new file mode 100644
index 0000000..159f438
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_27.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_28.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_28.gif
new file mode 100644
index 0000000..31482b2
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_28.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_29.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_29.gif
new file mode 100644
index 0000000..e2c7fde
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_29.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_3.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_3.gif
new file mode 100644
index 0000000..6c3c2f4
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_3.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_30.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_30.gif
new file mode 100644
index 0000000..5753aae
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_30.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_31.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_31.gif
new file mode 100644
index 0000000..4695f4e
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_31.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_32.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_32.gif
new file mode 100644
index 0000000..6e89bc8
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_32.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_33.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_33.gif
new file mode 100644
index 0000000..7a6c51d
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_33.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_34.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_34.gif
new file mode 100644
index 0000000..160c180
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_34.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_35.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_35.gif
new file mode 100644
index 0000000..8c5a93a
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_35.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_36.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_36.gif
new file mode 100644
index 0000000..1c8ec90
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_36.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_37.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_37.gif
new file mode 100644
index 0000000..7906db3
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_37.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_38.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_38.gif
new file mode 100644
index 0000000..3e0ee91
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_38.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_39.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_39.gif
new file mode 100644
index 0000000..41c1650
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_39.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_4.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_4.gif
new file mode 100644
index 0000000..0b363d8
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_4.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_40.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_40.gif
new file mode 100644
index 0000000..8b57ba3
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_40.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_41.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_41.gif
new file mode 100644
index 0000000..796d631
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_41.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_5.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_5.gif
new file mode 100644
index 0000000..0deba65
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_5.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_6.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_6.gif
new file mode 100644
index 0000000..7f92db2
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_6.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_7.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_7.gif
new file mode 100644
index 0000000..84bd463
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_7.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_8.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_8.gif
new file mode 100644
index 0000000..fdfa191
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_8.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_p_9.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_9.gif
new file mode 100644
index 0000000..1bce560
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_p_9.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_r.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_r.gif
new file mode 100644
index 0000000..b795341
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_r.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_s.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_s.gif
new file mode 100644
index 0000000..5ce0479
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_s.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_s_2.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_s_2.gif
new file mode 100644
index 0000000..b24db74
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_s_2.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_s_3.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_s_3.gif
new file mode 100644
index 0000000..96c4795
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_s_3.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t.gif
new file mode 100644
index 0000000..b316d6e
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_2.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_2.gif
new file mode 100644
index 0000000..82b95d0
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_2.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_3.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_3.gif
new file mode 100644
index 0000000..9748f91
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_3.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_4.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_4.gif
new file mode 100644
index 0000000..5d70cf1
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_4.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_5.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_5.gif
new file mode 100644
index 0000000..af81e7a
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_5.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_6.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_6.gif
new file mode 100644
index 0000000..7b70e88
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_6.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_7.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_7.gif
new file mode 100644
index 0000000..affbd9b
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_7.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_8.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_8.gif
new file mode 100644
index 0000000..321a6ce
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_8.gif
Binary files differ
diff --git a/doc/apidocs/uml_class_diagram_for_nbxmpp_t_9.gif b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_9.gif
new file mode 100644
index 0000000..96c542e
--- /dev/null
+++ b/doc/apidocs/uml_class_diagram_for_nbxmpp_t_9.gif
Binary files differ
diff --git a/doc/epydoc.conf b/doc/epydoc.conf
new file mode 100644
index 0000000..018bffb
--- /dev/null
+++ b/doc/epydoc.conf
@@ -0,0 +1,26 @@
+[epydoc]
+
+# Information about the project.
+name: python-nbxmpp
+url: http://python-nbxmpp.gajim.org
+
+verbosity: 3
+imports: yes
+redundant-details: yes
+docformat: restructuredtext
+
+# The list of modules to document. Modules can be named using
+# dotted names, module filenames, or package directory names.
+# This option may be repeated.
+modules: nbxmpp/*
+
+# Write html output to the directory "apidocs"
+output: html
+target: doc/apidocs/
+
+# Include all automatically generated graphs. These graphs are
+# generated using Graphviz dot.
+graph: all
+dotpath: /usr/bin/dot
+graph-font: Sans
+graph-font-size: 10
diff --git a/doc/examples/xsend.py b/doc/examples/xsend.py
new file mode 100755
index 0000000..7b979c7
--- /dev/null
+++ b/doc/examples/xsend.py
@@ -0,0 +1,80 @@
+#!/usr/bin/python
+
+import sys
+import os
+import nbxmpp
+import time
+import logging
+import gobject
+
+consoleloghandler = logging.StreamHandler()
+root_log = logging.getLogger('nbxmpp')
+#root_log.setLevel('DEBUG')
+root_log.addHandler(consoleloghandler)
+
+if len(sys.argv) < 2:
+ print "Syntax: xsend JID text"
+ sys.exit(0)
+
+to_jid = sys.argv[1]
+text = ' '.join(sys.argv[2:])
+
+jidparams = {}
+if os.access(os.environ['HOME'] + '/.xsend', os.R_OK):
+ for ln in open(os.environ['HOME'] + '/.xsend').readlines():
+ if not ln[0] in ('#', ';'):
+ key, val = ln.strip().split('=', 1)
+ jidparams[key.lower()] = val
+for mandatory in ['jid', 'password']:
+ if mandatory not in jidparams.keys():
+ open(os.environ['HOME']+'/.xsend','w').write('#Uncomment fields before use and type in correct credentials.\n#JID=romeo@montague.net/resource (/resource is optional)\n#PASSWORD=juliet\n')
+ print 'Please point ~/.xsend config file to valid JID for sending messages.'
+ sys.exit(0)
+
+class Connection:
+ def __init__(self):
+ self.jid = nbxmpp.protocol.JID(jidparams['jid'])
+ self.password = jidparams['password']
+
+ def on_auth(self, con, auth):
+ if not auth:
+ print 'could not authenticate!'
+ sys.exit()
+ print 'authenticated using', auth
+ self.send_message(to_jid, text)
+
+ def on_connected(self, con, con_type):
+ print 'connected with', con_type
+ auth = self.client.auth(self.jid.getNode(), self.password, resource=self.jid.getResource(), sasl=1, on_auth=self.on_auth)
+
+ def get_password(self, cb, mech):
+ cb(self.password)
+
+ def on_connection_failed(self):
+ print 'could not connect!'
+
+ def _event_dispatcher(self, realm, event, data):
+ pass
+
+ def connect(self):
+ idle_queue = nbxmpp.idlequeue.get_idlequeue()
+ self.client = nbxmpp.NonBlockingClient(self.jid.getDomain(), idle_queue, caller=self)
+ self.con = self.client.connect(self.on_connected, self.on_connection_failed, secure_tuple=('tls', '', ''))
+
+ def send_message(self, to_jid, text):
+ id_ = self.client.send(nbxmpp.protocol.Message(to_jid, text, typ='chat'))
+ print 'sent message with id', id_
+ gobject.timeout_add(1000, self.quit)
+
+ def quit(self):
+ self.disconnect()
+ ml.quit()
+
+ def disconnect(self):
+ self.client.start_disconnect()
+
+
+con = Connection()
+con.connect()
+ml = gobject.MainLoop()
+ml.run()