diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-05 22:08:42 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-05 22:08:42 +0800 |
commit | 79fda9ada7878afef263f4786fd3967ec6dbfdc7 (patch) | |
tree | 951625d93e73758209381c4da801adfa4807f396 /include/cru/base/platform/unix | |
parent | 4c3098be1c5abaed610b8f10216d59829fc107ce (diff) | |
download | cru-79fda9ada7878afef263f4786fd3967ec6dbfdc7.tar.gz cru-79fda9ada7878afef263f4786fd3967ec6dbfdc7.tar.bz2 cru-79fda9ada7878afef263f4786fd3967ec6dbfdc7.zip |
Add ReadTimerPipe.
Diffstat (limited to 'include/cru/base/platform/unix')
-rw-r--r-- | include/cru/base/platform/unix/EventLoop.h | 8 | ||||
-rw-r--r-- | include/cru/base/platform/unix/UnixFile.h | 3 |
2 files changed, 11 insertions, 0 deletions
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<TimerData> timers_; + UnixFileDescriptor timer_pipe_read_end_; + UnixFileDescriptor timer_pipe_write_end_; + std::optional<int> 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); |