Modular bindings: Override the core.so module to add an atexit handler that shuts down ns3 before Python
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Sun, 27 Mar 2011 23:37:58 +0100
changeset 6958 2dde3ecd3a07
parent 6957 5f49d23b4a74
child 6959 8e5aa0f947af
Modular bindings: Override the core.so module to add an atexit handler that shuts down ns3 before Python
src/core/bindings/core.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/bindings/core.py	Sun Mar 27 23:37:58 2011 +0100
@@ -0,0 +1,17 @@
+
+# "from _core import *" doesn't work here because symbols starting
+# with underscore would not be imported.  But they are needed because
+# other modules depend on them...
+import _core
+g = globals()
+for k,v in _core.__dict__.iteritems():
+    g[k] = v
+del g, k, v, _core
+
+
+# Without this, Python programs often crash because Node's are kept
+# alive after the Python interpreter is finalized, which leads to
+# crashes because some destructors call Python API.
+import atexit
+atexit.register(Simulator.Destroy)
+del atexit