Exemplo n.º 1
0
    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 
            }
        }
Exemplo n.º 2
0
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