def __init__(self, server, server_address, address_family=socket.AF_INET6):
     self.server = server
     self.server_address = server_address
     self.address_family = address_family
     tryErr(self.setup_socket,
            server_address,
            Logger=self.logger,
            ErrorMsg=server_address)
Exemplo n.º 2
0
    def serve_forever(self):
        self.running = True
        self.final_init()
        while self.keepgoing:
            self.doing = "pre-schedule"
            self.pre_schedule()
            self.doing = "schedule"
            if len(self._sch):
                timeNow = time()
                while True:
                    with self._schLock:
                        if not len(self._sch):
                            timeout = -1
                            break
                        timeNext = self._sch.nextTime()
                        if timeNow < timeNext:
                            timeout = timeNext - timeNow
                            break
                        f = self._sch.shift()
                    k = id(f)
                    EH = None
                    if k in self._schEH:
                        EH = self._schEH[k]
                        del self._schEH[k]
                    try:
                        f()
                    except socket.error:
                        if EH:
                            tryErr(EH.handle_error)
                    except:
                        self.logger.error(traceback.format_exc())
                        if EH:
                            tryErr(EH.handle_close)
            else:
                timeout = -1

            self.doing = "poll"
            try:
                events = self._epoll.poll(timeout=timeout)
            except (IOError, select.error):
                continue
            except:
                self.logger.error(traceback.format_exc())
                continue
            self.doing = "events"
            for (fd, e) in events:
                o = self._fd[fd]
                self.lastHandler = o
                try:
                    if e & EPOLL_READ:
                        o.handle_read()
                    if e & EPOLL_WRITE:
                        o.handle_write()
                except socket.error:
                    tryErr(o.handle_error)
                except:
                    self.logger.error(traceback.format_exc())
                    tryErr(o.handle_error)
        self.doing = None
        self.running = False
Exemplo n.º 3
0
    def serve_forever(self):
        self.running = True
        self.final_init()
        while self.keepgoing:
            self.doing = 'pre-schedule'
            self.pre_schedule()
            self.doing = 'schedule'
            if len(self._sch):
                timeNow = time()
                while True:
                    with self._schLock:
                        if not len(self._sch):
                            timeout = -1
                            break
                        timeNext = self._sch.nextTime()
                        if timeNow < timeNext:
                            timeout = timeNext - timeNow
                            break
                        f = self._sch.shift()
                    k = id(f)
                    EH = None
                    if k in self._schEH:
                        EH = self._schEH[k]
                        del self._schEH[k]
                    try:
                        f()
                    except socket.error:
                        if EH: tryErr(EH.handle_error)
                    except:
                        self.logger.error(traceback.format_exc())
                        if EH: tryErr(EH.handle_close)
            else:
                timeout = -1

            self.doing = 'poll'
            try:
                events = self._epoll.poll(timeout=timeout)
            except (IOError, select.error):
                continue
            except:
                self.logger.error(traceback.format_exc())
            self.doing = 'events'
            for (fd, e) in events:
                o = self._fd[fd]
                self.lastHandler = o
                try:
                    if e & EPOLL_READ:
                        o.handle_read()
                    if e & EPOLL_WRITE:
                        o.handle_write()
                except socket.error:
                    tryErr(o.handle_error)
                except:
                    self.logger.error(traceback.format_exc())
                    tryErr(o.handle_error)
        self.doing = None
        self.running = False
 def boot_all(self):
     conns = tuple(self.connections.values())
     for c in conns:
         tryErr(lambda: c.boot())
 def changeTask(self, f, t=None):
     tryErr(self.server.rmSchedule, self._Task, IgnoredExceptions=KeyError)
     if f:
         self._Task = self.server.schedule(f, t, errHandler=self)
     else:
         self._Task = None
Exemplo n.º 6
0
 def boot_all(self):
     conns = tuple(self.connections.values())
     for c in conns:
         tryErr(lambda: c.boot())
Exemplo n.º 7
0
 def __init__(self, server, server_address, address_family=socket.AF_INET6):
     self.server = server
     self.server_address = server_address
     self.address_family = address_family
     tryErr(self.setup_socket, server_address, Logger=self.logger, ErrorMsg=server_address)
Exemplo n.º 8
0
 def changeTask(self, f, t=None):
     tryErr(self.server.rmSchedule, self._Task, IgnoredExceptions=KeyError)
     if f:
         self._Task = self.server.schedule(f, t, errHandler=self)
     else:
         self._Task = None
Exemplo n.º 9
0
 def boot_all(self):
     for c in self.connections.values():
         tryErr(lambda: c.boot())
Exemplo n.º 10
0
	def boot_all(self):
		for c in self.connections.values():
			tryErr(lambda: c.boot())