add sphinx documentation
[nepi.git] / doc / sphinx / _build / html / _modules / nepi / resources / ns3 / resource_manager_generator.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8     
9     <title>nepi.resources.ns3.resource_manager_generator &mdash; NEPI 3.0 documentation</title>
10     
11     <link rel="stylesheet" href="../../../../_static/sphinxdoc.css" type="text/css" />
12     <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
13     
14     <script type="text/javascript">
15       var DOCUMENTATION_OPTIONS = {
16         URL_ROOT:    '../../../../',
17         VERSION:     '3.0',
18         COLLAPSE_INDEX: false,
19         FILE_SUFFIX: '.html',
20         HAS_SOURCE:  true
21       };
22     </script>
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" /> 
28   </head>
29   <body>
30     <div class="related">
31       <h3>Navigation</h3>
32       <ul>
33         <li class="right" style="margin-right: 10px">
34           <a href="../../../../genindex.html" title="General Index"
35              accesskey="I">index</a></li>
36         <li class="right" >
37           <a href="../../../../py-modindex.html" title="Python Module Index"
38              >modules</a> |</li>
39         <li><a href="../../../../index.html">NEPI 3.0 documentation</a> &raquo;</li>
40           <li><a href="../../../index.html" accesskey="U">Module code</a> &raquo;</li> 
41       </ul>
42     </div>
43       <div class="sphinxsidebar">
44         <div class="sphinxsidebarwrapper">
45 <div id="searchbox" style="display: none">
46   <h3>Quick search</h3>
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" />
52     </form>
53     <p class="searchtip" style="font-size: 90%">
54     Enter search terms or a module, class or function name.
55     </p>
56 </div>
57 <script type="text/javascript">$('#searchbox').show(0);</script>
58         </div>
59       </div>
60
61     <div class="document">
62       <div class="documentwrapper">
63         <div class="bodywrapper">
64           <div class="body">
65             
66   <h1>Source code for nepi.resources.ns3.resource_manager_generator</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 &lt;http://www.gnu.org/licenses/&gt;.</span>
82 <span class="c">#</span>
83 <span class="c"># Author: Alina Quereilhac &lt;alina.quereilhac@inria.fr&gt;</span>
84
85 <span class="c">#</span>
86 <span class="c"># Instructions to automatically generate ns-3 ResourceManagers</span>
87 <span class="c"># </span>
88 <span class="c"># Configure the ns-3 enviorment (e.g.):</span>
89 <span class="c">#</span>
90 <span class="c">#  export PYTHONPATH=~/.nepi/nepi-usr/bin/ns-3/ns-3.20/optimized/build/lib/python/site-packages</span>
91 <span class="c">#  export LD_LIBRARY_PATH=~/.nepi/nepi-usr/bin/ns-3/ns-3.20/optimized/build/lib</span>
92 <span class="c">#</span>
93 <span class="c"># Run the RM generator:</span>
94 <span class="c">#</span>
95 <span class="c">#  PYTHONPATH=$PYTHONPATH:~/repos/nepi/src python src/nepi/resources/ns3/resource_manager_generator.py</span>
96 <span class="c">#</span>
97
98 <span class="c"># Force the load of ns3 libraries</span>
99 <span class="kn">from</span> <span class="nn">nepi.resources.ns3.ns3wrapper</span> <span class="kn">import</span> <span class="n">load_ns3_module</span>
100
101 <span class="kn">import</span> <span class="nn">os</span>
102 <span class="kn">import</span> <span class="nn">re</span>
103
104 <span class="n">adapted_types</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;ns3::Node&quot;</span><span class="p">,</span>
105         <span class="s">&quot;ns3::Icmpv4L4Protocol&quot;</span><span class="p">,</span>
106         <span class="s">&quot;ns3::ArpL3Protocol&quot;</span><span class="p">,</span>
107         <span class="s">&quot;ns3::Ipv4L3Protocol&quot;</span><span class="p">,</span>
108         <span class="s">&quot;ns3::PropagationLossModel&quot;</span><span class="p">,</span>
109         <span class="s">&quot;ns3::MobilityModel&quot;</span><span class="p">,</span>
110         <span class="s">&quot;ns3::PropagationDelayModel&quot;</span><span class="p">,</span>
111         <span class="s">&quot;ns3::WifiRemoteStationManager&quot;</span><span class="p">,</span>
112         <span class="s">&quot;ns3::WifiNetDevice&quot;</span><span class="p">,</span>
113         <span class="s">&quot;ns3::WifiChannel&quot;</span><span class="p">,</span>
114         <span class="s">&quot;ns3::WifiPhy&quot;</span><span class="p">,</span>
115         <span class="s">&quot;ns3::WifiMac&quot;</span><span class="p">,</span>
116         <span class="s">&quot;ns3::ErrorModel&quot;</span><span class="p">,</span>
117         <span class="s">&quot;ns3::ErrorRateModel&quot;</span><span class="p">,</span>
118         <span class="s">&quot;ns3::Application&quot;</span><span class="p">,</span> 
119         <span class="s">&quot;ns3::FdNetDevice&quot;</span><span class="p">,</span>
120         <span class="c">#&quot;ns3::DceApplication&quot;, </span>
121         <span class="s">&quot;ns3::NetDevice&quot;</span><span class="p">,</span>
122         <span class="s">&quot;ns3::Channel&quot;</span><span class="p">,</span>
123         <span class="s">&quot;ns3::Queue&quot;</span><span class="p">]</span>
124
125 <span class="n">base_types</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;ns3::IpL4Protocol&quot;</span><span class="p">]</span>
126
127 <div class="viewcode-block" id="select_base_class"><a class="viewcode-back" href="../../../../_layout/nepi.resources.ns3.html#nepi.resources.ns3.resource_manager_generator.select_base_class">[docs]</a><span class="k">def</span> <span class="nf">select_base_class</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">tid</span><span class="p">):</span> 
128     <span class="n">base_class_import</span> <span class="o">=</span> <span class="bp">None</span>
129     <span class="n">base_class</span> <span class="o">=</span> <span class="bp">None</span>
130    
131     <span class="n">rtype</span> <span class="o">=</span> <span class="n">tid</span><span class="o">.</span><span class="n">GetName</span><span class="p">()</span>
132
133     <span class="n">type_id</span> <span class="o">=</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="p">()</span>
134
135     <span class="k">for</span> <span class="n">type_name</span> <span class="ow">in</span> <span class="n">adapted_types</span><span class="p">:</span>
136         <span class="n">tid_base</span> <span class="o">=</span> <span class="n">type_id</span><span class="o">.</span><span class="n">LookupByName</span><span class="p">(</span><span class="n">type_name</span><span class="p">)</span>
137         <span class="k">if</span> <span class="n">type_name</span> <span class="o">==</span> <span class="n">rtype</span> <span class="ow">or</span> <span class="n">tid</span><span class="o">.</span><span class="n">IsChildOf</span><span class="p">(</span><span class="n">tid_base</span><span class="p">):</span>
138             <span class="n">base_class</span> <span class="o">=</span> <span class="s">&quot;NS3Base&quot;</span> <span class="o">+</span> <span class="n">type_name</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;ns3::&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">)</span>
139             <span class="n">base_module</span> <span class="o">=</span> <span class="s">&quot;ns3&quot;</span> <span class="o">+</span> <span class="n">type_name</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;ns3::&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
140             <span class="n">base_class_import</span> <span class="o">=</span> <span class="s">&quot;from nepi.resources.ns3.</span><span class="si">%s</span><span class="s"> import </span><span class="si">%s</span><span class="s"> &quot;</span> <span class="o">%</span> <span class="p">(</span>
141                     <span class="n">base_module</span><span class="p">,</span> <span class="n">base_class</span><span class="p">)</span>
142             <span class="k">return</span> <span class="p">(</span><span class="n">base_class_import</span><span class="p">,</span> <span class="n">base_class</span><span class="p">)</span>
143
144     <span class="n">base_class_import</span> <span class="o">=</span> <span class="s">&quot;from nepi.resources.ns3.ns3base import NS3Base&quot;</span>
145     <span class="n">base_class</span> <span class="o">=</span> <span class="s">&quot;NS3Base&quot;</span>
146
147     <span class="k">for</span> <span class="n">type_name</span> <span class="ow">in</span> <span class="n">base_types</span><span class="p">:</span>
148         <span class="n">tid_base</span> <span class="o">=</span> <span class="n">type_id</span><span class="o">.</span><span class="n">LookupByName</span><span class="p">(</span><span class="n">type_name</span><span class="p">)</span>
149         <span class="k">if</span> <span class="n">type_name</span> <span class="o">==</span> <span class="n">rtype</span> <span class="ow">or</span> <span class="n">tid</span><span class="o">.</span><span class="n">IsChildOf</span><span class="p">(</span><span class="n">tid_base</span><span class="p">):</span>
150             <span class="k">return</span> <span class="p">(</span><span class="n">base_class_import</span><span class="p">,</span> <span class="n">base_class</span><span class="p">)</span>
151
152     <span class="k">return</span> <span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
153 </div>
154 <div class="viewcode-block" id="create_ns3_rms"><a class="viewcode-back" href="../../../../_layout/nepi.resources.ns3.html#nepi.resources.ns3.resource_manager_generator.create_ns3_rms">[docs]</a><span class="k">def</span> <span class="nf">create_ns3_rms</span><span class="p">():</span>
155     <span class="n">ns3</span> <span class="o">=</span> <span class="n">load_ns3_module</span><span class="p">()</span>
156
157     <span class="n">type_id</span> <span class="o">=</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="p">()</span>
158     
159     <span class="n">tid_count</span> <span class="o">=</span> <span class="n">type_id</span><span class="o">.</span><span class="n">GetRegisteredN</span><span class="p">()</span>
160     <span class="n">base</span> <span class="o">=</span> <span class="n">type_id</span><span class="o">.</span><span class="n">LookupByName</span><span class="p">(</span><span class="s">&quot;ns3::Object&quot;</span><span class="p">)</span>
161
162     <span class="c"># Create a .py file using the ns-3 RM template for each ns-3 TypeId</span>
163     <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="n">tid_count</span><span class="p">):</span>
164         <span class="n">tid</span> <span class="o">=</span> <span class="n">type_id</span><span class="o">.</span><span class="n">GetRegistered</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
165         
166         <span class="p">(</span><span class="n">base_class_import</span><span class="p">,</span> <span class="n">base_class</span><span class="p">)</span> <span class="o">=</span> <span class="n">select_base_class</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">tid</span><span class="p">)</span>
167         <span class="k">if</span> <span class="ow">not</span> <span class="n">base_class</span><span class="p">:</span>
168             <span class="k">continue</span>
169         
170         <span class="k">if</span> <span class="n">tid</span><span class="o">.</span><span class="n">MustHideFromDocumentation</span><span class="p">()</span> <span class="ow">or</span> \
171                 <span class="ow">not</span> <span class="n">tid</span><span class="o">.</span><span class="n">HasConstructor</span><span class="p">()</span> <span class="ow">or</span> \
172                 <span class="ow">not</span> <span class="n">tid</span><span class="o">.</span><span class="n">IsChildOf</span><span class="p">(</span><span class="n">base</span><span class="p">):</span> 
173             <span class="k">continue</span>
174        
175         <span class="n">attributes</span> <span class="o">=</span> <span class="n">template_attributes</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">tid</span><span class="p">)</span>
176         <span class="n">traces</span> <span class="o">=</span> <span class="n">template_traces</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">tid</span><span class="p">)</span>
177         <span class="n">ptid</span> <span class="o">=</span> <span class="n">tid</span>
178         <span class="k">while</span> <span class="n">ptid</span><span class="o">.</span><span class="n">HasParent</span><span class="p">():</span>
179             <span class="n">ptid</span> <span class="o">=</span> <span class="n">ptid</span><span class="o">.</span><span class="n">GetParent</span><span class="p">()</span>
180             <span class="n">attributes</span> <span class="o">+=</span> <span class="n">template_attributes</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">ptid</span><span class="p">)</span>
181             <span class="n">traces</span> <span class="o">+=</span> <span class="n">template_traces</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">ptid</span><span class="p">)</span>
182
183         <span class="n">attributes</span> <span class="o">=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">+</span> <span class="n">attributes</span> <span class="k">if</span> <span class="n">attributes</span> <span class="k">else</span> <span class="s">&quot;pass&quot;</span>
184         <span class="n">traces</span> <span class="o">=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">+</span> <span class="n">traces</span> <span class="k">if</span> <span class="n">traces</span> <span class="k">else</span> <span class="s">&quot;pass&quot;</span>
185
186         <span class="n">category</span> <span class="o">=</span> <span class="n">tid</span><span class="o">.</span><span class="n">GetGroupName</span><span class="p">()</span>
187
188         <span class="n">rtype</span> <span class="o">=</span> <span class="n">tid</span><span class="o">.</span><span class="n">GetName</span><span class="p">()</span>
189         <span class="n">classname</span> <span class="o">=</span> <span class="n">rtype</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;ns3::&quot;</span><span class="p">,</span> <span class="s">&quot;NS3&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;::&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">)</span>
190         <span class="n">uncamm_rtype</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">&#39;([a-z])([A-Z])&#39;</span><span class="p">,</span> <span class="s">r&#39;\1-\2&#39;</span><span class="p">,</span> <span class="n">rtype</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
191         <span class="n">short_rtype</span> <span class="o">=</span> <span class="n">uncamm_rtype</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;::&quot;</span><span class="p">,</span><span class="s">&quot;-&quot;</span><span class="p">)</span>
192
193         <span class="n">d</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">realpath</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span>
194         <span class="n">ftemp</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="s">&quot;templates&quot;</span><span class="p">,</span> <span class="s">&quot;resource_manager_template.txt&quot;</span><span class="p">),</span> <span class="s">&quot;r&quot;</span><span class="p">)</span>
195         <span class="n">template</span> <span class="o">=</span> <span class="n">ftemp</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
196         <span class="n">ftemp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
197
198         <span class="n">template</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span> \
199                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;CLASS_NAME&gt;&quot;</span><span class="p">,</span> <span class="n">classname</span><span class="p">)</span><span class="o">.</span> \
200                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;RTYPE&gt;&quot;</span><span class="p">,</span> <span class="n">rtype</span><span class="p">)</span><span class="o">.</span> \
201                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTRIBUTES&gt;&quot;</span><span class="p">,</span> <span class="n">attributes</span><span class="p">)</span><span class="o">.</span> \
202                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;TRACES&gt;&quot;</span><span class="p">,</span> <span class="n">traces</span><span class="p">)</span><span class="o">.</span> \
203                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;BASE_CLASS_IMPORT&gt;&quot;</span><span class="p">,</span> <span class="n">base_class_import</span><span class="p">)</span><span class="o">.</span> \
204                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;BASE_CLASS&gt;&quot;</span><span class="p">,</span> <span class="n">base_class</span><span class="p">)</span><span class="o">.</span> \
205                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;SHORT-RTYPE&gt;&quot;</span><span class="p">,</span> <span class="n">short_rtype</span><span class="p">)</span>
206
207         <span class="n">fname</span> <span class="o">=</span> <span class="n">uncamm_rtype</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39;ns3::&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span><span class="o">.</span> \
208                 <span class="n">replace</span><span class="p">(</span><span class="s">&#39;::&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span><span class="o">.</span> \
209                 <span class="n">replace</span><span class="p">(</span><span class="s">&quot;-&quot;</span><span class="p">,</span><span class="s">&quot;_&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">+</span> <span class="s">&quot;.py&quot;</span>
210
211         <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="s">&quot;classes&quot;</span><span class="p">,</span> <span class="n">fname</span><span class="p">),</span> <span class="s">&quot;w&quot;</span><span class="p">)</span>
212         <span class="k">print</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">fname</span><span class="p">)</span>
213         <span class="k">print</span> <span class="n">template</span>
214         <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">template</span><span class="p">)</span>
215         <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
216 </div>
217 <div class="viewcode-block" id="template_attributes"><a class="viewcode-back" href="../../../../_layout/nepi.resources.ns3.html#nepi.resources.ns3.resource_manager_generator.template_attributes">[docs]</a><span class="k">def</span> <span class="nf">template_attributes</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">tid</span><span class="p">):</span> 
218     <span class="n">d</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">realpath</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span>
219     <span class="n">ftemp</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="s">&quot;templates&quot;</span><span class="p">,</span> <span class="s">&quot;attribute_template.txt&quot;</span><span class="p">),</span> <span class="s">&quot;r&quot;</span><span class="p">)</span>
220     <span class="n">template</span> <span class="o">=</span> <span class="n">ftemp</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
221     <span class="n">ftemp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
222
223     <span class="n">attributes</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
224
225     <span class="n">attr_count</span> <span class="o">=</span> <span class="n">tid</span><span class="o">.</span><span class="n">GetAttributeN</span><span class="p">()</span>
226     <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="n">attr_count</span><span class="p">):</span>
227         <span class="n">attr_info</span> <span class="o">=</span> <span class="n">tid</span><span class="o">.</span><span class="n">GetAttribute</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
228         <span class="k">if</span> <span class="ow">not</span> <span class="n">attr_info</span><span class="o">.</span><span class="n">accessor</span><span class="o">.</span><span class="n">HasGetter</span><span class="p">():</span>
229             <span class="k">continue</span>
230
231         <span class="n">attr_flags</span> <span class="o">=</span> <span class="s">&quot;Flags.Reserved&quot;</span>
232         <span class="n">flags</span> <span class="o">=</span> <span class="n">attr_info</span><span class="o">.</span><span class="n">flags</span>
233         <span class="k">if</span> <span class="p">(</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="o">.</span><span class="n">ATTR_CONSTRUCT</span><span class="p">)</span> <span class="o">==</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="o">.</span><span class="n">ATTR_CONSTRUCT</span><span class="p">:</span>
234             <span class="n">attr_flags</span> <span class="o">+=</span> <span class="s">&quot; | Flags.Construct&quot;</span>
235         <span class="k">else</span><span class="p">:</span>
236             <span class="k">if</span> <span class="p">(</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="o">.</span><span class="n">ATTR_GET</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="o">.</span><span class="n">ATTR_GET</span><span class="p">:</span>
237                 <span class="n">attr_flags</span> <span class="o">+=</span> <span class="s">&quot; | Flags.NoRead&quot;</span>
238             <span class="k">elif</span> <span class="p">(</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="o">.</span><span class="n">ATTR_SET</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ns3</span><span class="o">.</span><span class="n">TypeId</span><span class="o">.</span><span class="n">ATTR_SET</span><span class="p">:</span>
239                 <span class="n">attr_flags</span> <span class="o">+=</span> <span class="s">&quot; | Flags.NoWrite&quot;</span>
240
241         <span class="n">attr_name</span> <span class="o">=</span> <span class="n">attr_info</span><span class="o">.</span><span class="n">name</span>
242         <span class="n">checker</span> <span class="o">=</span> <span class="n">attr_info</span><span class="o">.</span><span class="n">checker</span>
243         <span class="n">attr_help</span> <span class="o">=</span> <span class="n">attr_info</span><span class="o">.</span><span class="n">help</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s">&#39;</span><span class="se">\\</span><span class="s">&quot;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\\</span><span class="s">&#39;&quot;</span><span class="p">)</span>
244         <span class="n">value</span> <span class="o">=</span> <span class="n">attr_info</span><span class="o">.</span><span class="n">initialValue</span>
245         <span class="n">attr_value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">SerializeToString</span><span class="p">(</span><span class="n">checker</span><span class="p">)</span>
246         <span class="n">attr_allowed</span> <span class="o">=</span> <span class="s">&quot;None&quot;</span>
247         <span class="n">attr_range</span> <span class="o">=</span> <span class="s">&quot;None&quot;</span>
248         <span class="n">attr_type</span> <span class="o">=</span> <span class="s">&quot;Types.String&quot;</span>
249
250         <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ns3</span><span class="o">.</span><span class="n">ObjectVectorValue</span><span class="p">):</span>
251             <span class="k">continue</span>
252         <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ns3</span><span class="o">.</span><span class="n">PointerValue</span><span class="p">):</span>
253             <span class="k">continue</span>
254         <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ns3</span><span class="o">.</span><span class="n">WaypointValue</span><span class="p">):</span>
255             <span class="k">continue</span>
256         <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ns3</span><span class="o">.</span><span class="n">BooleanValue</span><span class="p">):</span>
257             <span class="n">attr_type</span> <span class="o">=</span> <span class="s">&quot;Types.Bool&quot;</span>
258             <span class="n">attr_value</span> <span class="o">=</span> <span class="s">&quot;True&quot;</span> <span class="k">if</span> <span class="n">attr_value</span> <span class="o">==</span> <span class="s">&quot;true&quot;</span> <span class="k">else</span> <span class="s">&quot;False&quot;</span>
259         <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ns3</span><span class="o">.</span><span class="n">EnumValue</span><span class="p">):</span>
260             <span class="n">attr_type</span> <span class="o">=</span> <span class="s">&quot;Types.Enumerate&quot;</span>
261             <span class="n">allowed</span> <span class="o">=</span> <span class="n">checker</span><span class="o">.</span><span class="n">GetUnderlyingTypeInformation</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&quot;|&quot;</span><span class="p">)</span>
262             <span class="n">attr_allowed</span> <span class="o">=</span> <span class="s">&quot;[</span><span class="si">%s</span><span class="s">]&quot;</span> <span class="o">%</span> <span class="s">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="s">&quot;</span><span class="se">\&quot;</span><span class="si">%s</span><span class="se">\&quot;</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">x</span><span class="p">,</span> <span class="n">allowed</span><span class="p">))</span>
263         <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ns3</span><span class="o">.</span><span class="n">DoubleValue</span><span class="p">):</span>
264             <span class="n">attr_type</span> <span class="o">=</span> <span class="s">&quot;Types.Double&quot;</span>
265             <span class="c"># TODO: range</span>
266         <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ns3</span><span class="o">.</span><span class="n">UintegerValue</span><span class="p">):</span>
267             <span class="n">attr_type</span> <span class="o">=</span> <span class="s">&quot;Types.Integer&quot;</span>
268             <span class="c"># TODO: range</span>
269
270         <span class="n">attr_id</span> <span class="o">=</span> <span class="s">&quot;attr_&quot;</span> <span class="o">+</span> <span class="n">attr_name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;-&quot;</span><span class="p">,</span> <span class="s">&quot;_&quot;</span><span class="p">)</span>
271         <span class="n">attributes</span> <span class="o">+=</span> <span class="n">template</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_ID&gt;&quot;</span><span class="p">,</span> <span class="n">attr_id</span><span class="p">)</span> \
272                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_NAME&gt;&quot;</span><span class="p">,</span> <span class="n">attr_name</span><span class="p">)</span> \
273                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_HELP&gt;&quot;</span><span class="p">,</span> <span class="n">attr_help</span><span class="p">)</span> \
274                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_TYPE&gt;&quot;</span><span class="p">,</span> <span class="n">attr_type</span><span class="p">)</span> \
275                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_DEFAULT&gt;&quot;</span><span class="p">,</span> <span class="n">attr_value</span><span class="p">)</span> \
276                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_ALLOWED&gt;&quot;</span><span class="p">,</span> <span class="n">attr_allowed</span><span class="p">)</span> \
277                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_RANGE&gt;&quot;</span><span class="p">,</span> <span class="n">attr_range</span><span class="p">)</span> \
278                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;ATTR_FLAGS&gt;&quot;</span><span class="p">,</span> <span class="n">attr_flags</span><span class="p">)</span> 
279
280     <span class="k">return</span> <span class="n">attributes</span>
281 </div>
282 <div class="viewcode-block" id="template_traces"><a class="viewcode-back" href="../../../../_layout/nepi.resources.ns3.html#nepi.resources.ns3.resource_manager_generator.template_traces">[docs]</a><span class="k">def</span> <span class="nf">template_traces</span><span class="p">(</span><span class="n">ns3</span><span class="p">,</span> <span class="n">tid</span><span class="p">):</span> 
283     <span class="n">d</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">realpath</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span>
284     <span class="n">ftemp</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="s">&quot;templates&quot;</span><span class="p">,</span> <span class="s">&quot;trace_template.txt&quot;</span><span class="p">),</span> <span class="s">&quot;r&quot;</span><span class="p">)</span>
285     <span class="n">template</span> <span class="o">=</span> <span class="n">ftemp</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
286     <span class="n">ftemp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
287
288     <span class="n">traces</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
289
290     <span class="n">trace_count</span> <span class="o">=</span> <span class="n">tid</span><span class="o">.</span><span class="n">GetTraceSourceN</span><span class="p">()</span>
291     <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="n">trace_count</span><span class="p">):</span>
292         <span class="n">trace_info</span> <span class="o">=</span> <span class="n">tid</span><span class="o">.</span><span class="n">GetTraceSource</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
293         <span class="n">trace_name</span> <span class="o">=</span> <span class="n">trace_info</span><span class="o">.</span><span class="n">name</span>
294         <span class="n">trace_help</span> <span class="o">=</span> <span class="n">trace_info</span><span class="o">.</span><span class="n">help</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s">&#39;</span><span class="se">\\</span><span class="s">&quot;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\\</span><span class="s">&#39;&quot;</span><span class="p">)</span>
295
296         <span class="n">trace_id</span> <span class="o">=</span> <span class="n">trace_name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
297         <span class="n">traces</span> <span class="o">+=</span> <span class="n">template</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;TRACE_ID&gt;&quot;</span><span class="p">,</span> <span class="n">trace_id</span><span class="p">)</span> \
298                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;TRACE_NAME&gt;&quot;</span><span class="p">,</span> <span class="n">trace_name</span><span class="p">)</span> \
299                 <span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&lt;TRACE_HELP&gt;&quot;</span><span class="p">,</span> <span class="n">trace_help</span><span class="p">)</span> 
300
301     <span class="k">return</span> <span class="n">traces</span>
302 </div>
303 <span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span>
304     <span class="n">create_ns3_rms</span><span class="p">()</span>
305 </pre></div>
306
307           </div>
308         </div>
309       </div>
310       <div class="clearer"></div>
311     </div>
312     <div class="related">
313       <h3>Navigation</h3>
314       <ul>
315         <li class="right" style="margin-right: 10px">
316           <a href="../../../../genindex.html" title="General Index"
317              >index</a></li>
318         <li class="right" >
319           <a href="../../../../py-modindex.html" title="Python Module Index"
320              >modules</a> |</li>
321         <li><a href="../../../../index.html">NEPI 3.0 documentation</a> &raquo;</li>
322           <li><a href="../../../index.html" >Module code</a> &raquo;</li> 
323       </ul>
324     </div>
325     <div class="footer">
326         &copy; Copyright 2014, Alina Quereilhac, Lucia Guevgeozian Odizzio, Julien Tribino.
327       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
328     </div>
329   </body>
330 </html>