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.ns3.resource_manager_generator — 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.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 <http://www.gnu.org/licenses/>.</span>
82 <span class="c">#</span>
83 <span class="c"># Author: Alina Quereilhac <alina.quereilhac@inria.fr></span>
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>
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>
101 <span class="kn">import</span> <span class="nn">os</span>
102 <span class="kn">import</span> <span class="nn">re</span>
104 <span class="n">adapted_types</span> <span class="o">=</span> <span class="p">[</span><span class="s">"ns3::Node"</span><span class="p">,</span>
105 <span class="s">"ns3::Icmpv4L4Protocol"</span><span class="p">,</span>
106 <span class="s">"ns3::ArpL3Protocol"</span><span class="p">,</span>
107 <span class="s">"ns3::Ipv4L3Protocol"</span><span class="p">,</span>
108 <span class="s">"ns3::PropagationLossModel"</span><span class="p">,</span>
109 <span class="s">"ns3::MobilityModel"</span><span class="p">,</span>
110 <span class="s">"ns3::PropagationDelayModel"</span><span class="p">,</span>
111 <span class="s">"ns3::WifiRemoteStationManager"</span><span class="p">,</span>
112 <span class="s">"ns3::WifiNetDevice"</span><span class="p">,</span>
113 <span class="s">"ns3::WifiChannel"</span><span class="p">,</span>
114 <span class="s">"ns3::WifiPhy"</span><span class="p">,</span>
115 <span class="s">"ns3::WifiMac"</span><span class="p">,</span>
116 <span class="s">"ns3::ErrorModel"</span><span class="p">,</span>
117 <span class="s">"ns3::ErrorRateModel"</span><span class="p">,</span>
118 <span class="s">"ns3::Application"</span><span class="p">,</span>
119 <span class="s">"ns3::FdNetDevice"</span><span class="p">,</span>
120 <span class="c">#"ns3::DceApplication", </span>
121 <span class="s">"ns3::NetDevice"</span><span class="p">,</span>
122 <span class="s">"ns3::Channel"</span><span class="p">,</span>
123 <span class="s">"ns3::Queue"</span><span class="p">]</span>
125 <span class="n">base_types</span> <span class="o">=</span> <span class="p">[</span><span class="s">"ns3::IpL4Protocol"</span><span class="p">]</span>
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>
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>
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>
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">"NS3Base"</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">"ns3::"</span><span class="p">,</span> <span class="s">""</span><span class="p">)</span>
139 <span class="n">base_module</span> <span class="o">=</span> <span class="s">"ns3"</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">"ns3::"</span><span class="p">,</span> <span class="s">""</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">"from nepi.resources.ns3.</span><span class="si">%s</span><span class="s"> import </span><span class="si">%s</span><span class="s"> "</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>
144 <span class="n">base_class_import</span> <span class="o">=</span> <span class="s">"from nepi.resources.ns3.ns3base import NS3Base"</span>
145 <span class="n">base_class</span> <span class="o">=</span> <span class="s">"NS3Base"</span>
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>
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>
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>
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>
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">"ns3::Object"</span><span class="p">)</span>
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>
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>
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>
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>
183 <span class="n">attributes</span> <span class="o">=</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</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">"pass"</span>
184 <span class="n">traces</span> <span class="o">=</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</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">"pass"</span>
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>
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">"ns3::"</span><span class="p">,</span> <span class="s">"NS3"</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">"::"</span><span class="p">,</span><span class="s">""</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">'([a-z])([A-Z])'</span><span class="p">,</span> <span class="s">r'\1-\2'</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">"::"</span><span class="p">,</span><span class="s">"-"</span><span class="p">)</span>
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">"templates"</span><span class="p">,</span> <span class="s">"resource_manager_template.txt"</span><span class="p">),</span> <span class="s">"r"</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>
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">"<CLASS_NAME>"</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">"<RTYPE>"</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">"<ATTRIBUTES>"</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">"<TRACES>"</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">"<BASE_CLASS_IMPORT>"</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">"<BASE_CLASS>"</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">"<SHORT-RTYPE>"</span><span class="p">,</span> <span class="n">short_rtype</span><span class="p">)</span>
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">'ns3::'</span><span class="p">,</span> <span class="s">''</span><span class="p">)</span><span class="o">.</span> \
208 <span class="n">replace</span><span class="p">(</span><span class="s">'::'</span><span class="p">,</span> <span class="s">''</span><span class="p">)</span><span class="o">.</span> \
209 <span class="n">replace</span><span class="p">(</span><span class="s">"-"</span><span class="p">,</span><span class="s">"_"</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">".py"</span>
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">"classes"</span><span class="p">,</span> <span class="n">fname</span><span class="p">),</span> <span class="s">"w"</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>
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">"templates"</span><span class="p">,</span> <span class="s">"attribute_template.txt"</span><span class="p">),</span> <span class="s">"r"</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>
223 <span class="n">attributes</span> <span class="o">=</span> <span class="s">""</span>
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>
231 <span class="n">attr_flags</span> <span class="o">=</span> <span class="s">"Flags.Reserved"</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">&</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">" | Flags.Construct"</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">&</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">" | Flags.NoRead"</span>
238 <span class="k">elif</span> <span class="p">(</span><span class="n">flags</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> <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">" | Flags.NoWrite"</span>
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">'"'</span><span class="p">,</span> <span class="s">'</span><span class="se">\\</span><span class="s">"'</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">"'"</span><span class="p">,</span> <span class="s">"</span><span class="se">\\</span><span class="s">'"</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">"None"</span>
247 <span class="n">attr_range</span> <span class="o">=</span> <span class="s">"None"</span>
248 <span class="n">attr_type</span> <span class="o">=</span> <span class="s">"Types.String"</span>
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">"Types.Bool"</span>
258 <span class="n">attr_value</span> <span class="o">=</span> <span class="s">"True"</span> <span class="k">if</span> <span class="n">attr_value</span> <span class="o">==</span> <span class="s">"true"</span> <span class="k">else</span> <span class="s">"False"</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">"Types.Enumerate"</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">"|"</span><span class="p">)</span>
262 <span class="n">attr_allowed</span> <span class="o">=</span> <span class="s">"[</span><span class="si">%s</span><span class="s">]"</span> <span class="o">%</span> <span class="s">","</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">"</span><span class="se">\"</span><span class="si">%s</span><span class="se">\"</span><span class="s">"</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">"Types.Double"</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">"Types.Integer"</span>
268 <span class="c"># TODO: range</span>
270 <span class="n">attr_id</span> <span class="o">=</span> <span class="s">"attr_"</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">"-"</span><span class="p">,</span> <span class="s">"_"</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">"<ATTR_ID>"</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">"<ATTR_NAME>"</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">"<ATTR_HELP>"</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">"<ATTR_TYPE>"</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">"<ATTR_DEFAULT>"</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">"<ATTR_ALLOWED>"</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">"<ATTR_RANGE>"</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">"<ATTR_FLAGS>"</span><span class="p">,</span> <span class="n">attr_flags</span><span class="p">)</span>
280 <span class="k">return</span> <span class="n">attributes</span>
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">"templates"</span><span class="p">,</span> <span class="s">"trace_template.txt"</span><span class="p">),</span> <span class="s">"r"</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>
288 <span class="n">traces</span> <span class="o">=</span> <span class="s">""</span>
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">'"'</span><span class="p">,</span> <span class="s">'</span><span class="se">\\</span><span class="s">"'</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">"'"</span><span class="p">,</span> <span class="s">"</span><span class="se">\\</span><span class="s">'"</span><span class="p">)</span>
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">"<TRACE_ID>"</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">"<TRACE_NAME>"</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">"<TRACE_HELP>"</span><span class="p">,</span> <span class="n">trace_help</span><span class="p">)</span>
301 <span class="k">return</span> <span class="n">traces</span>
303 <span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
304 <span class="n">create_ns3_rms</span><span class="p">()</span>
310 <div class="clearer"></div>
312 <div class="related">
315 <li class="right" style="margin-right: 10px">
316 <a href="../../../../genindex.html" title="General Index"
319 <a href="../../../../py-modindex.html" title="Python Module Index"
321 <li><a href="../../../../index.html">NEPI 3.0 documentation</a> »</li>
322 <li><a href="../../../index.html" >Module code</a> »</li>
326 © Copyright 2014, Alina Quereilhac, Lucia Guevgeozian Odizzio, Julien Tribino.
327 Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.