From 79fda9ada7878afef263f4786fd3967ec6dbfdc7 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 5 Sep 2025 22:08:42 +0800 Subject: Add ReadTimerPipe. --- include/cru/base/platform/unix/EventLoop.h | 8 ++++++++ include/cru/base/platform/unix/UnixFile.h | 3 +++ 2 files changed, 11 insertions(+) (limited to 'include/cru/base/platform') diff --git a/include/cru/base/platform/unix/EventLoop.h b/include/cru/base/platform/unix/EventLoop.h index bc2bcbf8..b735ef26 100644 --- a/include/cru/base/platform/unix/EventLoop.h +++ b/include/cru/base/platform/unix/EventLoop.h @@ -84,11 +84,19 @@ class UnixEventLoop : public Object2 { action(std::move(action)) {} }; +private: + bool ReadTimerPipe(); + +private: + std::thread::id running_thread_; std::atomic_int timer_tag_; std::vector timers_; + UnixFileDescriptor timer_pipe_read_end_; + UnixFileDescriptor timer_pipe_write_end_; + std::optional exit_code_; }; diff --git a/include/cru/base/platform/unix/UnixFile.h b/include/cru/base/platform/unix/UnixFile.h index 8ce3249d..a5f1eb81 100644 --- a/include/cru/base/platform/unix/UnixFile.h +++ b/include/cru/base/platform/unix/UnixFile.h @@ -37,6 +37,9 @@ class UnixFileDescriptor { explicit operator bool() const { return this->IsValid(); } operator int() const { return this->GetValue(); } + /** + * If O_NONBLOCK is set and EAGAIN or EWOULDBLOCK is returned, -1 is returned. + */ ssize_t Read(void* buffer, size_t size); void SetFileDescriptorFlags(int flags); -- cgit v1.2.3