aboutsummaryrefslogtreecommitdiff
path: root/src/base/platform/unix/UnixFile.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-05 23:52:33 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-05 23:52:33 +0800
commit227118866190a7fe17b42e8c589c475781c69f33 (patch)
tree0f97183ebc7de6c8e00771ce3957f4b08d5bb012 /src/base/platform/unix/UnixFile.cpp
parent79fda9ada7878afef263f4786fd3967ec6dbfdc7 (diff)
downloadcru-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.cpp13
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) {