A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
base.py
Go to the documentation of this file.
1
import
os.path
2
import
sys
3
4
from
gi.repository
import
GObject
5
6
PIXELS_PER_METER = 3.0
# pixels-per-meter, at 100% zoom level
7
8
9
## PyVizObject class
10
class
PyVizObject
(GObject.GObject):
11
## global type name
12
__gtype_name__ =
"PyVizObject"
13
14
## Returns tooltip text string.
15
#
16
## @param tooltip: tooltip object.
17
## @return: Tooltip text.
18
def
tooltip_query
(self, tooltip):
19
tooltip.set_text(
"TODO: tooltip for %r"
% self)
20
21
22
## Link class
23
class
Link
(
PyVizObject
):
24
pass
25
26
27
## InformationWindow class
28
class
InformationWindow(
object
):
29
## update function
30
#
31
## @return: NotImplementedError exception
32
def
update
(self):
33
raise
NotImplementedError
34
35
36
## NetDeviceTraits class
37
class
NetDeviceTraits
(
object
):
38
## class variables
39
## @var is_wireless
40
# is wireless
41
## @var is_virtual
42
# is virtual
43
def
__init__
(self, is_wireless=None, is_virtual=False):
44
"""!
45
Initialize function.
46
@param self The current class
47
@param is_wireless is wireless flag
48
@param is_virtual is virtual flag
49
"""
50
assert
is_virtual
or
is_wireless
is
not
None
51
self.
is_wireless
= is_wireless
52
self.
is_virtual
= is_virtual
53
54
55
netdevice_traits = {
56
ns.PointToPointNetDevice:
NetDeviceTraits
(is_wireless=
False
),
57
ns.CsmaNetDevice:
NetDeviceTraits
(is_wireless=
False
),
58
ns.WifiNetDevice:
NetDeviceTraits
(is_wireless=
True
),
59
ns.BridgeNetDevice:
NetDeviceTraits
(is_virtual=
True
),
60
ns.LoopbackNetDevice:
NetDeviceTraits
(is_virtual=
True
, is_wireless=
False
),
61
ns.MeshPointDevice:
NetDeviceTraits
(is_virtual=
True
),
62
ns.LteUeNetDevice:
NetDeviceTraits
(is_wireless=
True
),
63
ns.LteEnbNetDevice:
NetDeviceTraits
(is_wireless=
True
),
64
}
65
66
67
def
lookup_netdevice_traits
(class_type):
68
try
:
69
return
netdevice_traits[class_type]
70
except
KeyError:
71
sys.stderr.write(
72
"WARNING: no NetDeviceTraits registered for device type %r; "
73
"I will assume this is a non-virtual wireless device, "
74
"but you should edit %r, variable 'netdevice_traits',"
75
" to make sure.\n"
% (class_type.__name__, __file__)
76
)
77
t =
NetDeviceTraits
(is_virtual=
False
, is_wireless=
True
)
78
netdevice_traits[class_type] = t
79
return
t
80
81
82
def
transform_distance_simulation_to_canvas
(d):
83
return
d * PIXELS_PER_METER
84
85
86
def
transform_point_simulation_to_canvas
(x, y):
87
return
x * PIXELS_PER_METER, y * PIXELS_PER_METER
88
89
90
def
transform_distance_canvas_to_simulation
(d):
91
return
d / PIXELS_PER_METER
92
93
94
def
transform_point_canvas_to_simulation
(x, y):
95
return
x / PIXELS_PER_METER, y / PIXELS_PER_METER
96
97
98
plugins = []
99
plugin_modules = {}
100
101
102
def
register_plugin
(plugin_init_func, plugin_name=None, plugin_module=None):
103
"""
104
Register a plugin.
105
106
@param plugin: a callable object that will be invoked whenever a
107
Visualizer object is created, like this: plugin(visualizer)
108
"""
109
assert
callable(plugin_init_func)
110
plugins.append(plugin_init_func)
111
if
plugin_module
is
not
None
:
112
plugin_modules[plugin_name] = plugin_module
113
114
115
plugins_loaded =
False
116
117
118
def
load_plugins
():
119
global
plugins_loaded
120
if
plugins_loaded:
121
return
122
plugins_loaded =
True
123
plugins_dir = os.path.join(os.path.dirname(__file__),
"plugins"
)
124
old_path = list(sys.path)
125
sys.path.insert(0, plugins_dir)
126
for
filename
in
os.listdir(plugins_dir):
127
name, ext = os.path.splitext(filename)
128
if
ext !=
".py"
:
129
continue
130
try
:
131
plugin_module = __import__(name)
132
except
ImportError
as
ex:
133
print(
"Could not load plugin %r: %s"
% (filename, str(ex)), file=sys.stderr)
134
continue
135
try
:
136
plugin_func = plugin_module.register
137
except
AttributeError:
138
print(
"Plugin %r has no 'register' function"
% name, file=sys.stderr)
139
else
:
140
# print("Plugin %r registered" % name, file=sys.stderr)
141
register_plugin
(plugin_func, name, plugin_module)
142
sys.path = old_path
object
visualizer.base.InformationWindow.update
update(self)
update function
Definition
base.py:32
visualizer.base.Link
Link class.
Definition
base.py:23
visualizer.base.NetDeviceTraits
NetDeviceTraits class.
Definition
base.py:37
visualizer.base.NetDeviceTraits.__init__
__init__(self, is_wireless=None, is_virtual=False)
Initialize function.
Definition
base.py:43
visualizer.base.NetDeviceTraits.is_wireless
is_wireless
class variablesis wireless
Definition
base.py:51
visualizer.base.NetDeviceTraits.is_virtual
is_virtual
is virtual
Definition
base.py:52
visualizer.base.PyVizObject
PyVizObject class.
Definition
base.py:10
visualizer.base.PyVizObject.tooltip_query
tooltip_query(self, tooltip)
Returns tooltip text string.
Definition
base.py:18
visualizer.base.transform_distance_canvas_to_simulation
transform_distance_canvas_to_simulation(d)
Definition
base.py:90
visualizer.base.transform_point_canvas_to_simulation
transform_point_canvas_to_simulation(x, y)
Definition
base.py:94
visualizer.base.transform_distance_simulation_to_canvas
transform_distance_simulation_to_canvas(d)
Definition
base.py:82
visualizer.base.lookup_netdevice_traits
lookup_netdevice_traits(class_type)
Definition
base.py:67
visualizer.base.load_plugins
load_plugins()
Definition
base.py:118
visualizer.base.transform_point_simulation_to_canvas
transform_point_simulation_to_canvas(x, y)
Definition
base.py:86
visualizer.base.register_plugin
register_plugin(plugin_init_func, plugin_name=None, plugin_module=None)
Definition
base.py:102
src
visualizer
visualizer
base.py
Generated on Thu Sep 18 2025 18:22:58 for ns-3 by
1.13.2