blob: bcc462ba19181e23d51861310364518cf5ecaa9e [file] [log] [blame]
// Copyright 2019 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MEMS_SETUP_DELEGATE_H_
#define MEMS_SETUP_DELEGATE_H_
#include <unistd.h>
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include <base/files/file_path.h>
#include <chromeos-config/libcros_config/cros_config_interface.h>
#include <libsar/sar_config_reader.h>
namespace mems_setup {
class Delegate {
public:
virtual ~Delegate() = default;
virtual std::optional<std::string> ReadVpdValue(const std::string& key) = 0;
virtual bool ProbeKernelModule(const std::string& module) = 0;
virtual bool CreateDirectory(const base::FilePath&) = 0;
virtual bool Exists(const base::FilePath&) = 0;
virtual std::vector<base::FilePath> EnumerateAllFiles(
base::FilePath file_path) = 0;
libsar::SarConfigReader::Delegate* GetSarConfigReaderDelegate() {
return sar_config_reader_delegate_.get();
}
virtual std::optional<gid_t> FindGroupId(const char* group) = 0;
virtual int GetPermissions(const base::FilePath& path) = 0;
virtual bool SetPermissions(const base::FilePath& path, int mode) = 0;
virtual bool SetOwnership(const base::FilePath& path,
uid_t user,
gid_t group) = 0;
virtual std::optional<std::string> GetIioSarSensorDevlink(
std::string sys_path) = 0;
virtual brillo::CrosConfigInterface* GetCrosConfig() = 0;
protected:
Delegate(std::unique_ptr<libsar::SarConfigReader::Delegate>
sar_config_reader_delegate)
: sar_config_reader_delegate_(std::move(sar_config_reader_delegate)) {}
Delegate(const Delegate&) = delete;
Delegate& operator=(const Delegate&) = delete;
std::unique_ptr<libsar::SarConfigReader::Delegate>
sar_config_reader_delegate_;
};
} // namespace mems_setup
#endif // MEMS_SETUP_DELEGATE_H_