blob: 8f75f9e0b817fcbcb0b9032a6ff9fd6a6cc2f738 [file] [log] [blame]
// 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_SYSTEM_MOUNTER_H_
#define CROS_DISKS_SYSTEM_MOUNTER_H_
#include <memory>
#include <string>
#include <vector>
#include <base/macros.h>
#include "cros-disks/mount_point.h"
#include "cros-disks/mounter.h"
#include "cros-disks/platform.h"
namespace cros_disks {
// A class for mounting a device file using the system mount() call.
class SystemMounter : public Mounter {
public:
SystemMounter(const Platform* platform,
std::string filesystem_type,
bool read_only,
std::vector<std::string> options);
~SystemMounter() override;
const std::string& filesystem_type() const { return filesystem_type_; }
bool read_only() const { return (flags_ & MS_RDONLY) == MS_RDONLY; }
const std::vector<std::string>& options() const { return options_; }
// Mounts a device file using the system mount() call.
std::unique_ptr<MountPoint> Mount(const std::string& source,
const base::FilePath& target_path,
std::vector<std::string> params,
MountErrorType* error) const override;
// As there is no way to figure out beforehand if that would work, always
// returns true, so this mounter is a "catch-all".
bool CanMount(const std::string& source,
const std::vector<std::string>& params,
base::FilePath* suggested_dir_name) const override;
private:
const Platform* const platform_;
const std::string filesystem_type_;
const int flags_;
const std::vector<std::string> options_;
DISALLOW_COPY_AND_ASSIGN(SystemMounter);
};
} // namespace cros_disks
#endif // CROS_DISKS_SYSTEM_MOUNTER_H_