MCPcopy Index your code
hub / github.com/python/cpython / _write_sendmsg

Method _write_sendmsg

Lib/asyncio/selector_events.py:1101–1128  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 11

_get_sendmsg_bufferMethod · 0.95
_call_connection_lostMethod · 0.95
sendmsgMethod · 0.80
_remove_writerMethod · 0.45
clearMethod · 0.45
_fatal_errorMethod · 0.45
set_exceptionMethod · 0.45
set_resultMethod · 0.45
shutdownMethod · 0.45

Tested by

no test coverage detected