Loading system/gd/os/alarm.h +1 −4 Original line number Diff line number Diff line Loading @@ -34,9 +34,6 @@ class Alarm { // Create and register a single-shot alarm on given thread explicit Alarm(Thread* thread); // Create and register a single-shot alarm with a given reactor explicit Alarm(Reactor* reactor); // Unregister this alarm from the thread and release resource ~Alarm(); Loading @@ -50,7 +47,7 @@ class Alarm { private: Closure task_; Reactor* reactor_; Thread* thread_; int fd_ = 0; Reactor::Reactable* token_; mutable std::mutex mutex_; Loading system/gd/os/handler.h +1 −4 Original line number Diff line number Diff line Loading @@ -35,9 +35,6 @@ class Handler { // Create and register a handler on given thread explicit Handler(Thread* thread); // Create and register a handler with a given reactor explicit Handler(Reactor* reactor); // Unregister this handler from the thread and release resource. Unhandled events will be discarded and not executed. ~Handler(); Loading @@ -54,7 +51,7 @@ class Handler { private: std::queue<Closure> tasks_; Reactor* reactor_; Thread* thread_; int fd_; Reactor::Reactable* reactable_; mutable std::mutex mutex_; Loading system/gd/os/linux_generic/alarm.cc +3 −5 Original line number Diff line number Diff line Loading @@ -32,16 +32,14 @@ namespace bluetooth { namespace os { Alarm::Alarm(Reactor* reactor) : reactor_(reactor), fd_(timerfd_create(ALARM_CLOCK, 0)) { Alarm::Alarm(Thread* thread) : thread_(thread), fd_(timerfd_create(ALARM_CLOCK, 0)) { ASSERT_LOG(fd_ != -1, "cannot create timerfd: %s", strerror(errno)); token_ = reactor_->Register(fd_, [this] { on_fire(); }, nullptr); token_ = thread_->GetReactor()->Register(fd_, [this] { on_fire(); }, nullptr); } Alarm::Alarm(Thread* thread) : Alarm(thread->GetReactor()) {} Alarm::~Alarm() { reactor_->Unregister(token_); thread_->GetReactor()->Unregister(token_); int close_status; RUN_NO_INTR(close_status = close(fd_)); Loading system/gd/os/linux_generic/handler.cc +3 −5 Original line number Diff line number Diff line Loading @@ -31,16 +31,14 @@ namespace bluetooth { namespace os { Handler::Handler(Reactor* reactor) : reactor_(reactor), fd_(eventfd(0, EFD_SEMAPHORE | EFD_NONBLOCK)) { Handler::Handler(Thread* thread) : thread_(thread), fd_(eventfd(0, EFD_SEMAPHORE | EFD_NONBLOCK)) { ASSERT(fd_ != -1); reactable_ = reactor_->Register(fd_, [this] { this->handle_next_event(); }, nullptr); reactable_ = thread_->GetReactor()->Register(fd_, [this] { this->handle_next_event(); }, nullptr); } Handler::Handler(Thread* thread) : Handler(thread->GetReactor()) {} Handler::~Handler() { reactor_->Unregister(reactable_); thread_->GetReactor()->Unregister(reactable_); reactable_ = nullptr; int close_status; Loading system/gd/os/linux_generic/queue.tpp +5 −5 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ void Queue<T>::RegisterEnqueue(Handler* handler, EnqueueCallback callback) { ASSERT(enqueue_.handler_ == nullptr); ASSERT(enqueue_.reactable_ == nullptr); enqueue_.handler_ = handler; enqueue_.reactable_ = enqueue_.handler_->reactor_->Register( enqueue_.reactable_ = enqueue_.handler_->thread_->GetReactor()->Register( enqueue_.reactive_semaphore_.GetFd(), [this, callback] { EnqueueCallbackInternal(callback); }, nullptr); } Loading @@ -37,7 +37,7 @@ template <typename T> void Queue<T>::UnregisterEnqueue() { std::lock_guard<std::mutex> lock(mutex_); ASSERT(enqueue_.reactable_ != nullptr); enqueue_.handler_->reactor_->Unregister(enqueue_.reactable_); enqueue_.handler_->thread_->GetReactor()->Unregister(enqueue_.reactable_); enqueue_.reactable_ = nullptr; enqueue_.handler_ = nullptr; } Loading @@ -48,15 +48,15 @@ void Queue<T>::RegisterDequeue(Handler* handler, DequeueCallback callback) { ASSERT(dequeue_.handler_ == nullptr); ASSERT(dequeue_.reactable_ == nullptr); dequeue_.handler_ = handler; dequeue_.reactable_ = dequeue_.handler_->reactor_->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); dequeue_.reactable_ = dequeue_.handler_->thread_->GetReactor()->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); } template <typename T> void Queue<T>::UnregisterDequeue() { std::lock_guard<std::mutex> lock(mutex_); ASSERT(dequeue_.reactable_ != nullptr); dequeue_.handler_->reactor_->Unregister(dequeue_.reactable_); dequeue_.handler_->thread_->GetReactor()->Unregister(dequeue_.reactable_); dequeue_.reactable_ = nullptr; dequeue_.handler_ = nullptr; } Loading Loading
system/gd/os/alarm.h +1 −4 Original line number Diff line number Diff line Loading @@ -34,9 +34,6 @@ class Alarm { // Create and register a single-shot alarm on given thread explicit Alarm(Thread* thread); // Create and register a single-shot alarm with a given reactor explicit Alarm(Reactor* reactor); // Unregister this alarm from the thread and release resource ~Alarm(); Loading @@ -50,7 +47,7 @@ class Alarm { private: Closure task_; Reactor* reactor_; Thread* thread_; int fd_ = 0; Reactor::Reactable* token_; mutable std::mutex mutex_; Loading
system/gd/os/handler.h +1 −4 Original line number Diff line number Diff line Loading @@ -35,9 +35,6 @@ class Handler { // Create and register a handler on given thread explicit Handler(Thread* thread); // Create and register a handler with a given reactor explicit Handler(Reactor* reactor); // Unregister this handler from the thread and release resource. Unhandled events will be discarded and not executed. ~Handler(); Loading @@ -54,7 +51,7 @@ class Handler { private: std::queue<Closure> tasks_; Reactor* reactor_; Thread* thread_; int fd_; Reactor::Reactable* reactable_; mutable std::mutex mutex_; Loading
system/gd/os/linux_generic/alarm.cc +3 −5 Original line number Diff line number Diff line Loading @@ -32,16 +32,14 @@ namespace bluetooth { namespace os { Alarm::Alarm(Reactor* reactor) : reactor_(reactor), fd_(timerfd_create(ALARM_CLOCK, 0)) { Alarm::Alarm(Thread* thread) : thread_(thread), fd_(timerfd_create(ALARM_CLOCK, 0)) { ASSERT_LOG(fd_ != -1, "cannot create timerfd: %s", strerror(errno)); token_ = reactor_->Register(fd_, [this] { on_fire(); }, nullptr); token_ = thread_->GetReactor()->Register(fd_, [this] { on_fire(); }, nullptr); } Alarm::Alarm(Thread* thread) : Alarm(thread->GetReactor()) {} Alarm::~Alarm() { reactor_->Unregister(token_); thread_->GetReactor()->Unregister(token_); int close_status; RUN_NO_INTR(close_status = close(fd_)); Loading
system/gd/os/linux_generic/handler.cc +3 −5 Original line number Diff line number Diff line Loading @@ -31,16 +31,14 @@ namespace bluetooth { namespace os { Handler::Handler(Reactor* reactor) : reactor_(reactor), fd_(eventfd(0, EFD_SEMAPHORE | EFD_NONBLOCK)) { Handler::Handler(Thread* thread) : thread_(thread), fd_(eventfd(0, EFD_SEMAPHORE | EFD_NONBLOCK)) { ASSERT(fd_ != -1); reactable_ = reactor_->Register(fd_, [this] { this->handle_next_event(); }, nullptr); reactable_ = thread_->GetReactor()->Register(fd_, [this] { this->handle_next_event(); }, nullptr); } Handler::Handler(Thread* thread) : Handler(thread->GetReactor()) {} Handler::~Handler() { reactor_->Unregister(reactable_); thread_->GetReactor()->Unregister(reactable_); reactable_ = nullptr; int close_status; Loading
system/gd/os/linux_generic/queue.tpp +5 −5 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ void Queue<T>::RegisterEnqueue(Handler* handler, EnqueueCallback callback) { ASSERT(enqueue_.handler_ == nullptr); ASSERT(enqueue_.reactable_ == nullptr); enqueue_.handler_ = handler; enqueue_.reactable_ = enqueue_.handler_->reactor_->Register( enqueue_.reactable_ = enqueue_.handler_->thread_->GetReactor()->Register( enqueue_.reactive_semaphore_.GetFd(), [this, callback] { EnqueueCallbackInternal(callback); }, nullptr); } Loading @@ -37,7 +37,7 @@ template <typename T> void Queue<T>::UnregisterEnqueue() { std::lock_guard<std::mutex> lock(mutex_); ASSERT(enqueue_.reactable_ != nullptr); enqueue_.handler_->reactor_->Unregister(enqueue_.reactable_); enqueue_.handler_->thread_->GetReactor()->Unregister(enqueue_.reactable_); enqueue_.reactable_ = nullptr; enqueue_.handler_ = nullptr; } Loading @@ -48,15 +48,15 @@ void Queue<T>::RegisterDequeue(Handler* handler, DequeueCallback callback) { ASSERT(dequeue_.handler_ == nullptr); ASSERT(dequeue_.reactable_ == nullptr); dequeue_.handler_ = handler; dequeue_.reactable_ = dequeue_.handler_->reactor_->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); dequeue_.reactable_ = dequeue_.handler_->thread_->GetReactor()->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); } template <typename T> void Queue<T>::UnregisterDequeue() { std::lock_guard<std::mutex> lock(mutex_); ASSERT(dequeue_.reactable_ != nullptr); dequeue_.handler_->reactor_->Unregister(dequeue_.reactable_); dequeue_.handler_->thread_->GetReactor()->Unregister(dequeue_.reactable_); dequeue_.reactable_ = nullptr; dequeue_.handler_ = nullptr; } Loading