def __init__(self): HandlerAPI.__init__(self) self.logger = RootLogger() self.registry = jsroute.RouteRegistry( HandlerAPI() ) self._settings = { 'host' :"0.0.0.0", 'port' : 8080, 'thread_pool' : 20, 'js_pool' : 20, 'favicon' : os.environ['HOME']+"/.dreadnought-js/favicon.ico" } self._config = { '/': { 'request.dispatch': self.registry.dispatch, 'tools.sessions.on': True } }
class RootAPI(HandlerAPI): "Used by the root script, to setup handlers and system settings" def __init__(self): HandlerAPI.__init__(self) self.logger = RootLogger() self.registry = jsroute.RouteRegistry( HandlerAPI() ) self._settings = { 'host' :"0.0.0.0", 'port' : 8080, 'thread_pool' : 20, 'js_pool' : 20, 'favicon' : os.environ['HOME']+"/.dreadnought-js/favicon.ico" } self._config = { '/': { 'request.dispatch': self.registry.dispatch, 'tools.sessions.on': True } } def register(self, path, jscb, options = {} ): self.logger.debug("register('%s',%s,%s)" % (path, jscb, options )) try: self.registry.register( path, jscb, options ) except: self.logger.error( traceback.format_exc() ) raise def getLogger(self): return self.logger def mainloop(self): "Interface to cherrypy's mainloop" # launch a set of child processes to handle each request # within a child process. self.registry.start_processes( self._settings.get('js_pool',20) ) self._config['global'] = { 'server.socket_host' : self._settings.get('host',"0.0.0.0"), 'server.socket_port' : self._settings.get('port',8080), 'server.thread_pool' : self._settings.get('thread_pool',20) } sdir = self._settings.get('static_dir',None) if sdir: self.logger.debug("adding static content directory %s" % sdir) self._config["/"]['tools.staticdir.on'] = True self._config["/"]['tools.staticdir.dir'] = sdir self._config['/favicon.ico']={ 'tools.staticfile.on': len(self._settings.get('favicon','')) > 0, 'tools.staticfile.filename': self._settings.get('favicon','') } cherrypy.tree.mount(root=None, config=self._config ) # block forever servicing requests. cherrypy.quickstart( script_name="/", config=self._config ) def settings(self, s): for k,v in dict(s).items(): self._settings[k] = v