| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_ARC_CONNECTION_NOTIFIER_H_ |
| #define COMPONENTS_ARC_CONNECTION_NOTIFIER_H_ |
| |
| #include "base/macros.h" |
| #include "base/observer_list.h" |
| #include "base/threading/thread_checker.h" |
| |
| namespace arc { |
| namespace internal { |
| |
| class ConnectionObserverBase; |
| |
| // Manages events related to connection. Designed to be used only by |
| // ConnectionHolder. |
| class ConnectionNotifier { |
| public: |
| ConnectionNotifier(); |
| ~ConnectionNotifier(); |
| |
| void AddObserver(ConnectionObserverBase* observer); |
| void RemoveObserver(ConnectionObserverBase* observer); |
| |
| // Notifies observers that connection gets ready. |
| void NotifyConnectionReady(); |
| |
| // Notifies observers that connection is closed. |
| void NotifyConnectionClosed(); |
| |
| private: |
| THREAD_CHECKER(thread_checker_); |
| base::ObserverList<ConnectionObserverBase>::Unchecked observer_list_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ConnectionNotifier); |
| }; |
| |
| } // namespace internal |
| } // namespace arc |
| |
| #endif // COMPONENTS_ARC_CONNECTION_NOTIFIER_H_ |