#!/usr/bin/python """Skeletal executable for the mudpy engine.""" # Copyright (c) 2006 mudpy, Jeremy Stanley , all rights reserved. # Licensed per terms in the LICENSE file distributed with this software. # core objects for the mudpy engine import mudpy # a consistent list so we can reimport these on reload importlist = [ "create_pidfile", "daemonize", "log", "on_pulse", "reload_data", "remove_pidfile", "universe" ] for item in importlist: exec("from mudpy import " + item) # log an initial message from sys import argv log("Started mudpy with command line: " + " ".join(argv)) # fork and disassociate daemonize() # make the pidfile create_pidfile(universe) # loop indefinitely while the world is not flagged for termination or # there are connected users while not universe.terminate_world or universe.userlist: # the world was flagged for a reload of all code/data if universe.reload_modules: # reload the mudpy module reload(mudpy) for item in importlist: exec("from mudpy import " + item) # move data into new persistent objects reload_data() # reset the reload flag universe.reload_modules = False # do what needs to be done on each pulse on_pulse() # the loop has terminated, so save persistent data universe.save() # log a final message log("Shutting down now.") # get rid of the pidfile remove_pidfile(universe)