<?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>pyxmpp.client.Client</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> <a href="pyxmpp-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </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://pyxmpp.jajcus.net/">PyXMPP</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="pyxmpp-module.html">Package pyxmpp</a> :: <a href="pyxmpp.client-module.html">Module client</a> :: Class Client </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 private</a>]</span></td></tr> </table> </td> </tr> </table> <!-- ==================== CLASS DESCRIPTION ==================== --> <h1 class="epydoc">Class Client</h1><p class="nomargin-top"><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client">source code</a></span></p> <dl><dt>Known Subclasses:</dt> <dd> <ul class="subclass-list"> <li><a href="pyxmpp.jabber.client.JabberClient-class.html">jabber.client.JabberClient</a></li> </ul> </dd></dl> <hr /> <p>Base class for an XMPP-IM client.</p> <p>This class does not provide any JSF extensions to the XMPP protocol, including legacy authentication methods.</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"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-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">password</span>=<span class="summary-sig-default">None</span>, <span class="summary-sig-arg">server</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">auth_methods</span>=<span class="summary-sig-default"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">sasl:DIGEST-MD5</code><code class="variable-quote">'</code><code class="variable-group">)</code></span>, <span class="summary-sig-arg">tls_settings</span>=<span class="summary-sig-default">None</span>, <span class="summary-sig-arg">keepalive</span>=<span class="summary-sig-default">0</span>)</span><br /> Initialize a Client object.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__init__">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__roster_error" class="summary-sig-name" onclick="show_private();">__roster_error</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">iq</span>)</span><br /> Process roster request failure.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_error">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__roster_push" class="summary-sig-name" onclick="show_private();">__roster_push</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">iq</span>)</span><br /> Process a "roster push" (change notification) received.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_push">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__roster_result" class="summary-sig-name" onclick="show_private();">__roster_result</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">iq</span>)</span><br /> Process roster request success.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_result">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__roster_timeout" class="summary-sig-name" onclick="show_private();">__roster_timeout</a>(<span class="summary-sig-arg">self</span>)</span><br /> Process roster request time out.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_timeout">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__session_error" class="summary-sig-name" onclick="show_private();">__session_error</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">iq</span>)</span><br /> Process session request failure.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__session_error">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__session_result" class="summary-sig-name" onclick="show_private();">__session_result</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">_unused</span>)</span><br /> Process session request success.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__session_result">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__session_timeout" class="summary-sig-name" onclick="show_private();">__session_timeout</a>(<span class="summary-sig-arg">self</span>)</span><br /> Process session request time out.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__session_timeout">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#__stream_state_change" class="summary-sig-name" onclick="show_private();">__stream_state_change</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">state</span>, <span class="summary-sig-arg">arg</span>)</span><br /> Handle stream state changes.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__stream_state_change">source code</a></span> </td> </tr> </table> </td> </tr> <tr class="private"> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#_session_started" class="summary-sig-name" onclick="show_private();">_session_started</a>(<span class="summary-sig-arg">self</span>)</span><br /> Called when session is started.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client._session_started">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#authenticated" class="summary-sig-name">authenticated</a>(<span class="summary-sig-arg">self</span>)</span><br /> Handle "authenticated" event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.authenticated">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#authorized" class="summary-sig-name">authorized</a>(<span class="summary-sig-arg">self</span>)</span><br /> Handle "authorized" event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.authorized">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#connect" class="summary-sig-name">connect</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">register</span>=<span class="summary-sig-default">False</span>)</span><br /> Connect to the server and set up the stream.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.connect">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#connected" class="summary-sig-name">connected</a>(<span class="summary-sig-arg">self</span>)</span><br /> Handle "connected" event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.connected">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="disconnect"></a><span class="summary-sig-name">disconnect</span>(<span class="summary-sig-arg">self</span>)</span><br /> Disconnect from the server.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.disconnect">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#disconnected" class="summary-sig-name">disconnected</a>(<span class="summary-sig-arg">self</span>)</span><br /> Handle "disconnected" event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.disconnected">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"><code class="link">socket.socket</code></span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#get_socket" class="summary-sig-name">get_socket</a>(<span class="summary-sig-arg">self</span>)</span><br /> Get the socket object of the active connection.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.get_socket">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"><a href="pyxmpp.clientstream.ClientStream-class.html" class="link">pyxmpp.ClientStream</a></span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#get_stream" class="summary-sig-name">get_stream</a>(<span class="summary-sig-arg">self</span>)</span><br /> Get the connected stream object.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.get_stream">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#idle" class="summary-sig-name">idle</a>(<span class="summary-sig-arg">self</span>)</span><br /> Do some "housekeeping" work like cache expiration or timeout handling.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.idle">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#loop" class="summary-sig-name">loop</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">timeout</span>=<span class="summary-sig-default">1</span>)</span><br /> Simple "main loop" for the client.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.loop">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="request_roster"></a><span class="summary-sig-name">request_roster</span>(<span class="summary-sig-arg">self</span>)</span><br /> Request the user's roster.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.request_roster">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="request_session"></a><span class="summary-sig-name">request_session</span>(<span class="summary-sig-arg">self</span>)</span><br /> Request an IM session.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.request_session">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#roster_updated" class="summary-sig-name">roster_updated</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">item</span>=<span class="summary-sig-default">None</span>)</span><br /> Handle roster update event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.roster_updated">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#session_started" class="summary-sig-name">session_started</a>(<span class="summary-sig-arg">self</span>)</span><br /> Handle session started event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.session_started">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#stream_closed" class="summary-sig-name">stream_closed</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">stream</span>)</span><br /> Handle stream closure event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_closed">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#stream_created" class="summary-sig-name">stream_created</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">stream</span>)</span><br /> Handle stream creation event.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_created">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#stream_error" class="summary-sig-name">stream_error</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">err</span>)</span><br /> Handle stream error received.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_error">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pyxmpp.client.Client-class.html#stream_state_changed" class="summary-sig-name">stream_state_changed</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">state</span>, <span class="summary-sig-arg">arg</span>)</span><br /> Handle any stream state change.</td> <td align="right" valign="top"> <span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_state_changed">source 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">: <code class="link">list</code> of <code class="link">str</code></span> </td><td class="summary"> <a href="pyxmpp.client.Client-class.html#auth_methods" class="summary-name">auth_methods</a><br /> : methods allowed for stream authentication. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">list</code></span> </td><td class="summary"> <a href="pyxmpp.client.Client-class.html#interface_providers" class="summary-name">interface_providers</a><br /> : list of object providing interfaces that could be used by the Client object. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <a href="pyxmpp.jid.JID-class.html" class="link">pyxmpp.JID</a></span> </td><td class="summary"> <a name="jid"></a><span class="summary-name">jid</span><br /> : configured JID of the client (current actual JID is avialable as <code class="link">self.stream.jid</code>). </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">int</code></span> </td><td class="summary"> <a name="keepalive"></a><span class="summary-name">keepalive</span><br /> : keepalive interval for the stream or 0 when keepalive is disabled. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">threading.RLock</code></span> </td><td class="summary"> <a name="lock"></a><span class="summary-name">lock</span><br /> : lock for synchronizing <a href="pyxmpp.client.Client-class.html" class="link">Client</a> attributes access. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">unicode</code></span> </td><td class="summary"> <a name="password"></a><span class="summary-name">password</span><br /> : authentication password. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">int</code></span> </td><td class="summary"> <a name="port"></a><span class="summary-name">port</span><br /> : port number on the server to use if non-standard and not discoverable by SRV lookups. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <a href="pyxmpp.roster.Roster-class.html" class="link">pyxmpp.Roster</a></span> </td><td class="summary"> <a name="roster"></a><span class="summary-name">roster</span><br /> : user's roster or <code class="link">None</code> if the roster is not yet retrieved. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">unicode</code></span> </td><td class="summary"> <a name="server"></a><span class="summary-name">server</span><br /> : server to use if non-standard and not discoverable by SRV lookups. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">bool</code></span> </td><td class="summary"> <a name="session_established"></a><span class="summary-name">session_established</span><br /> : <code class="link">True</code> when an IM session is established. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <code class="link">threading.Condition</code></span> </td><td class="summary"> <a name="state_changed"></a><span class="summary-name">state_changed</span><br /> : condition notified the the object state changes (stream becomes connected, session established etc.). </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">: <a href="pyxmpp.clientstream.ClientStream-class.html" class="link">pyxmpp.ClientStream</a></span> </td><td class="summary"> <a name="stream"></a><span class="summary-name">stream</span><br /> : current stream when the client is connected, <code class="link">None</code> otherwise. </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">password</span>=<span class="sig-default">None</span>, <span class="sig-arg">server</span>=<span class="sig-default">None</span>, <span class="sig-arg">port</span>=<span class="sig-default">5222</span>, <span class="sig-arg">auth_methods</span>=<span class="sig-default"><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">sasl:DIGEST-MD5</code><code class="variable-quote">'</code><code class="variable-group">)</code></span>, <span class="sig-arg">tls_settings</span>=<span class="sig-default">None</span>, <span class="sig-arg">keepalive</span>=<span class="sig-default">0</span>)</span> <br /><em class="fname">(Constructor)</em> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__init__">source code</a></span> </td> </tr></table> Initialize a Client object. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>jid</code></strong> (: <a href="pyxmpp.jid.JID-class.html" class="link">pyxmpp.JID</a>) - : user full JID for the connection.</li> <li><strong class="pname"><code>password</code></strong> (: <code class="link">unicode</code>) - : user password.</li> <li><strong class="pname"><code>server</code></strong> (: <code class="link">unicode</code>) - : server to use. If not given then address will be derived form the JID.</li> <li><strong class="pname"><code>port</code></strong> (: <code class="link">int</code>) - : port number to use. If not given then address will be derived form the JID.</li> <li><strong class="pname"><code>auth_methods</code></strong> (: sequence of <code class="link">str</code>) - : sallowed authentication methods. SASL authentication mechanisms in the list should be prefixed with "sasl:" string.</li> <li><strong class="pname"><code>tls_settings</code></strong> (: <a href="pyxmpp.streamtls.TLSSettings-class.html" class="link">pyxmpp.TLSSettings</a>) - : settings for StartTLS -- <a href="pyxmpp.streamtls.TLSSettings-class.html" class="link">TLSSettings</a> instance.</li> <li><strong class="pname"><code>keepalive</code></strong> (: <code class="link">int</code>) - : keepalive output interval. 0 to disable.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="__roster_error"></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">__roster_error</span>(<span class="sig-arg">self</span>, <span class="sig-arg">iq</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_error">source code</a></span> </td> </tr></table> Process roster request failure. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>iq</code></strong> (: <a href="pyxmpp.iq.Iq-class.html" class="link">pyxmpp.Iq</a>) - : IQ error stanza received as result of the roster request.</li> </ul></dd> <dt>Raises:</dt> <dd><ul class="nomargin-top"> <li><code><strong class='fraise'><a href="pyxmpp.exceptions.ClientError-class.html">ClientError</a></strong></code></li> </ul></dd> </dl> </td></tr></table> </div> <a name="__roster_push"></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">__roster_push</span>(<span class="sig-arg">self</span>, <span class="sig-arg">iq</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_push">source code</a></span> </td> </tr></table> Process a "roster push" (change notification) received. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>iq</code></strong> (: <a href="pyxmpp.iq.Iq-class.html" class="link">pyxmpp.Iq</a>) - : IQ result stanza received.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="__roster_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">__roster_result</span>(<span class="sig-arg">self</span>, <span class="sig-arg">iq</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_result">source code</a></span> </td> </tr></table> Process roster request success. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>iq</code></strong> (: <a href="pyxmpp.iq.Iq-class.html" class="link">pyxmpp.Iq</a>) - : IQ result stanza received in reply to the roster request.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="__roster_timeout"></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">__roster_timeout</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__roster_timeout">source code</a></span> </td> </tr></table> Process roster request time out. <dl class="fields"> <dt>Raises:</dt> <dd><ul class="nomargin-top"> <li><code><strong class='fraise'><a href="pyxmpp.exceptions.ClientError-class.html">ClientError</a></strong></code></li> </ul></dd> </dl> </td></tr></table> </div> <a name="__session_error"></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">__session_error</span>(<span class="sig-arg">self</span>, <span class="sig-arg">iq</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__session_error">source code</a></span> </td> </tr></table> Process session request failure. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>iq</code></strong> (: <a href="pyxmpp.iq.Iq-class.html" class="link">pyxmpp.Iq</a>) - : IQ error stanza received as result of the session request.</li> </ul></dd> <dt>Raises:</dt> <dd><ul class="nomargin-top"> <li><code><strong class='fraise'><a href="pyxmpp.exceptions.FatalClientError-class.html">FatalClientError</a></strong></code></li> </ul></dd> </dl> </td></tr></table> </div> <a name="__session_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">__session_result</span>(<span class="sig-arg">self</span>, <span class="sig-arg">_unused</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__session_result">source code</a></span> </td> </tr></table> Process session request success. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>_unused</code></strong> (: <a href="pyxmpp.iq.Iq-class.html" class="link">pyxmpp.Iq</a>) - : IQ result stanza received in reply to the session request.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="__session_timeout"></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">__session_timeout</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__session_timeout">source code</a></span> </td> </tr></table> Process session request time out. <dl class="fields"> <dt>Raises:</dt> <dd><ul class="nomargin-top"> <li><code><strong class='fraise'><a href="pyxmpp.exceptions.FatalClientError-class.html">FatalClientError</a></strong></code></li> </ul></dd> </dl> </td></tr></table> </div> <a name="__stream_state_change"></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">__stream_state_change</span>(<span class="sig-arg">self</span>, <span class="sig-arg">state</span>, <span class="sig-arg">arg</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.__stream_state_change">source code</a></span> </td> </tr></table> <p>Handle stream state changes.</p> <p>Call apopriate methods of self.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>state</code></strong> (: <code class="link">str</code>) - : the new state.</li> <li><strong class="pname"><code>arg</code></strong> - : state change argument.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="_session_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">_session_started</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client._session_started">source code</a></span> </td> </tr></table> <p>Called when session is started.</p> <p>Activates objects from <code class="link">self.interface_provides</code> by installing their stanza handlers, etc.</p> <dl class="fields"> </dl> </td></tr></table> </div> <a name="authenticated"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">authenticated</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.authenticated">source code</a></span> </td> </tr></table> Handle "authenticated" event. May be overriden in derived classes. This one does nothing. <dl class="fields"> </dl> </td></tr></table> </div> <a name="authorized"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">authorized</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.authorized">source code</a></span> </td> </tr></table> Handle "authorized" event. May be overriden in derived classes. This one requests an IM session. <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">register</span>=<span class="sig-default">False</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.connect">source code</a></span> </td> </tr></table> <p>Connect to the server and set up the stream.</p> <p>Set <a href="pyxmpp.client.Client-class.html#stream" class="link">self.stream</a> and notify <a href="pyxmpp.client.Client-class.html#state_changed" class="link">self.state_changed</a> when connection succeeds.</p> <dl class="fields"> </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> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">connected</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.connected">source code</a></span> </td> </tr></table> Handle "connected" event. May be overriden in derived classes. This one does nothing. <dl class="fields"> </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> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">disconnected</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.disconnected">source code</a></span> </td> </tr></table> Handle "disconnected" event. May be overriden in derived classes. This one does nothing. <dl class="fields"> </dl> </td></tr></table> </div> <a name="get_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_socket</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.get_socket">source code</a></span> </td> </tr></table> Get the socket object of the active connection. <dl class="fields"> <dt>Returns: <code class="link">socket.socket</code></dt> <dd>socket used by the stream.</dd> </dl> </td></tr></table> </div> <a name="get_stream"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><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_stream</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.get_stream">source code</a></span> </td> </tr></table> Get the connected stream object. <dl class="fields"> <dt>Returns: <a href="pyxmpp.clientstream.ClientStream-class.html" class="link">pyxmpp.ClientStream</a></dt> <dd>stream object or <code class="link">None</code> if the client is not connected.</dd> </dl> </td></tr></table> </div> <a name="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">idle</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.idle">source code</a></span> </td> </tr></table> Do some "housekeeping" work like cache expiration or timeout handling. Should be called periodically from the application main loop. May be overriden in derived classes. <dl class="fields"> </dl> </td></tr></table> </div> <a name="loop"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">loop</span>(<span class="sig-arg">self</span>, <span class="sig-arg">timeout</span>=<span class="sig-default">1</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.loop">source code</a></span> </td> </tr></table> <p>Simple "main loop" for the client.</p> <p>By default just call the <code class="link">pyxmpp.Stream.loop_iter</code> method of <a href="pyxmpp.client.Client-class.html#stream" class="link">self.stream</a>, which handles stream input and <a href="pyxmpp.client.Client-class.html#idle" class="link">self.idle</a> for some "housekeeping" work until the stream is closed.</p> <p>This usually will be replaced by something more sophisticated. E.g. handling of other input sources.</p> <dl class="fields"> </dl> </td></tr></table> </div> <a name="roster_updated"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">roster_updated</span>(<span class="sig-arg">self</span>, <span class="sig-arg">item</span>=<span class="sig-default">None</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.roster_updated">source code</a></span> </td> </tr></table> Handle roster update event. May be overriden in derived classes. This one does nothing. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>item</code></strong> (: <a href="pyxmpp.roster.RosterItem-class.html" class="link">pyxmpp.RosterItem</a>) - : the roster item changed or <code class="link">None</code> if whole roster was received.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="session_started"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">session_started</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.session_started">source code</a></span> </td> </tr></table> Handle session started event. May be overriden in derived classes. This one requests the user's roster and sends the initial presence. <dl class="fields"> </dl> </td></tr></table> </div> <a name="stream_closed"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><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_closed</span>(<span class="sig-arg">self</span>, <span class="sig-arg">stream</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_closed">source code</a></span> </td> </tr></table> Handle stream closure event. May be overriden in derived classes. This one does nothing. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>stream</code></strong> (: <a href="pyxmpp.clientstream.ClientStream-class.html" class="link">pyxmpp.ClientStream</a>) - : the new stream.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="stream_created"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><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_created</span>(<span class="sig-arg">self</span>, <span class="sig-arg">stream</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_created">source code</a></span> </td> </tr></table> Handle stream creation event. May be overriden in derived classes. This one does nothing. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>stream</code></strong> (: <a href="pyxmpp.clientstream.ClientStream-class.html" class="link">pyxmpp.ClientStream</a>) - : the new stream.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="stream_error"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><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_error</span>(<span class="sig-arg">self</span>, <span class="sig-arg">err</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_error">source code</a></span> </td> </tr></table> Handle stream error received. May be overriden in derived classes. This one passes an error messages to logging facilities. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>err</code></strong> (: <a href="pyxmpp.error.StreamErrorNode-class.html" class="link">pyxmpp.error.StreamErrorNode</a>) - : the error element received.</li> </ul></dd> </dl> </td></tr></table> </div> <a name="stream_state_changed"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><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_state_changed</span>(<span class="sig-arg">self</span>, <span class="sig-arg">state</span>, <span class="sig-arg">arg</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="pyxmpp.client-pysrc.html#Client.stream_state_changed">source code</a></span> </td> </tr></table> Handle any stream state change. May be overriden in derived classes. This one does nothing. <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>state</code></strong> (: <code class="link">str</code>) - : the new state.</li> <li><strong class="pname"><code>arg</code></strong> - : state change argument.</li> </ul></dd> </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="auth_methods"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <h3 class="epydoc">auth_methods</h3> : methods allowed for stream authentication. SASL mechanism names should be preceded with "sasl:" prefix. <dl class="fields"> <dt>Type:</dt> <dd>: <code class="link">list</code> of <code class="link">str</code></dd> </dl> </td></tr></table> </div> <a name="interface_providers"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <h3 class="epydoc">interface_providers</h3> : list of object providing interfaces that could be used by the Client object. Initialized to [<code class="link">self</code>] by the constructor if not set earlier. Put objects providing <a href="pyxmpp.interfaces.IPresenceHandlersProvider-class.html" class="link">IPresenceHandlersProvider</a>, <a href="pyxmpp.interfaces.IMessageHandlersProvider-class.html" class="link">IMessageHandlersProvider</a>, <a href="pyxmpp.interfaces.IIqHandlersProvider-class.html" class="link">IIqHandlersProvider</a> or <a href="pyxmpp.interfaces.IStanzaHandlersProvider-class.html" class="link">IStanzaHandlersProvider</a> into this list. <dl class="fields"> <dt>Type:</dt> <dd>: <code class="link">list</code></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> <a href="pyxmpp-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </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://pyxmpp.jajcus.net/">PyXMPP</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 Sun May 8 13:34:59 2011 </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>