diff --git a/adb/fdevent/fdevent.cpp b/adb/fdevent/fdevent.cpp index 26ebc49d7..28b8f37ce 100644 --- a/adb/fdevent/fdevent.cpp +++ b/adb/fdevent/fdevent.cpp @@ -83,6 +83,21 @@ unique_fd fdevent_context::Destroy(fdevent* fde) { return result; } +void fdevent_context::Add(fdevent* fde, unsigned events) { + Set(fde, (fde->state & FDE_EVENTMASK) | events); +} + +void fdevent_context::Del(fdevent* fde, unsigned events) { + CHECK(!(events & FDE_TIMEOUT)); + Set(fde, (fde->state & FDE_EVENTMASK) & ~events); +} + +void fdevent_context::SetTimeout(fdevent* fde, std::optional timeout) { + CheckMainThread(); + fde->timeout = timeout; + fde->last_active = std::chrono::steady_clock::now(); +} + void fdevent_context::CheckMainThread() { if (main_thread_id_) { CHECK_EQ(*main_thread_id_, android::base::GetThreadId()); diff --git a/adb/fdevent/fdevent.h b/adb/fdevent/fdevent.h index 3a3682fcc..ccb0c9221 100644 --- a/adb/fdevent/fdevent.h +++ b/adb/fdevent/fdevent.h @@ -70,14 +70,14 @@ struct fdevent_context { public: // Change which events should cause notifications. virtual void Set(fdevent* fde, unsigned events) = 0; - virtual void Add(fdevent* fde, unsigned events) = 0; - virtual void Del(fdevent* fde, unsigned events) = 0; + void Add(fdevent* fde, unsigned events); + void Del(fdevent* fde, unsigned events); // Set a timeout on an fdevent. // If no events are triggered by the timeout, an FDE_TIMEOUT will be generated. // Note timeouts are not defused automatically; if a timeout is set on an fdevent, it will // trigger repeatedly every |timeout| ms. - virtual void SetTimeout(fdevent* fde, std::optional timeout) = 0; + void SetTimeout(fdevent* fde, std::optional timeout); // Loop until TerminateLoop is called, handling events. // Implementations should call FlushRunQueue on every iteration, and check the value of diff --git a/adb/fdevent/fdevent_poll.cpp b/adb/fdevent/fdevent_poll.cpp index 59b6b933f..75ea08178 100644 --- a/adb/fdevent/fdevent_poll.cpp +++ b/adb/fdevent/fdevent_poll.cpp @@ -131,22 +131,6 @@ void fdevent_context_poll::Set(fdevent* fde, unsigned events) { } } -void fdevent_context_poll::Add(fdevent* fde, unsigned events) { - Set(fde, (fde->state & FDE_EVENTMASK) | events); -} - -void fdevent_context_poll::Del(fdevent* fde, unsigned events) { - CHECK(!(events & FDE_TIMEOUT)); - Set(fde, (fde->state & FDE_EVENTMASK) & ~events); -} - -void fdevent_context_poll::SetTimeout(fdevent* fde, - std::optional timeout) { - CheckMainThread(); - fde->timeout = timeout; - fde->last_active = std::chrono::steady_clock::now(); -} - static std::string dump_pollfds(const std::vector& pollfds) { std::string result; for (const auto& pollfd : pollfds) { diff --git a/adb/fdevent/fdevent_poll.h b/adb/fdevent/fdevent_poll.h index bffc873c6..db083018b 100644 --- a/adb/fdevent/fdevent_poll.h +++ b/adb/fdevent/fdevent_poll.h @@ -52,9 +52,6 @@ struct fdevent_context_poll : public fdevent_context { virtual void Unregister(fdevent* fde) final; virtual void Set(fdevent* fde, unsigned events) final; - virtual void Add(fdevent* fde, unsigned events) final; - virtual void Del(fdevent* fde, unsigned events) final; - virtual void SetTimeout(fdevent* fde, std::optional timeout) final; virtual void Loop() final;