Files
scylladb/utils/directories.hh
Kefu Chai 7215d4bfe9 utils: do not include unused headers
these unused includes were identifier by clang-include-cleaner. after
auditing these source files, all of the reports have been confirmed.

please note, because quite a few source files relied on
`utils/to_string.hh` to pull in the specialization of
`fmt::formatter<std::optional<T>>`, after removing
`#include <fmt/std.h>` from `utils/to_string.hh`, we have to
include `fmt/std.h` directly.

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
2025-01-14 07:56:39 -05:00

56 lines
1.3 KiB
C++

/*
* Copyright (C) 2019-present ScyllaDB
*/
/*
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
*/
#pragma once
#include <set>
#include <vector>
#include <seastar/core/future.hh>
#include <seastar/util/bool_class.hh>
#include "utils/file_lock.hh"
using namespace seastar;
namespace db {
class config;
}
namespace utils {
class directories {
public:
class set {
public:
void add(fs::path path);
void add(sstring path);
void add(std::vector<sstring> path);
void add_sharded(sstring path);
const std::set<fs::path> get_paths() const {
return _paths;
}
private:
std::set<fs::path> _paths;
};
using recursive = bool_class<struct recursive_tag>;
directories(bool developer_mode);
future<> create_and_verify(set dir_set, recursive recursive = recursive::yes);
static future<> verify_owner_and_mode(std::filesystem::path path, recursive recursive = recursive::yes);
static future<> verify_owner_and_mode_of_data_dir(set dir_set);
private:
bool _developer_mode;
std::vector<file_lock> _locks;
static future<> do_verify_owner_and_mode(std::filesystem::path path, recursive, int level, std::function<bool(const fs::path&)> do_verify_subpath = {});
};
} // namespace utils