(self)
| 1099 | return itertools.islice(self._buffer, SC_IOV_MAX) |
| 1100 | |
| 1101 | def _write_sendmsg(self): |
| 1102 | assert self._buffer, 'Data should not be empty' |
| 1103 | if self._conn_lost: |
| 1104 | return |
| 1105 | try: |
| 1106 | nbytes = self._sock.sendmsg(self._get_sendmsg_buffer()) |
| 1107 | self._adjust_leftover_buffer(nbytes) |
| 1108 | except (BlockingIOError, InterruptedError): |
| 1109 | pass |
| 1110 | except (SystemExit, KeyboardInterrupt): |
| 1111 | raise |
| 1112 | except BaseException as exc: |
| 1113 | self._loop._remove_writer(self._sock_fd) |
| 1114 | self._buffer.clear() |
| 1115 | self._buffer_size = 0 |
| 1116 | self._fatal_error(exc, 'Fatal write error on socket transport') |
| 1117 | if self._empty_waiter is not None: |
| 1118 | self._empty_waiter.set_exception(exc) |
| 1119 | else: |
| 1120 | self._maybe_resume_protocol() # May append to buffer. |
| 1121 | if not self._buffer: |
| 1122 | self._loop._remove_writer(self._sock_fd) |
| 1123 | if self._empty_waiter is not None: |
| 1124 | self._empty_waiter.set_result(None) |
| 1125 | if self._closing: |
| 1126 | self._call_connection_lost(None) |
| 1127 | elif self._eof: |
| 1128 | self._sock.shutdown(socket.SHUT_WR) |
| 1129 | |
| 1130 | def _adjust_leftover_buffer(self, nbytes: int) -> None: |
| 1131 | self._buffer_size -= nbytes |
nothing calls this directly
no test coverage detected