1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <title>nepi.resources.omf.omf_client — NEPI 3.0 documentation</title>
11 <link rel="stylesheet" href="../../../../_static/sphinxdoc.css" type="text/css" />
12 <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
14 <script type="text/javascript">
15 var DOCUMENTATION_OPTIONS = {
16 URL_ROOT: '../../../../',
18 COLLAPSE_INDEX: false,
23 <script type="text/javascript" src="../../../../_static/jquery.js"></script>
24 <script type="text/javascript" src="../../../../_static/underscore.js"></script>
25 <script type="text/javascript" src="../../../../_static/doctools.js"></script>
26 <link rel="top" title="NEPI 3.0 documentation" href="../../../../index.html" />
27 <link rel="up" title="Module code" href="../../../index.html" />
33 <li class="right" style="margin-right: 10px">
34 <a href="../../../../genindex.html" title="General Index"
35 accesskey="I">index</a></li>
37 <a href="../../../../py-modindex.html" title="Python Module Index"
39 <li><a href="../../../../index.html">NEPI 3.0 documentation</a> »</li>
40 <li><a href="../../../index.html" accesskey="U">Module code</a> »</li>
43 <div class="sphinxsidebar">
44 <div class="sphinxsidebarwrapper">
45 <div id="searchbox" style="display: none">
47 <form class="search" action="../../../../search.html" method="get">
48 <input type="text" name="q" />
49 <input type="submit" value="Go" />
50 <input type="hidden" name="check_keywords" value="yes" />
51 <input type="hidden" name="area" value="default" />
53 <p class="searchtip" style="font-size: 90%">
54 Enter search terms or a module, class or function name.
57 <script type="text/javascript">$('#searchbox').show(0);</script>
61 <div class="document">
62 <div class="documentwrapper">
63 <div class="bodywrapper">
66 <h1>Source code for nepi.resources.omf.omf_client</h1><div class="highlight"><pre>
67 <span class="c">#</span>
68 <span class="c"># NEPI, a framework to manage network experiments</span>
69 <span class="c"># Copyright (C) 2013 INRIA</span>
70 <span class="c">#</span>
71 <span class="c"># This program is free software: you can redistribute it and/or modify</span>
72 <span class="c"># it under the terms of the GNU General Public License version 2 as</span>
73 <span class="c"># published by the Free Software Foundation;</span>
74 <span class="c">#</span>
75 <span class="c"># This program is distributed in the hope that it will be useful,</span>
76 <span class="c"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
77 <span class="c"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
78 <span class="c"># GNU General Public License for more details.</span>
79 <span class="c">#</span>
80 <span class="c"># You should have received a copy of the GNU General Public License</span>
81 <span class="c"># along with this program. If not, see <http://www.gnu.org/licenses/>.</span>
82 <span class="c">#</span>
83 <span class="c"># Author: Alina Quereilhac <alina.quereilhac@inria.fr></span>
84 <span class="c"># Julien Tribino <julien.tribino@inria.fr></span>
86 <span class="kn">from</span> <span class="nn">nepi.util.logger</span> <span class="kn">import</span> <span class="n">Logger</span>
87 <span class="kn">from</span> <span class="nn">nepi.resources.omf.omf6_parser</span> <span class="kn">import</span> <span class="n">OMF6Parser</span>
88 <span class="k">try</span><span class="p">:</span>
89 <span class="kn">import</span> <span class="nn">sleekxmpp</span>
90 <span class="kn">from</span> <span class="nn">sleekxmpp.exceptions</span> <span class="kn">import</span> <span class="n">IqError</span><span class="p">,</span> <span class="n">IqTimeout</span>
91 <span class="k">class</span> <span class="nc">BaseOMFClient</span><span class="p">(</span><span class="n">sleekxmpp</span><span class="o">.</span><span class="n">ClientXMPP</span><span class="p">):</span>
92 <span class="k">pass</span>
93 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
94 <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span><span class="s">"SleekXMPP is not installed. Without this library "</span>
95 <span class="s">"you will be not able to use OMF Resources "</span>
96 <span class="s">"if you want to install SleekXmpp: </span><span class="se">\n</span><span class="s">"</span>
97 <span class="s">" git clone -b develop git://github.com/fritzy/SleekXMPP.git </span><span class="se">\n</span><span class="s">"</span>
98 <span class="s">" cd SleekXMPP </span><span class="se">\n</span><span class="s">"</span>
99 <span class="s">" sudo python setup.py install</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span>
101 <span class="n">logger</span> <span class="o">=</span> <span class="n">Logger</span><span class="p">(</span><span class="s">"BaseOMFClient"</span><span class="p">)</span>
102 <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
104 <div class="viewcode-block" id="BaseOMFClient"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.BaseOMFClient">[docs]</a> <span class="k">class</span> <span class="nc">BaseOMFClient</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
105 <span class="k">pass</span>
107 <span class="kn">import</span> <span class="nn">traceback</span>
108 <span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="kn">as</span> <span class="nn">ET</span>
110 <span class="c"># inherit from BaseXmpp and XMLstream classes</span>
111 <div class="viewcode-block" id="OMFClient"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient">[docs]</a><span class="k">class</span> <span class="nc">OMFClient</span><span class="p">(</span><span class="n">BaseOMFClient</span><span class="p">,</span> <span class="n">Logger</span><span class="p">):</span>
112 <span class="sd">"""</span>
113 <span class="sd"> .. class:: Class Args :</span>
114 <span class="sd"> </span>
115 <span class="sd"> :param jid: Jabber Id (= Xmpp Slice + Date)</span>
116 <span class="sd"> :type jid: str</span>
117 <span class="sd"> :param password: Jabber Password (= Xmpp Password)</span>
118 <span class="sd"> :type password: str</span>
120 <span class="sd"> .. note::</span>
122 <span class="sd"> This class is an XMPP Client with customized method</span>
124 <span class="sd"> """</span>
126 <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">jid</span><span class="p">,</span> <span class="n">password</span><span class="p">):</span>
127 <span class="sd">"""</span>
129 <span class="sd"> :param jid: Jabber Id (= Xmpp Slice + Date)</span>
130 <span class="sd"> :type jid: str</span>
131 <span class="sd"> :param password: Jabber Password (= Xmpp Password)</span>
132 <span class="sd"> :type password: str</span>
135 <span class="sd"> """</span>
136 <span class="n">Logger</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">"OMFClient"</span><span class="p">)</span>
138 <span class="n">sleekxmpp</span><span class="o">.</span><span class="n">ClientXMPP</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">jid</span><span class="p">,</span> <span class="n">password</span><span class="p">)</span>
139 <span class="bp">self</span><span class="o">.</span><span class="n">_ready</span> <span class="o">=</span> <span class="bp">False</span>
140 <span class="bp">self</span><span class="o">.</span><span class="n">_registered</span> <span class="o">=</span> <span class="bp">False</span>
141 <span class="bp">self</span><span class="o">.</span><span class="n">_server</span> <span class="o">=</span> <span class="bp">None</span>
142 <span class="bp">self</span><span class="o">.</span><span class="n">_parser</span> <span class="o">=</span> <span class="bp">None</span>
144 <span class="bp">self</span><span class="o">.</span><span class="n">register_plugin</span><span class="p">(</span><span class="s">'xep_0077'</span><span class="p">)</span> <span class="c"># In-band registration</span>
145 <span class="bp">self</span><span class="o">.</span><span class="n">register_plugin</span><span class="p">(</span><span class="s">'xep_0030'</span><span class="p">)</span>
146 <span class="bp">self</span><span class="o">.</span><span class="n">register_plugin</span><span class="p">(</span><span class="s">'xep_0059'</span><span class="p">)</span>
147 <span class="bp">self</span><span class="o">.</span><span class="n">register_plugin</span><span class="p">(</span><span class="s">'xep_0060'</span><span class="p">)</span> <span class="c"># PubSub </span>
149 <span class="bp">self</span><span class="o">.</span><span class="n">add_event_handler</span><span class="p">(</span><span class="s">"session_start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">)</span>
150 <span class="bp">self</span><span class="o">.</span><span class="n">add_event_handler</span><span class="p">(</span><span class="s">"register"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">register</span><span class="p">)</span>
151 <span class="bp">self</span><span class="o">.</span><span class="n">add_event_handler</span><span class="p">(</span><span class="s">"pubsub_publish"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle_omf_message</span><span class="p">)</span>
153 <span class="c">#Init the parser</span>
154 <span class="bp">self</span><span class="o">.</span><span class="n">_init_parser</span><span class="p">()</span>
156 <span class="k">def</span> <span class="nf">_init_parser</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
157 <span class="sd">""" Init the parser depending on the OMF Version</span>
159 <span class="sd"> """</span>
160 <span class="bp">self</span><span class="o">.</span><span class="n">_parser</span> <span class="o">=</span> <span class="n">OMF6Parser</span><span class="p">()</span>
162 <span class="nd">@property</span>
163 <div class="viewcode-block" id="OMFClient.ready"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.ready">[docs]</a> <span class="k">def</span> <span class="nf">ready</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
164 <span class="sd">""" Check if the client is ready</span>
166 <span class="sd"> """</span>
167 <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ready</span>
169 <div class="viewcode-block" id="OMFClient.start"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
170 <span class="sd">""" Send presence to the Xmppp Server. This function is called directly by the sleekXmpp library</span>
172 <span class="sd"> """</span>
173 <span class="bp">self</span><span class="o">.</span><span class="n">send_presence</span><span class="p">()</span>
174 <span class="bp">self</span><span class="o">.</span><span class="n">_ready</span> <span class="o">=</span> <span class="bp">True</span>
175 <span class="bp">self</span><span class="o">.</span><span class="n">_server</span> <span class="o">=</span> <span class="s">"pubsub.</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="o">.</span><span class="n">domain</span>
177 <div class="viewcode-block" id="OMFClient.register"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.register">[docs]</a> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">iq</span><span class="p">):</span>
178 <span class="sd">""" Register to the Xmppp Server. This function is called directly by the sleekXmpp library</span>
180 <span class="sd"> """</span>
181 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_registered</span><span class="p">:</span>
182 <span class="n">msg</span> <span class="o">=</span> <span class="s">" </span><span class="si">%s</span><span class="s"> already registered!"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span>
183 <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
184 <span class="k">return</span>
186 <span class="n">resp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Iq</span><span class="p">()</span>
187 <span class="n">resp</span><span class="p">[</span><span class="s">'type'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'set'</span>
188 <span class="n">resp</span><span class="p">[</span><span class="s">'register'</span><span class="p">][</span><span class="s">'username'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="o">.</span><span class="n">user</span>
189 <span class="n">resp</span><span class="p">[</span><span class="s">'register'</span><span class="p">][</span><span class="s">'password'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">password</span>
191 <span class="k">try</span><span class="p">:</span>
192 <span class="n">resp</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">now</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
193 <span class="n">msg</span> <span class="o">=</span> <span class="s">" Account created for </span><span class="si">%s</span><span class="s">!"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span>
194 <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
195 <span class="bp">self</span><span class="o">.</span><span class="n">_registered</span> <span class="o">=</span> <span class="bp">True</span>
196 <span class="k">except</span> <span class="n">IqError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
197 <span class="n">msg</span> <span class="o">=</span> <span class="s">" Could not register account: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">e</span><span class="o">.</span><span class="n">iq</span><span class="p">[</span><span class="s">'error'</span><span class="p">][</span><span class="s">'text'</span><span class="p">]</span>
198 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
199 <span class="k">except</span> <span class="n">IqTimeout</span><span class="p">:</span>
200 <span class="n">msg</span> <span class="o">=</span> <span class="s">" No response from server."</span>
201 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
203 <div class="viewcode-block" id="OMFClient.unregister"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.unregister">[docs]</a> <span class="k">def</span> <span class="nf">unregister</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
204 <span class="sd">""" Unregister from the Xmppp Server.</span>
206 <span class="sd"> """</span>
207 <span class="k">try</span><span class="p">:</span>
208 <span class="bp">self</span><span class="o">.</span><span class="n">plugin</span><span class="p">[</span><span class="s">'xep_0077'</span><span class="p">]</span><span class="o">.</span><span class="n">cancel_registration</span><span class="p">(</span>
209 <span class="n">ifrom</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="o">.</span><span class="n">full</span><span class="p">)</span>
210 <span class="n">msg</span> <span class="o">=</span> <span class="s">" Account unregistered for </span><span class="si">%s</span><span class="s">!"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span>
211 <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
212 <span class="k">except</span> <span class="n">IqError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
213 <span class="n">msg</span> <span class="o">=</span> <span class="s">" Could not unregister account: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">e</span><span class="o">.</span><span class="n">iq</span><span class="p">[</span><span class="s">'error'</span><span class="p">][</span><span class="s">'text'</span><span class="p">]</span>
214 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
215 <span class="k">except</span> <span class="n">IqTimeout</span><span class="p">:</span>
216 <span class="n">msg</span> <span class="o">=</span> <span class="s">" No response from server."</span>
217 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
219 <div class="viewcode-block" id="OMFClient.nodes"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.nodes">[docs]</a> <span class="k">def</span> <span class="nf">nodes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
220 <span class="sd">""" Get all the nodes of the Xmppp Server.</span>
222 <span class="sd"> """</span>
223 <span class="k">try</span><span class="p">:</span>
224 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">get_nodes</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">)</span>
225 <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s">'disco_items'</span><span class="p">][</span><span class="s">'items'</span><span class="p">]:</span>
226 <span class="n">msg</span> <span class="o">=</span> <span class="s">' - </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
227 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
228 <span class="k">return</span> <span class="n">result</span>
229 <span class="k">except</span><span class="p">:</span>
230 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
231 <span class="n">msg</span> <span class="o">=</span> <span class="s">'Could not retrieve node list.</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">error</span>
232 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
234 <div class="viewcode-block" id="OMFClient.subscriptions"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.subscriptions">[docs]</a> <span class="k">def</span> <span class="nf">subscriptions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
235 <span class="sd">""" Get all the subscriptions of the Xmppp Server.</span>
237 <span class="sd"> """</span>
238 <span class="k">try</span><span class="p">:</span>
239 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">get_subscriptions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">)</span>
240 <span class="c">#self.boundjid.full)</span>
241 <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s">'node'</span><span class="p">]:</span>
242 <span class="n">msg</span> <span class="o">=</span> <span class="s">' - </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
243 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
244 <span class="k">return</span> <span class="n">result</span>
245 <span class="k">except</span><span class="p">:</span>
246 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
247 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Could not retrieve subscriptions.</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">error</span>
248 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
250 <div class="viewcode-block" id="OMFClient.create"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.create">[docs]</a> <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">):</span>
251 <span class="sd">""" Create the topic corresponding to the node</span>
253 <span class="sd"> :param node: Name of the topic, corresponding to the node (ex : omf.plexus.wlab17)</span>
254 <span class="sd"> :type node: str</span>
256 <span class="sd"> """</span>
257 <span class="n">msg</span> <span class="o">=</span> <span class="s">" Create Topic : "</span> <span class="o">+</span> <span class="n">node</span>
258 <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
260 <span class="n">config</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0004'</span><span class="p">]</span><span class="o">.</span><span class="n">makeForm</span><span class="p">(</span><span class="s">'submit'</span><span class="p">)</span>
261 <span class="n">config</span><span class="o">.</span><span class="n">add_field</span><span class="p">(</span><span class="n">var</span><span class="o">=</span><span class="s">'pubsub#node_type'</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="s">'leaf'</span><span class="p">)</span>
262 <span class="n">config</span><span class="o">.</span><span class="n">add_field</span><span class="p">(</span><span class="n">var</span><span class="o">=</span><span class="s">'pubsub#notify_retract'</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="s">'0'</span><span class="p">)</span>
263 <span class="n">config</span><span class="o">.</span><span class="n">add_field</span><span class="p">(</span><span class="n">var</span><span class="o">=</span><span class="s">'pubsub#publish_model'</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="s">'open'</span><span class="p">)</span>
264 <span class="n">config</span><span class="o">.</span><span class="n">add_field</span><span class="p">(</span><span class="n">var</span><span class="o">=</span><span class="s">'pubsub#persist_items'</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="s">'1'</span><span class="p">)</span>
265 <span class="n">config</span><span class="o">.</span><span class="n">add_field</span><span class="p">(</span><span class="n">var</span><span class="o">=</span><span class="s">'pubsub#max_items'</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="s">'1'</span><span class="p">)</span>
266 <span class="n">config</span><span class="o">.</span><span class="n">add_field</span><span class="p">(</span><span class="n">var</span><span class="o">=</span><span class="s">'pubsub#title'</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">node</span><span class="p">)</span>
268 <span class="k">try</span><span class="p">:</span>
269 <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">create_node</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">config</span> <span class="o">=</span> <span class="n">config</span><span class="p">)</span>
270 <span class="k">except</span><span class="p">:</span>
271 <span class="c">#error = traceback.format_exc()</span>
272 <span class="c">#msg = ' Could not create topic: %s\ntraceback:\n%s' % (node, error)</span>
273 <span class="n">msg</span> <span class="o">=</span> <span class="s">'Could not create the topic : '</span><span class="o">+</span><span class="n">node</span><span class="o">+</span><span class="s">' . Maybe the topic already exists'</span>
274 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
276 <div class="viewcode-block" id="OMFClient.delete"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.delete">[docs]</a> <span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">):</span>
277 <span class="sd">""" Delete the topic corresponding to the node</span>
279 <span class="sd"> :param node: Name of the topic, corresponding to the node (ex : omf.plexus.wlab17)</span>
280 <span class="sd"> :type node: str</span>
282 <span class="sd"> """</span>
283 <span class="c"># To check if the queue are well empty at the end</span>
284 <span class="c">#print " length of the queue : " + str(self.send_queue.qsize())</span>
285 <span class="c">#print " length of the queue : " + str(self.event_queue.qsize())</span>
286 <span class="k">try</span><span class="p">:</span>
287 <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">delete_node</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
288 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Deleted node: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">node</span>
289 <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
290 <span class="k">except</span><span class="p">:</span>
291 <span class="c">#error = traceback.format_exc()</span>
292 <span class="c">#msg = ' Could not delete topic: %s\ntraceback:\n%s' % (node, error)</span>
293 <span class="n">msg</span> <span class="o">=</span> <span class="s">'Could not delete the topic : '</span><span class="o">+</span><span class="n">node</span><span class="o">+</span><span class="s">' . Maybe It is not the owner of the topic'</span>
294 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
296 <div class="viewcode-block" id="OMFClient.publish"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.publish">[docs]</a> <span class="k">def</span> <span class="nf">publish</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">node</span><span class="p">):</span>
297 <span class="sd">""" Publish the data to the corresponding topic</span>
299 <span class="sd"> :param data: Data that will be published</span>
300 <span class="sd"> :type data: str</span>
301 <span class="sd"> :param node: Name of the topic</span>
302 <span class="sd"> :type node: str</span>
304 <span class="sd"> """</span>
306 <span class="n">msg</span> <span class="o">=</span> <span class="s">" Publish to Topic : "</span> <span class="o">+</span> <span class="n">node</span>
307 <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
308 <span class="k">try</span><span class="p">:</span>
309 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span><span class="n">node</span><span class="p">,</span><span class="n">payload</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
310 <span class="c"># id = result['pubsub']['publish']['item']['id']</span>
311 <span class="c"># print('Published at item id: %s' % id)</span>
312 <span class="k">except</span><span class="p">:</span>
313 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
314 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Could not publish to: </span><span class="si">%s</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span>
315 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
317 <div class="viewcode-block" id="OMFClient.get"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
318 <span class="sd">""" Get the item</span>
320 <span class="sd"> :param data: data from which the items will be get back</span>
321 <span class="sd"> :type data: str</span>
324 <span class="sd"> """</span>
325 <span class="k">try</span><span class="p">:</span>
326 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">get_item</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="p">,</span>
327 <span class="n">data</span><span class="p">)</span>
328 <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">result</span><span class="p">[</span><span class="s">'pubsub'</span><span class="p">][</span><span class="s">'items'</span><span class="p">][</span><span class="s">'substanzas'</span><span class="p">]:</span>
329 <span class="n">msg</span> <span class="o">=</span> <span class="s">'Retrieved item </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s">'id'</span><span class="p">],</span> <span class="n">tostring</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s">'payload'</span><span class="p">]))</span>
330 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
331 <span class="k">except</span><span class="p">:</span>
332 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
333 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Could not retrieve item </span><span class="si">%s</span><span class="s"> from topic </span><span class="si">%s</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> \
334 <span class="o">%</span> <span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span>
335 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
337 <div class="viewcode-block" id="OMFClient.retract"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.retract">[docs]</a> <span class="k">def</span> <span class="nf">retract</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
338 <span class="sd">""" Retract the item</span>
340 <span class="sd"> :param data: data from which the item will be retracted</span>
341 <span class="sd"> :type data: str</span>
343 <span class="sd"> """</span>
344 <span class="k">try</span><span class="p">:</span>
345 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">retract</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
346 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Retracted item </span><span class="si">%s</span><span class="s"> from topic </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="p">)</span>
347 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
348 <span class="k">except</span><span class="p">:</span>
349 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
350 <span class="n">msg</span> <span class="o">=</span> <span class="s">'Could not retract item </span><span class="si">%s</span><span class="s"> from topic </span><span class="si">%s</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> \
351 <span class="o">%</span> <span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span>
352 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
354 <div class="viewcode-block" id="OMFClient.purge"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.purge">[docs]</a> <span class="k">def</span> <span class="nf">purge</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
355 <span class="sd">""" Purge the information in the server</span>
357 <span class="sd"> """</span>
358 <span class="k">try</span><span class="p">:</span>
359 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">purge</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="p">)</span>
360 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Purged all items from topic </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span>
361 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
362 <span class="k">except</span><span class="p">:</span>
363 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
364 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Could not purge items from topic </span><span class="si">%s</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> \
365 <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span>
366 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
368 <div class="viewcode-block" id="OMFClient.subscribe"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.subscribe">[docs]</a> <span class="k">def</span> <span class="nf">subscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">):</span>
369 <span class="sd">""" Subscribe to a topic</span>
371 <span class="sd"> :param node: Name of the topic</span>
372 <span class="sd"> :type node: str</span>
374 <span class="sd"> """</span>
375 <span class="k">try</span><span class="p">:</span>
376 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
377 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Subscribed </span><span class="si">%s</span><span class="s"> to topic </span><span class="si">%s</span><span class="s">'</span> \
378 <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
379 <span class="c">#self.info(msg)</span>
380 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
381 <span class="k">except</span><span class="p">:</span>
382 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
383 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Could not subscribe </span><span class="si">%s</span><span class="s"> to topic </span><span class="si">%s</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> \
384 <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="o">.</span><span class="n">bare</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span>
385 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
387 <div class="viewcode-block" id="OMFClient.unsubscribe"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.unsubscribe">[docs]</a> <span class="k">def</span> <span class="nf">unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">):</span>
388 <span class="sd">""" Unsubscribe to a topic</span>
390 <span class="sd"> :param node: Name of the topic</span>
391 <span class="sd"> :type node: str</span>
393 <span class="sd"> """</span>
394 <span class="k">try</span><span class="p">:</span>
395 <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s">'xep_0060'</span><span class="p">]</span><span class="o">.</span><span class="n">unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_server</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
396 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Unsubscribed </span><span class="si">%s</span><span class="s"> from topic </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="o">.</span><span class="n">bare</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
397 <span class="bp">self</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
398 <span class="k">except</span><span class="p">:</span>
399 <span class="n">error</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
400 <span class="n">msg</span> <span class="o">=</span> <span class="s">' Could not unsubscribe </span><span class="si">%s</span><span class="s"> from topic </span><span class="si">%s</span><span class="se">\n</span><span class="s">traceback:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> \
401 <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boundjid</span><span class="o">.</span><span class="n">bare</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span>
402 <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
404 <div class="viewcode-block" id="OMFClient.check_mailbox"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.check_mailbox">[docs]</a> <span class="k">def</span> <span class="nf">check_mailbox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">itype</span><span class="p">,</span> <span class="n">attr</span><span class="p">):</span>
405 <span class="sd">""" Check the mail box</span>
407 <span class="sd"> :param itype: type of mail</span>
408 <span class="sd"> :type itype: str</span>
409 <span class="sd"> :param attr: value wanted</span>
410 <span class="sd"> :type attr: str</span>
412 <span class="sd"> """</span>
413 <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parser</span><span class="o">.</span><span class="n">check_mailbox</span><span class="p">(</span><span class="n">itype</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span>
416 <div class="viewcode-block" id="OMFClient.handle_omf_message"><a class="viewcode-back" href="../../../../_layout/nepi.resources.omf.html#nepi.resources.omf.omf_client.OMFClient.handle_omf_message">[docs]</a> <span class="k">def</span> <span class="nf">handle_omf_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">iq</span><span class="p">):</span>
417 <span class="sd">""" Handle published/received message </span>
419 <span class="sd"> :param iq: Stanzas that is currently published/received</span>
420 <span class="sd"> :type iq: Iq Stanza</span>
422 <span class="sd"> """</span>
423 <span class="bp">self</span><span class="o">.</span><span class="n">_parser</span><span class="o">.</span><span class="n">handle</span><span class="p">(</span><span class="n">iq</span><span class="p">)</span>
424 </pre></div></div></div>
429 <div class="clearer"></div>
431 <div class="related">
434 <li class="right" style="margin-right: 10px">
435 <a href="../../../../genindex.html" title="General Index"
438 <a href="../../../../py-modindex.html" title="Python Module Index"
440 <li><a href="../../../../index.html">NEPI 3.0 documentation</a> »</li>
441 <li><a href="../../../index.html" >Module code</a> »</li>
445 © Copyright 2014, Alina Quereilhac, Lucia Guevgeozian Odizzio, Julien Tribino.
446 Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.