| // Copyright (c) 2011 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. |
| |
| #ifndef CROS_DISKS_MOUNTER_H_ |
| #define CROS_DISKS_MOUNTER_H_ |
| |
| #include <string> |
| |
| #include <base/macros.h> |
| #include <chromeos/dbus/service_constants.h> |
| |
| #include "cros-disks/mount_options.h" |
| |
| namespace cros_disks { |
| |
| // A base class for mounting a filesystem. |
| // This class (and its derived classes) does not handle unmounting |
| // of the filesystem. |
| class Mounter { |
| public: |
| Mounter(const std::string& source_path, |
| const std::string& target_path, |
| const std::string& filesystem_type, |
| const MountOptions& mount_options); |
| |
| virtual ~Mounter() = default; |
| |
| // This method implements the common steps to mount a filesystem. |
| // It internally calls MountImpl() on a derived class. |
| MountErrorType Mount(); |
| |
| const std::string& filesystem_type() const { return filesystem_type_; } |
| void set_filesystem_type(const std::string& filesystem_type) { |
| filesystem_type_ = filesystem_type; |
| } |
| |
| const std::string& source_path() const { return source_path_; } |
| void set_source_path(const std::string& source_path) { |
| source_path_ = source_path; |
| } |
| |
| const std::string& target_path() const { return target_path_; } |
| void set_target_path(const std::string& target_path) { |
| target_path_ = target_path; |
| } |
| |
| const MountOptions& mount_options() const { return mount_options_; } |
| void set_mount_options(const MountOptions& mount_options) { |
| mount_options_ = mount_options; |
| } |
| |
| protected: |
| // This pure virtual method is implemented by a derived class to mount |
| // a filesystem. |
| virtual MountErrorType MountImpl() = 0; |
| |
| private: |
| // Type of filesystem to mount. |
| std::string filesystem_type_; |
| |
| // Source path to mount from. |
| std::string source_path_; |
| |
| // Target path where the filesystem is mounted to. |
| std::string target_path_; |
| |
| // Mount options. |
| MountOptions mount_options_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Mounter); |
| }; |
| |
| } // namespace cros_disks |
| |
| #endif // CROS_DISKS_MOUNTER_H_ |