diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-05 23:52:33 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-05 23:52:33 +0800 |
commit | 227118866190a7fe17b42e8c589c475781c69f33 (patch) | |
tree | 0f97183ebc7de6c8e00771ce3957f4b08d5bb012 /src/base/platform/unix/UnixFile.cpp | |
parent | 79fda9ada7878afef263f4786fd3967ec6dbfdc7 (diff) | |
download | cru-227118866190a7fe17b42e8c589c475781c69f33.tar.gz cru-227118866190a7fe17b42e8c589c475781c69f33.tar.bz2 cru-227118866190a7fe17b42e8c589c475781c69f33.zip |
Event loop poll.
Diffstat (limited to 'src/base/platform/unix/UnixFile.cpp')
-rw-r--r-- | src/base/platform/unix/UnixFile.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
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) { |