| // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "cros-disks/daemon.h" |
| |
| namespace { |
| |
| const char kArchiveMountRootDirectory[] = "/media/archive"; |
| const char kDiskMountRootDirectory[] = "/media/removable"; |
| const char kNonPrivilegedMountUser[] = "chronos"; |
| |
| } // namespace |
| |
| namespace cros_disks { |
| |
| Daemon::Daemon(DBus::Connection* dbus_connection, bool has_session_manager) |
| : archive_manager_(kArchiveMountRootDirectory, &platform_, &metrics_), |
| disk_manager_(kDiskMountRootDirectory, &platform_, &metrics_, |
| &device_ejector_), |
| server_(*dbus_connection, &platform_, &disk_manager_, &format_manager_), |
| event_moderator_(&server_, &disk_manager_, has_session_manager), |
| session_manager_proxy_(dbus_connection) { |
| } |
| |
| void Daemon::Initialize() { |
| // Register mount managers with the commonly used ones come first. |
| server_.RegisterMountManager(&disk_manager_); |
| server_.RegisterMountManager(&archive_manager_); |
| |
| CHECK(platform_.SetMountUser(kNonPrivilegedMountUser)) |
| << "'" << kNonPrivilegedMountUser |
| << "' is not available for non-privileged mount operations."; |
| CHECK(archive_manager_.Initialize()) |
| << "Failed to initialize the archive manager"; |
| CHECK(disk_manager_.Initialize()) << "Failed to initialize the disk manager"; |
| |
| session_manager_proxy_.AddObserver(&server_); |
| session_manager_proxy_.AddObserver(&event_moderator_); |
| } |
| |
| int Daemon::GetDeviceEventDescriptor() const { |
| return disk_manager_.udev_monitor_fd(); |
| } |
| |
| void Daemon::ProcessDeviceEvents() { |
| event_moderator_.ProcessDeviceEvents(); |
| } |
| |
| } // namespace cros_disks |