[PyWebMail-Checkins] webmail/webmail/server XSocketServer.py, 1.3, 1.4
Status: Beta
Brought to you by:
dubnerm
From: Michael D. <du...@us...> - 2008-03-02 17:04:35
|
Update of /cvsroot/pywebmail/webmail/webmail/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21602 Modified Files: XSocketServer.py Log Message: support webmail.settings+cache support_shutdown decision Index: XSocketServer.py =================================================================== RCS file: /cvsroot/pywebmail/webmail/webmail/server/XSocketServer.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** XSocketServer.py 2 Dec 2004 09:59:37 -0000 1.3 --- XSocketServer.py 2 Mar 2008 17:04:33 -0000 1.4 *************** *** 8,11 **** --- 8,12 ---- except: select=None import webmail.utils.xgetopt + import webmail.settings log = logging.getLogger('webmail.server.XSocketServer') *************** *** 47,50 **** --- 48,85 ---- raise + def get_request_settimeout(self): + self.socket.setblocking(0) + self.socket.settimeout(self.__timeout) + try: + res = self.__master_class.get_request(self) + try: + request,client_address = res + request.setblocking(1) + finally: + return res + finally: + self.socket.setblocking(1) + + def get_request_select(self): + l,t,t = select.select([self.socket], [], [], self.__timeout) + if not l: raise socket.error, 'timeout' + #poplog.debug('Incomming connection...') + return self.__master_class.get_request(self) + + def get_request_setblocking(self): + self.socket.setblocking(0) + try: + try: + return self.__master_class.get_request(self) + except socket.error: + time.sleep(self.__timeout) + if self.__shutdown: raise + return self.__master_class.get_request(self) + finally: + self.socket.setblocking(1) + + def get_request_master(self): + return self.__master_class.get_request(self) + def get_request(self): """Get the request and client address from the socket. *************** *** 53,93 **** """ if not self.__support_shutdown: ! return self.__master_class.get_request(self) elif hasattr(self.socket, 'settimeout'): ! reqlog.debug('settimeout') ! self.socket.setblocking(0) ! self.socket.settimeout(self.__timeout) ! try: ! res = self.__master_class.get_request(self) ! try: ! request,client_address = res ! request.setblocking(1) ! finally: ! return res ! finally: ! self.socket.setblocking(1) elif select: ! reqlog.debug('select') ! l,t,t = select.select([self.socket], [], [], self.__timeout) ! if not l: raise socket.error, 'timeout' ! #poplog.debug('Incomming connection...') ! return self.__master_class.get_request(self) elif hasattr(self.socket, 'setblocking') and hasattr(time, 'sleep'): ! reqlog.debug('setblocking+sleep') ! self.socket.setblocking(0) ! try: ! try: ! return self.__master_class.get_request(self) ! except socket.error: ! time.sleep(self.__timeout) ! if self.__shutdown: raise ! return self.__master_class.get_request(self) ! finally: ! self.socket.setblocking(1) else: if self.__support_shutdown: log.error("Warning: Can't be stoppable.") self.__support_shutdown = 0 ! return self.__master_class.get_request(self) class XTCPServer(StoppableServerMixin, SocketServer.TCPServer): --- 88,107 ---- """ if not self.__support_shutdown: ! self.get_request = self.get_request_master elif hasattr(self.socket, 'settimeout'): ! log.debug('setting get_request to use settimeout') ! self.get_request = self.get_request_settimeout elif select: ! log.debug('setting get_request to use select') ! self.get_request = self.get_request_select elif hasattr(self.socket, 'setblocking') and hasattr(time, 'sleep'): ! log.debug('setting get_request to use setblocking+sleep') ! self.get_request = self.get_request_setblocking else: if self.__support_shutdown: log.error("Warning: Can't be stoppable.") self.__support_shutdown = 0 ! self.get_request = self.get_request_master ! return self.get_request() class XTCPServer(StoppableServerMixin, SocketServer.TCPServer): *************** *** 210,213 **** --- 224,246 ---- return self.server + class MailboxesServerSetup(webmail.settings.MailboxesListSetup, ServerSetup): + + def __init__(self, argv, progname=None): + webmail.settings.MailboxesListSetupMixin.__init__(self) + webmail.server.XSocketServer.ServerSetup.__init__(self, argv, progname) + + def get_optdefs(self): + opts = ServerSetup.get_optdefs(self) + return opts+'f:' + + def parse_optlist(self, optlist): + for opt,optarg in optlist: + if opt == '-f': self.config_file = optarg + ServerSetup.parse_optlist(self, optlist) + + def get_usage_lines(self): + lines = ServerSetup.get_usage_lines(self) + lines.append(' -f cfg File to read configuration from') + if __name__=='__main__': sys.stderr.write("It's a library, not a standalone script!\n") |