41class [[nodiscard]] Socket
final :
public RwBase {
44 size_t bytes_received{0};
70 void Bind(
const Sockaddr&);
73 void Listen(
int backlog = SOMAXCONN);
86 [[nodiscard]] size_t
RecvSome(
void* buf, size_t len, Deadline deadline);
90 [[nodiscard]] size_t
RecvAll(
void* buf, size_t len, Deadline deadline);
98 [[nodiscard]] std::optional<size_t>
RecvNoblock(
void* buf, size_t len);
103 [[nodiscard]] size_t
SendAll(std::initializer_list<IoData> list, Deadline deadline);
105 [[nodiscard]] size_t SendAll(std::span<
const IoData> list, Deadline deadline);
107 [[nodiscard]] size_t
WriteAll(std::span<
const IoData> list, Deadline deadline)
override {
108 return SendAll(list, deadline);
113 [[nodiscard]] size_t
SendAll(
const IoData* list, std::size_t list_size, Deadline deadline);
117 [[nodiscard]] size_t
SendAll(
const struct iovec* list, std::size_t list_size, Deadline deadline);
121 [[nodiscard]] size_t
SendAll(
const void* buf, size_t len, Deadline deadline);
138 [[nodiscard]] size_t
SendAllTo(
const Sockaddr& dest_addr,
const void* buf, size_t len, Deadline deadline);
164 void SetOption(
int layer,
int optname,
const void* optval, socklen_t optlen);
169 [[nodiscard]] size_t
ReadSome(
void* buf, size_t len, Deadline deadline)
override {
175 [[nodiscard]] size_t
ReadAll(
void* buf, size_t len, Deadline deadline)
override {
189 [[nodiscard]] size_t
WriteAll(
const void* buf, size_t len, Deadline deadline)
override {
196 impl::FdControlHolder fd_control_;