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