Transport for connected sockets.
| 601 | |
| 602 | |
| 603 | class _ProactorSocketTransport(_ProactorReadPipeTransport, |
| 604 | _ProactorBaseWritePipeTransport, |
| 605 | transports.Transport): |
| 606 | """Transport for connected sockets.""" |
| 607 | |
| 608 | _sendfile_compatible = constants._SendfileMode.TRY_NATIVE |
| 609 | |
| 610 | def __init__(self, loop, sock, protocol, waiter=None, |
| 611 | extra=None, server=None): |
| 612 | super().__init__(loop, sock, protocol, waiter, extra, server) |
| 613 | base_events._set_nodelay(sock) |
| 614 | |
| 615 | def _set_extra(self, sock): |
| 616 | _set_socket_extra(self, sock) |
| 617 | |
| 618 | def can_write_eof(self): |
| 619 | return True |
| 620 | |
| 621 | def write_eof(self): |
| 622 | if self._closing or self._eof_written: |
| 623 | return |
| 624 | self._eof_written = True |
| 625 | if self._write_fut is None: |
| 626 | self._sock.shutdown(socket.SHUT_WR) |
| 627 | |
| 628 | |
| 629 | class BaseProactorEventLoop(base_events.BaseEventLoop): |
no outgoing calls
searching dependent graphs…