Loading adb/fdevent/fdevent.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> 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()); Loading adb/fdevent/fdevent.h +3 −3 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> timeout) = 0; void SetTimeout(fdevent* fde, std::optional<std::chrono::milliseconds> timeout); // Loop until TerminateLoop is called, handling events. // Implementations should call FlushRunQueue on every iteration, and check the value of Loading adb/fdevent/fdevent_poll.cpp +0 −16 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> timeout) { CheckMainThread(); fde->timeout = timeout; fde->last_active = std::chrono::steady_clock::now(); } static std::string dump_pollfds(const std::vector<adb_pollfd>& pollfds) { std::string result; for (const auto& pollfd : pollfds) { Loading adb/fdevent/fdevent_poll.h +0 −3 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> timeout) final; virtual void Loop() final; Loading Loading
adb/fdevent/fdevent.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> 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()); Loading
adb/fdevent/fdevent.h +3 −3 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> timeout) = 0; void SetTimeout(fdevent* fde, std::optional<std::chrono::milliseconds> timeout); // Loop until TerminateLoop is called, handling events. // Implementations should call FlushRunQueue on every iteration, and check the value of Loading
adb/fdevent/fdevent_poll.cpp +0 −16 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> timeout) { CheckMainThread(); fde->timeout = timeout; fde->last_active = std::chrono::steady_clock::now(); } static std::string dump_pollfds(const std::vector<adb_pollfd>& pollfds) { std::string result; for (const auto& pollfd : pollfds) { Loading
adb/fdevent/fdevent_poll.h +0 −3 Original line number Diff line number Diff line Loading @@ -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<std::chrono::milliseconds> timeout) final; virtual void Loop() final; Loading