From 227118866190a7fe17b42e8c589c475781c69f33 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 5 Sep 2025 23:52:33 +0800 Subject: Event loop poll. --- src/base/platform/unix/UnixFile.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/base/platform/unix/UnixFile.cpp') diff --git a/src/base/platform/unix/UnixFile.cpp b/src/base/platform/unix/UnixFile.cpp index 6d2dea89..9d4db949 100644 --- a/src/base/platform/unix/UnixFile.cpp +++ b/src/base/platform/unix/UnixFile.cpp @@ -96,6 +96,19 @@ ssize_t UnixFileDescriptor::Read(void* buffer, size_t size) { return result; } +ssize_t UnixFileDescriptor::Write(const void* buffer, size_t size) { + EnsureValid(); + auto result = ::write(GetValue(), buffer, size); + if (result == -1) { + if (errno == EAGAIN || errno == EWOULDBLOCK) { + return -1; + } else { + throw ErrnoException("Failed to write on file descriptor."); + } + } + return result; +} + void UnixFileDescriptor::SetFileDescriptorFlags(int flags) { EnsureValid(); if (::fcntl(GetValue(), F_SETFL, flags) == -1) { -- cgit v1.2.3