| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMEOS_DBUS_INIT_DBUS_THREAD_MANAGER_BASE_H_ |
| #define CHROMEOS_DBUS_INIT_DBUS_THREAD_MANAGER_BASE_H_ |
| |
| #include <memory> |
| |
| #include "base/component_export.h" |
| #include "base/memory/ref_counted.h" |
| |
| namespace base { |
| class Thread; |
| } // namespace base |
| |
| namespace dbus { |
| class Bus; |
| } // namespace dbus |
| |
| namespace chromeos { |
| |
| // DBusThreadManagerBase manages the D-Bus thread (the thread dedicated to |
| // handling asynchronous D-Bus operations) and the D-Bus connection. |
| |
| // Derived classes and callers are responsible for managing D-Bus clients (which |
| // depend on the D-Bus thread), and need to ensure that D-Bus clients shut down |
| // before the D-Bus connection closes and the D-Bus thread stops in |
| // ~DBusThreadManagerBase(). |
| class COMPONENT_EXPORT(CHROMEOS_DBUS_INIT) DBusThreadManagerBase { |
| public: |
| // Returns true if clients are faked. |
| bool IsUsingFakes(); |
| |
| // Returns various D-Bus bus instances, owned by DBusThreadManager. |
| dbus::Bus* GetSystemBus(); |
| |
| protected: |
| DBusThreadManagerBase(); |
| DBusThreadManagerBase(const DBusThreadManagerBase&) = delete; |
| const DBusThreadManagerBase& operator=(const DBusThreadManagerBase&) = delete; |
| virtual ~DBusThreadManagerBase(); |
| |
| private: |
| // Whether to use real or fake dbus clients. |
| const bool use_real_clients_; |
| |
| std::unique_ptr<base::Thread> dbus_thread_; |
| scoped_refptr<dbus::Bus> system_bus_; |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROMEOS_DBUS_INIT_DBUS_THREAD_MANAGER_BASE_H_ |