A Discrete-Event Network Simulator
API
base.py
Go to the documentation of this file.
1 from gi.repository import GObject
2 import os.path
3 import sys
4 
5 PIXELS_PER_METER = 3.0 # pixels-per-meter, at 100% zoom level
6 
7 
8 class 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 
25 class 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_wirelessis_wireless = is_wireless
48  self.is_virtualis_virtual = is_virtual
49 
50 netdevice_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 
63 def lookup_netdevice_traits(class_type):
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 
90 plugins = []
91 plugin_modules = {}
92 
93 def 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 
105 plugins_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