Files
scylladb/utils/directories.hh
Avi Kivity 0ae22a09d4 LICENSE: Update to version 1.1
Updated terms of non-commercial use (must be a never-customer).
2026-04-12 19:46:33 +03:00

57 lines
1.3 KiB
C++

/*
* Copyright (C) 2019-present ScyllaDB
*/
/*
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.1
*/
#pragma once
#include <set>
#include <vector>
#include <seastar/core/future.hh>
#include <seastar/util/bool_class.hh>
#include "utils/file_lock.hh"
#include "utils/lister.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, lister::filter_type do_verify_subpath = [] (const fs::path&, const directory_entry&) { return true; });
};
} // namespace utils