def start(self): self.info(' STARTING SERVER') config = self.__config handle_request = self.__application.handle_request hostname = config.get_string('hostname', False, 'localhost') port = config.get_int('port', False, 7001) self.info(' HOSTNAME %s' % hostname) self.info(' PORT %d' % port) use_proxy = config.get_boolean('proxy', False, True) proxy_port = config.get_int('proxy.port', False, 7000) proxy_hostname = config.get_string('proxy.hostname', False, 'localhost') if self.__internal_server is None: self.__internal_server = make_server( hostname, port, handle_request, handler_class=LoggingWSGIRequestHandler) self.__watch_request_loop_id = gobject.io_add_watch(self.__internal_server.socket, gobject.IO_IN, self.__idle_request_loop) self.__running = True self.info(' SERVER STARTED') if use_proxy == True: self.info(' STARTING PROXY') self.info(' PROXY_HOSTNAME %s' % proxy_hostname) self.info(' PROXY_PORT %d' % proxy_port) self.__proxy_server = BufferProxyServer(proxy_hostname, proxy_port, hostname, port) self.__proxy_server.start() self.info(' PROXY STARTED')
class CGIServer(Loggable): __application = None __config = None __running = False __internal_server = None __proxy_server = None def __init__(self, application, config): if config is None: raise Exception('Required component \'config\' not found in components') self.__config = config self.__application = application def start(self): self.info(' STARTING SERVER') config = self.__config handle_request = self.__application.handle_request hostname = config.get_string('hostname', False, 'localhost') port = config.get_int('port', False, 7001) self.info(' HOSTNAME %s' % hostname) self.info(' PORT %d' % port) use_proxy = config.get_boolean('proxy', False, True) proxy_port = config.get_int('proxy.port', False, 7000) proxy_hostname = config.get_string('proxy.hostname', False, 'localhost') if self.__internal_server is None: self.__internal_server = make_server( hostname, port, handle_request, handler_class=LoggingWSGIRequestHandler) self.__watch_request_loop_id = gobject.io_add_watch(self.__internal_server.socket, gobject.IO_IN, self.__idle_request_loop) self.__running = True self.info(' SERVER STARTED') if use_proxy == True: self.info(' STARTING PROXY') self.info(' PROXY_HOSTNAME %s' % proxy_hostname) self.info(' PROXY_PORT %d' % proxy_port) self.__proxy_server = BufferProxyServer(proxy_hostname, proxy_port, hostname, port) self.__proxy_server.start() self.info(' PROXY STARTED') def stop(self): self.info(' STOPPING SERVER') gobject.source_remove(self.__watch_request_loop_id) if self.__internal_server is None: return if not self.__proxy_server is None: self.info(' STOPPING PROXY SERVER') self.__proxy_server.stop() self.__internal_server = None self.__proxy_server = None self.__running = False self.info(' SERVER STOPPED') def __idle_request_loop(self, source, cb_condition): if not self.__running: return False self.__internal_server.handle_request() return True