blob: dcb16a93e861b89521dd958f6e70d7ff43452d09 [file] [log] [blame]
Ben Chan1e5a0cb2012-03-22 00:41:52 -07001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Ben Chana4c75062011-11-11 09:47:55 -08002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CROS_DISKS_DAEMON_H_
6#define CROS_DISKS_DAEMON_H_
7
Ben Chan445852f2017-10-02 23:00:16 -07008#include <memory>
9
Hidehiko Abe26ad98c2019-08-15 01:23:05 +090010#include <base/files/file_descriptor_watcher_posix.h>
Ben Chan3b832b92014-09-02 19:39:57 -070011#include <base/macros.h>
Ben Chan445852f2017-10-02 23:00:16 -070012#include <brillo/daemons/dbus_daemon.h>
Simon Glass2b1da092020-05-21 12:24:16 -060013#include <brillo/process/process_reaper.h>
Ben Chana4c75062011-11-11 09:47:55 -080014
Ben Chan5ccd9fe2013-11-13 18:28:27 -080015#include "cros-disks/cros_disks_server.h"
16#include "cros-disks/device_ejector.h"
17#include "cros-disks/device_event_moderator.h"
18#include "cros-disks/disk_manager.h"
Sergei Datsenko16821892019-04-05 11:26:38 +110019#include "cros-disks/disk_monitor.h"
Ben Chan5ccd9fe2013-11-13 18:28:27 -080020#include "cros-disks/format_manager.h"
Sergei Datsenko0f014d22018-04-04 16:37:22 +100021#include "cros-disks/fuse_mount_manager.h"
Ben Chana4c75062011-11-11 09:47:55 -080022#include "cros-disks/metrics.h"
Omid Tourzan7943a9d2020-08-31 13:54:36 +100023#include "cros-disks/partition_manager.h"
Ben Chana4c75062011-11-11 09:47:55 -080024#include "cros-disks/platform.h"
François Degros6c5cfc42020-02-14 16:13:27 +110025#include "cros-disks/rar_manager.h"
Klemen Kozjekb0658852017-08-15 13:03:48 +090026#include "cros-disks/rename_manager.h"
Ben Chan5ccd9fe2013-11-13 18:28:27 -080027#include "cros-disks/session_manager_proxy.h"
Jeremie Boulic798a6cf2020-06-11 09:59:32 +100028#include "cros-disks/zip_manager.h"
Ben Chana4c75062011-11-11 09:47:55 -080029
30namespace cros_disks {
31
Ben Chan445852f2017-10-02 23:00:16 -070032class Daemon : public brillo::DBusServiceDaemon {
Ben Chana4c75062011-11-11 09:47:55 -080033 public:
Mathieu Perreault8104e6b2016-04-18 14:54:47 -040034 // |has_session_manager| indicates whether the presence of a SessionManager is
35 // expected.
Ben Chan445852f2017-10-02 23:00:16 -070036 explicit Daemon(bool has_session_manager);
Qijiang Fan6bc59e12020-11-11 02:51:06 +090037 Daemon(const Daemon&) = delete;
38 Daemon& operator=(const Daemon&) = delete;
Ben Chana4c75062011-11-11 09:47:55 -080039
Ben Chan445852f2017-10-02 23:00:16 -070040 ~Daemon() override;
Ben Chana4c75062011-11-11 09:47:55 -080041
42 private:
Ben Chan445852f2017-10-02 23:00:16 -070043 // brillo::DBusServiceDaemon overrides:
44 void RegisterDBusObjectsAsync(
45 brillo::dbus_utils::AsyncEventSequencer* sequencer) override;
46
47 void OnDeviceEvents();
48
49 const bool has_session_manager_;
Ben Chana4c75062011-11-11 09:47:55 -080050 Metrics metrics_;
51 Platform platform_;
Ben Chan445852f2017-10-02 23:00:16 -070052 brillo::ProcessReaper process_reaper_;
Ben Chan1e5a0cb2012-03-22 00:41:52 -070053 DeviceEjector device_ejector_;
François Degros6c5cfc42020-02-14 16:13:27 +110054 RarManager rar_manager_;
Jeremie Boulic798a6cf2020-06-11 09:59:32 +100055 ZipManager zip_manager_;
Sergei Datsenko16821892019-04-05 11:26:38 +110056 DiskMonitor disk_monitor_;
Ben Chana4c75062011-11-11 09:47:55 -080057 DiskManager disk_manager_;
58 FormatManager format_manager_;
Omid Tourzan7943a9d2020-08-31 13:54:36 +100059 PartitionManager partition_manager_;
Klemen Kozjekb0658852017-08-15 13:03:48 +090060 RenameManager rename_manager_;
Sergei Datsenko0f014d22018-04-04 16:37:22 +100061 FUSEMountManager fuse_manager_;
Ben Chan445852f2017-10-02 23:00:16 -070062 std::unique_ptr<DeviceEventModerator> event_moderator_;
63 std::unique_ptr<SessionManagerProxy> session_manager_proxy_;
64 std::unique_ptr<CrosDisksServer> server_;
Hidehiko Abe26ad98c2019-08-15 01:23:05 +090065 std::unique_ptr<base::FileDescriptorWatcher::Controller>
66 device_event_watcher_;
Ben Chana4c75062011-11-11 09:47:55 -080067};
68
69} // namespace cros_disks
70
Ben Chan2bfa6242012-04-30 08:16:20 -070071#endif // CROS_DISKS_DAEMON_H_