(self)
| 1140 | break |
| 1141 | |
| 1142 | def _write_send(self): |
| 1143 | assert self._buffer, 'Data should not be empty' |
| 1144 | if self._conn_lost: |
| 1145 | return |
| 1146 | try: |
| 1147 | buffer = self._buffer.popleft() |
| 1148 | n = self._sock.send(buffer) |
| 1149 | if n != len(buffer): |
| 1150 | # Not all data was written |
| 1151 | self._buffer.appendleft(buffer[n:]) |
| 1152 | self._buffer_size -= n |
| 1153 | except (BlockingIOError, InterruptedError): |
| 1154 | self._buffer.appendleft(buffer) |
| 1155 | return |
| 1156 | except (SystemExit, KeyboardInterrupt): |
| 1157 | raise |
| 1158 | except BaseException as exc: |
| 1159 | self._loop._remove_writer(self._sock_fd) |
| 1160 | self._buffer.clear() |
| 1161 | self._buffer_size = 0 |
| 1162 | self._fatal_error(exc, 'Fatal write error on socket transport') |
| 1163 | if self._empty_waiter is not None: |
| 1164 | self._empty_waiter.set_exception(exc) |
| 1165 | else: |
| 1166 | self._maybe_resume_protocol() # May append to buffer. |
| 1167 | if not self._buffer: |
| 1168 | self._loop._remove_writer(self._sock_fd) |
| 1169 | if self._empty_waiter is not None: |
| 1170 | self._empty_waiter.set_result(None) |
| 1171 | if self._closing: |
| 1172 | self._call_connection_lost(None) |
| 1173 | elif self._eof: |
| 1174 | self._sock.shutdown(socket.SHUT_WR) |
| 1175 | |
| 1176 | def write_eof(self): |
| 1177 | if self._closing or self._eof: |
nothing calls this directly
no test coverage detected