Package the daemon executable as an entrypoint
[mudpy.git] / mudpy / daemon.py
diff --git a/mudpy/daemon.py b/mudpy/daemon.py
new file mode 100755 (executable)
index 0000000..2413204
--- /dev/null
@@ -0,0 +1,36 @@
+# Copyright (c) 2004-2016 Jeremy Stanley <fungi@yuggoth.org>. Permission
+# to use, copy, modify, and distribute this software is granted under
+# terms provided in the LICENSE file distributed with this software.
+
+# core objects for the mudpy engine
+import imp
+import sys
+
+import mudpy
+
+
+def main():
+
+    # start it up
+    mudpy.misc.setup()
+
+    # loop indefinitely while the world is not flagged for termination or
+    # there are still connected users
+    while (not mudpy.misc.universe.terminate_flag or
+           mudpy.misc.universe.userlist):
+
+        # the world was flagged for a reload of all code/data
+        if mudpy.misc.universe.reload_flag:
+            imp.reload(mudpy)
+            mudpy.misc.reload_data()
+            mudpy.misc.universe.reload_flag = False
+
+        # do what needs to be done on each pulse
+        mudpy.misc.on_pulse()
+
+    # shut it all down
+    mudpy.misc.finish()
+
+
+if __name__ == '__main__':
+    sys.exit(main())