Ejemplo n.º 1
0
def safe_writeall(fd, b):
    total_written = 0
    blen = len(b)
    while total_written != blen:
        towrite = blen - total_written
        written = _eintr_retry(write, fd, b[total_written:])
        if written == towrite:
            break

    return total_written
Ejemplo n.º 2
0
    def serve_forever( self, poll_interval=.5 ):
        self._BaseServer__is_shut_down.clear()
        try:
            while not self._BaseServer__shutdown_request:
                r,w,e		= _eintr_retry( select.select, [self], [], [], poll_interval )
                if self in r:
                    self._handle_request_noblock()

                self.service_actions()  # <<< Python3 socketserver added this
        finally:
            self._BaseServer__shutdown_request = False
            self._BaseServer__is_shut_down.set()
Ejemplo n.º 3
0
    def serve_forever( self, poll_interval=.5 ):
        self._BaseServer__is_shut_down.clear()
        try:
            while not self._BaseServer__shutdown_request:
                r,w,e		= _eintr_retry( select.select, [self], [], [], poll_interval )
                if self in r:
                    self._handle_request_noblock()

                self.service_actions()  # <<< Python3 socketserver added this
        finally:
            self._BaseServer__shutdown_request = False
            self._BaseServer__is_shut_down.set()
Ejemplo n.º 4
0
def safe_writeall_async(fd, b, on_not_ready):
    total_written = 0
    blen = len(b)
    while total_written != blen:
        towrite = blen - total_written
        try:
            written = _eintr_retry(write, fd, b[total_written:])
        except OSError as e:
            if e.errno != errno.EAGAIN:
                raise
            giveup = on_not_ready(total_written)
            if giveup:
                break
            written = 0

        if written == towrite:
            break

    return total_written
Ejemplo n.º 5
0
    def serve_forever(self, poll_interval=0.5):
        """Provide an override that can be shutdown from a request handler.
        The threading code in the BaseSocketServer class prevented this from working
        even for a non-threaded blocking server.
        """
        try:
            while not self._shutdown_request:
                r, w, e = _eintr_retry(select.select, [self], [], [], poll_interval)
                if self in r:
                    # reset watchdog
                    self.watchdog = 0.0
                    self._handle_request_noblock()
                
                else:
                    self.watchdog += poll_interval
                if self.watchdog > SAL_UDPSERVER_WATCHDOG_TIMOUT:
                    self._shutdown_request = True

        finally:
            self._shutdown_request = False
Ejemplo n.º 6
0
def safe_recv(self, sz, flags=0):
    fd = self.fileno()
    return _eintr_retry(os.read, fd, sz)