123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright 2021 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 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_
|