21 Commits

Author SHA1 Message Date
cd538566d3 updated build system
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-17 16:34:32 -05:00
f0fe0a1962 fix 2024-10-17 14:41:01 -05:00
68e3f6fc00 fix 2024-10-17 13:43:45 -05:00
a23adf6db6 fixes 2024-10-17 13:35:00 -05:00
da5752e971 refactor 2024-10-17 13:14:40 -05:00
40682e37c0 refactor 2024-10-17 13:13:13 -05:00
cbd36efd91 refactor 2024-10-17 12:52:40 -05:00
96c712ae9c refactor 2024-10-17 12:51:31 -05:00
28065c2c8e refactor 2024-10-17 12:49:00 -05:00
9677ebb44e disable tests 2024-10-17 12:41:16 -05:00
172ea8bc00 disable tests 2024-10-17 12:40:24 -05:00
d2ec6f1f10 Add support for bucket name in Sia provider #16 2024-10-17 12:37:22 -05:00
bc7a74e432 Add support for bucket name in Sia provider #16 2024-10-17 12:29:46 -05:00
8561278539 fixes 2024-10-17 12:24:11 -05:00
f932799efa refactor 2024-10-17 12:14:31 -05:00
67dedc3fb5 refactor 2024-10-17 11:23:20 -05:00
7120856407 refactor 2024-10-17 11:20:59 -05:00
a1b138ccd1 refactor 2024-10-17 11:19:14 -05:00
d192904f8c updated build system 2024-10-17 11:18:08 -05:00
0bd7070ec5 refactor 2024-10-17 10:21:22 -05:00
63ca3089da updated build system 2024-10-17 10:20:07 -05:00
72 changed files with 1425 additions and 2027 deletions

View File

@ -1,15 +1,15 @@
set(BINUTILS_VERSION 2.41) set(BINUTILS_VERSION 2.41)
set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0)
set(BOOST_MAJOR_VERSION 1) set(BOOST_MAJOR_VERSION 1)
set(BOOST_MINOR_VERSION 85) set(BOOST_MINOR_VERSION 85)
set(BOOST_PATCH_VERSION 0) set(BOOST_PATCH_VERSION 0)
set(BOOST2_MAJOR_VERSION 1)
set(BOOST2_MINOR_VERSION 76)
set(BOOST2_PATCH_VERSION 0)
set(CPP_HTTPLIB_VERSION 0.16.3) set(CPP_HTTPLIB_VERSION 0.16.3)
set(CURL2_VERSION 8_9_1)
set(CURL_VERSION 8.9.1) set(CURL_VERSION 8.9.1)
set(EXPAT2_VERSION 2_6_2) set(CURL2_VERSION 8_9_1)
set(EXPAT_VERSION 2.6.2) set(EXPAT_VERSION 2.6.2)
set(EXPAT2_VERSION 2_6_2)
set(GCC_VERSION 14.2.0) set(GCC_VERSION 14.2.0)
set(GTEST_VERSION 1.15.2) set(GTEST_VERSION 1.15.2)
set(ICU_VERSION 75-1) set(ICU_VERSION 75-1)
@ -21,7 +21,7 @@ set(OPENSSL_VERSION 3.3.1)
set(PKG_CONFIG_VERSION 0.29.2) set(PKG_CONFIG_VERSION 0.29.2)
set(PUGIXML_VERSION 1.14) set(PUGIXML_VERSION 1.14)
set(SPDLOG_VERSION 1.14.1) set(SPDLOG_VERSION 1.14.1)
set(SQLITE2_VERSION 3.46.1)
set(SQLITE_VERSION 3460100) set(SQLITE_VERSION 3460100)
set(SQLITE2_VERSION 3.46.1)
set(STDUUID_VERSION 1.2.3) set(STDUUID_VERSION 1.2.3)
set(ZLIB_VERSION 1.3.1) set(ZLIB_VERSION 1.3.1)

View File

@ -572,8 +572,8 @@ RUN if [ -f "/3rd_party/flac-${MY_FLAC_VERSION}.tar.gz" ]; then \
&& cd build \ && cd build \
&& cmake .. \ && cmake .. \
-DBUILD_DOCS=OFF \ -DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=ON \ -DBUILD_EXAMPLES=OFF \
-DBUILD_PROGRAMS=ON \ -DBUILD_PROGRAMS=OFF \
-DBUILD_SHARED_LIBS=ON \ -DBUILD_SHARED_LIBS=ON \
-DBUILD_STATIC_LIBS=ON \ -DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \ -DBUILD_TESTING=OFF \

View File

@ -30,26 +30,26 @@
namespace repertory { namespace repertory {
class app_config final { class app_config final {
public: public:
[[nodiscard]] static auto [[nodiscard]] static auto default_agent_name(const provider_type &prov)
default_agent_name(const provider_type &prov) -> std::string; -> std::string;
[[nodiscard]] static auto [[nodiscard]] static auto default_api_port(const provider_type &prov)
default_api_port(const provider_type &prov) -> std::uint16_t; -> std::uint16_t;
[[nodiscard]] static auto [[nodiscard]] static auto default_data_directory(const provider_type &prov)
default_data_directory(const provider_type &prov) -> std::string; -> std::string;
[[nodiscard]] static auto [[nodiscard]] static auto default_remote_port(const provider_type &prov)
default_remote_port(const provider_type &prov) -> std::uint16_t; -> std::uint16_t;
[[nodiscard]] static auto [[nodiscard]] static auto default_rpc_port(const provider_type &prov)
default_rpc_port(const provider_type &prov) -> std::uint16_t; -> std::uint16_t;
[[nodiscard]] static auto [[nodiscard]] static auto get_provider_display_name(const provider_type &prov)
get_provider_display_name(const provider_type &prov) -> std::string; -> std::string;
[[nodiscard]] static auto [[nodiscard]] static auto get_provider_name(const provider_type &prov)
get_provider_name(const provider_type &prov) -> std::string; -> std::string;
public: public:
app_config(const provider_type &prov, std::string_view data_directory = ""); app_config(const provider_type &prov, std::string_view data_directory = "");
@ -70,7 +70,7 @@ private:
bool enable_max_cache_size_; bool enable_max_cache_size_;
#if defined(_WIN32) #if defined(_WIN32)
bool enable_mount_manager_; bool enable_mount_manager_;
#endif #endif // defined(_WIN32)
bool enable_remote_mount_; bool enable_remote_mount_;
encrypt_config encrypt_config_; encrypt_config encrypt_config_;
event_level event_level_; event_level event_level_;
@ -98,7 +98,7 @@ private:
std::string cache_directory_; std::string cache_directory_;
host_config hc_; host_config hc_;
s3_config s3_config_; s3_config s3_config_;
sia_config sia_config_{"default"}; sia_config sia_config_{};
std::uint64_t version_{REPERTORY_CONFIG_VERSION}; std::uint64_t version_{REPERTORY_CONFIG_VERSION};
std::string log_directory_; std::string log_directory_;
mutable std::recursive_mutex read_write_mutex_; mutable std::recursive_mutex read_write_mutex_;
@ -110,10 +110,9 @@ private:
template <typename dest> template <typename dest>
auto get_value(const json &json_document, const std::string &name, dest &dst, auto get_value(const json &json_document, const std::string &name, dest &dst,
bool &success_flag) -> bool { bool &success_flag) -> bool {
constexpr const auto *function_name = REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__);
auto ret = false; auto ret{false};
try { try {
if (json_document.find(name) != json_document.end()) { if (json_document.find(name) != json_document.end()) {
dst = json_document[name].get<dest>(); dst = json_document[name].get<dest>();
@ -132,7 +131,7 @@ private:
template <typename dest, typename source> template <typename dest, typename source>
auto set_value(dest &dst, const source &src) -> bool { auto set_value(dest &dst, const source &src) -> bool {
auto ret = false; auto ret{false};
recur_mutex_lock lock(read_write_mutex_); recur_mutex_lock lock(read_write_mutex_);
if (dst != src) { if (dst != src) {
dst = src; dst = src;

View File

@ -357,9 +357,7 @@ auto app_config::get_provider_name(const provider_type &prov) -> std::string {
} }
auto app_config::get_value_by_name(const std::string &name) -> std::string { auto app_config::get_value_by_name(const std::string &name) -> std::string {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (name == "ApiAuth") { if (name == "ApiAuth") {
@ -516,9 +514,7 @@ auto app_config::get_value_by_name(const std::string &name) -> std::string {
} }
auto app_config::load() -> bool { auto app_config::load() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret{false}; auto ret{false};
@ -684,9 +680,7 @@ auto app_config::load() -> bool {
} }
void app_config::save() { void app_config::save() {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = get_config_file_path(); const auto file_path = get_config_file_path();
recur_mutex_lock lock(read_write_mutex_); recur_mutex_lock lock(read_write_mutex_);
@ -733,9 +727,7 @@ void app_config::set_is_remote_mount(bool is_remote_mount) {
auto app_config::set_value_by_name(const std::string &name, auto app_config::set_value_by_name(const std::string &name,
const std::string &value) -> std::string { const std::string &value) -> std::string {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (name == "ApiAuth") { if (name == "ApiAuth") {
@ -773,7 +765,7 @@ auto app_config::set_value_by_name(const std::string &name,
} }
if (name == "EnableMountManager") { if (name == "EnableMountManager") {
set_enable_mount_manager(utils::string::to_bool(value)); set_enable_mount_manager(utils::string::to_bool(value));
return std::to_string(get_enable_mount_manager()); return utils::string::from_bool(get_enable_mount_manager());
#endif #endif
} }
if (name == "EncryptConfig.EncryptionToken") { if (name == "EncryptConfig.EncryptionToken") {

View File

@ -41,9 +41,7 @@ void client_pool::pool::execute(
} }
client_pool::pool::pool(std::uint8_t pool_size) { client_pool::pool::pool(std::uint8_t pool_size) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
event_system::instance().raise<service_started>("client_pool"); event_system::instance().raise<service_started>("client_pool");

View File

@ -219,9 +219,7 @@ auto packet::decode(remote::file_info &val) -> packet::error_type {
} }
auto packet::decode_json(packet &response, json &json_data) -> int { auto packet::decode_json(packet &response, json &json_data) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string data; std::string data;
auto ret = response.decode(data); auto ret = response.decode(data);
@ -239,9 +237,7 @@ auto packet::decode_json(packet &response, json &json_data) -> int {
} }
auto packet::decrypt(std::string_view token) -> packet::error_type { auto packet::decrypt(std::string_view token) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret = utils::from_api_error(api_error::success); auto ret = utils::from_api_error(api_error::success);
try { try {
@ -523,9 +519,7 @@ void packet::encode_top(remote::file_info val) {
} }
void packet::encrypt(std::string_view token) { void packet::encrypt(std::string_view token) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
data_buffer result; data_buffer result;

View File

@ -76,9 +76,7 @@ void packet_client::close_all() {
} }
void packet_client::connect(client &cli) { void packet_client::connect(client &cli) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
resolve(); resolve();
@ -122,8 +120,8 @@ void packet_client::put_client(std::shared_ptr<client> &cli) {
} }
} }
auto packet_client::read_packet(client &cli, auto packet_client::read_packet(client &cli, packet &response)
packet &response) -> packet::error_type { -> packet::error_type {
data_buffer buffer(sizeof(std::uint32_t)); data_buffer buffer(sizeof(std::uint32_t));
const auto read_buffer = [&]() { const auto read_buffer = [&]() {
std::uint32_t offset{}; std::uint32_t offset{};
@ -161,8 +159,8 @@ void packet_client::resolve() {
} }
} }
auto packet_client::send(std::string_view method, auto packet_client::send(std::string_view method, std::uint32_t &service_flags)
std::uint32_t &service_flags) -> packet::error_type { -> packet::error_type {
packet request; packet request;
return send(method, request, service_flags); return send(method, request, service_flags);
} }
@ -174,11 +172,9 @@ auto packet_client::send(std::string_view method, packet &request,
} }
auto packet_client::send(std::string_view method, packet &request, auto packet_client::send(std::string_view method, packet &request,
packet &response, packet &response, std::uint32_t &service_flags)
std::uint32_t &service_flags) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto success = false; auto success = false;
packet::error_type ret = utils::from_api_error(api_error::error); packet::error_type ret = utils::from_api_error(api_error::error);

View File

@ -66,9 +66,7 @@ void packet_server::add_client(connection &conn, const std::string &client_id) {
} }
void packet_server::initialize(const uint16_t &port, uint8_t pool_size) { void packet_server::initialize(const uint16_t &port, uint8_t pool_size) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
pool_size = std::max(uint8_t(1U), pool_size); pool_size = std::max(uint8_t(1U), pool_size);
server_thread_ = std::make_unique<std::thread>([this, port, pool_size]() { server_thread_ = std::make_unique<std::thread>([this, port, pool_size]() {
@ -105,9 +103,7 @@ void packet_server::listen_for_connection(tcp::acceptor &acceptor) {
void packet_server::on_accept(std::shared_ptr<connection> conn, void packet_server::on_accept(std::shared_ptr<connection> conn,
boost::system::error_code err) { boost::system::error_code err) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
listen_for_connection(conn->acceptor); listen_for_connection(conn->acceptor);
if (err) { if (err) {
@ -125,9 +121,7 @@ void packet_server::on_accept(std::shared_ptr<connection> conn,
} }
void packet_server::read_header(std::shared_ptr<connection> conn) { void packet_server::read_header(std::shared_ptr<connection> conn) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
conn->buffer.resize(sizeof(std::uint32_t)); conn->buffer.resize(sizeof(std::uint32_t));
boost::asio::async_read( boost::asio::async_read(
@ -148,9 +142,7 @@ void packet_server::read_header(std::shared_ptr<connection> conn) {
void packet_server::read_packet(std::shared_ptr<connection> conn, void packet_server::read_packet(std::shared_ptr<connection> conn,
std::uint32_t data_size) { std::uint32_t data_size) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
const auto read_buffer = [&]() { const auto read_buffer = [&]() {
@ -246,9 +238,7 @@ void packet_server::remove_client(connection &conn) {
void packet_server::send_response(std::shared_ptr<connection> conn, void packet_server::send_response(std::shared_ptr<connection> conn,
const packet::error_type &result, const packet::error_type &result,
packet &response) { packet &response) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
response.encode_top(result); response.encode_top(result);
response.encode_top(PACKET_SERVICE_FLAGS); response.encode_top(PACKET_SERVICE_FLAGS);

View File

@ -26,12 +26,12 @@
namespace repertory { namespace repertory {
#if !defined(_WIN32) #if !defined(_WIN32)
auto directory_iterator::fill_buffer( auto directory_iterator::fill_buffer(const remote::file_offset &offset,
const remote::file_offset &offset, fuse_fill_dir_t filler_function, fuse_fill_dir_t filler_function,
void *buffer, populate_stat_callback populate_stat) -> int { void *buffer,
static constexpr const std::string_view function_name{ populate_stat_callback populate_stat)
static_cast<const char *>(__FUNCTION__), -> int {
}; REPERTORY_USES_FUNCTION_NAME();
if (offset < items_.size()) { if (offset < items_.size()) {
try { try {

View File

@ -34,9 +34,7 @@
namespace repertory { namespace repertory {
auto eviction::check_minimum_requirements(const std::string &file_path) auto eviction::check_minimum_requirements(const std::string &file_path)
-> bool { -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto opt_size = utils::file::file{file_path}.size(); auto opt_size = utils::file::file{file_path}.size();
if (not opt_size.has_value()) { if (not opt_size.has_value()) {
@ -77,9 +75,7 @@ auto eviction::get_filtered_cached_files() -> std::deque<std::string> {
} }
void eviction::service_function() { void eviction::service_function() {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto should_evict = true; auto should_evict = true;

View File

@ -101,9 +101,7 @@ fuse_base::fuse_base(app_config &config) : config_(config) {
fuse_base::~fuse_base() { E_CONSUMER_RELEASE(); } fuse_base::~fuse_base() { E_CONSUMER_RELEASE(); }
auto fuse_base::access_(const char *path, int mask) -> int { auto fuse_base::access_(const char *path, int mask) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().instance().execute_callback( return instance().instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -113,9 +111,7 @@ auto fuse_base::access_(const char *path, int mask) -> int {
#if defined(__APPLE__) #if defined(__APPLE__)
auto fuse_base::chflags_(const char *path, uint32_t flags) -> int { auto fuse_base::chflags_(const char *path, uint32_t flags) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().instance().execute_callback( return instance().instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -125,11 +121,9 @@ auto fuse_base::chflags_(const char *path, uint32_t flags) -> int {
#endif // __APPLE__ #endif // __APPLE__
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::chmod_(const char *path, mode_t mode, auto fuse_base::chmod_(const char *path, mode_t mode, struct fuse_file_info *fi)
struct fuse_file_info *fi) -> int { -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -138,9 +132,7 @@ auto fuse_base::chmod_(const char *path, mode_t mode,
} }
#else #else
auto fuse_base::chmod_(const char *path, mode_t mode) -> int { auto fuse_base::chmod_(const char *path, mode_t mode) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -152,9 +144,7 @@ auto fuse_base::chmod_(const char *path, mode_t mode) -> int {
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::chown_(const char *path, uid_t uid, gid_t gid, auto fuse_base::chown_(const char *path, uid_t uid, gid_t gid,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -163,9 +153,7 @@ auto fuse_base::chown_(const char *path, uid_t uid, gid_t gid,
} }
#else #else
auto fuse_base::chown_(const char *path, uid_t uid, gid_t gid) -> int { auto fuse_base::chown_(const char *path, uid_t uid, gid_t gid) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -176,9 +164,7 @@ auto fuse_base::chown_(const char *path, uid_t uid, gid_t gid) -> int {
auto fuse_base::create_(const char *path, mode_t mode, auto fuse_base::create_(const char *path, mode_t mode,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -187,9 +173,7 @@ auto fuse_base::create_(const char *path, mode_t mode,
} }
void fuse_base::destroy_(void *ptr) { void fuse_base::destroy_(void *ptr) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
execute_void_callback(function_name, [&]() { instance().destroy_impl(ptr); }); execute_void_callback(function_name, [&]() { instance().destroy_impl(ptr); });
} }
@ -264,9 +248,7 @@ auto fuse_base::execute_void_pointer_callback(std::string_view function_name,
auto fuse_base::fallocate_(const char *path, int mode, off_t offset, auto fuse_base::fallocate_(const char *path, int mode, off_t offset,
off_t length, struct fuse_file_info *fi) -> int { off_t length, struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -278,9 +260,7 @@ auto fuse_base::fallocate_(const char *path, int mode, off_t offset,
#if FUSE_USE_VERSION < 30 #if FUSE_USE_VERSION < 30
auto fuse_base::fgetattr_(const char *path, struct stat *st, auto fuse_base::fgetattr_(const char *path, struct stat *st,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -292,9 +272,7 @@ auto fuse_base::fgetattr_(const char *path, struct stat *st,
#if defined(__APPLE__) #if defined(__APPLE__)
auto fuse_base::fsetattr_x_(const char *path, struct setattr_x *attr, auto fuse_base::fsetattr_x_(const char *path, struct setattr_x *attr,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -305,9 +283,7 @@ auto fuse_base::fsetattr_x_(const char *path, struct setattr_x *attr,
auto fuse_base::fsync_(const char *path, int datasync, auto fuse_base::fsync_(const char *path, int datasync,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -318,9 +294,7 @@ auto fuse_base::fsync_(const char *path, int datasync,
#if FUSE_USE_VERSION < 30 #if FUSE_USE_VERSION < 30
auto fuse_base::ftruncate_(const char *path, off_t size, auto fuse_base::ftruncate_(const char *path, off_t size,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -332,9 +306,7 @@ auto fuse_base::ftruncate_(const char *path, off_t size,
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::getattr_(const char *path, struct stat *st, auto fuse_base::getattr_(const char *path, struct stat *st,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -343,9 +315,7 @@ auto fuse_base::getattr_(const char *path, struct stat *st,
} }
#else #else
auto fuse_base::getattr_(const char *path, struct stat *st) -> int { auto fuse_base::getattr_(const char *path, struct stat *st) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -357,9 +327,7 @@ auto fuse_base::getattr_(const char *path, struct stat *st) -> int {
#if defined(__APPLE__) #if defined(__APPLE__)
auto fuse_base::getxtimes_(const char *path, struct timespec *bkuptime, auto fuse_base::getxtimes_(const char *path, struct timespec *bkuptime,
struct timespec *crtime) -> int { struct timespec *crtime) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -369,11 +337,9 @@ auto fuse_base::getxtimes_(const char *path, struct timespec *bkuptime,
#endif // __APPLE__ #endif // __APPLE__
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::init_(struct fuse_conn_info *conn, auto fuse_base::init_(struct fuse_conn_info *conn, struct fuse_config *cfg)
struct fuse_config *cfg) -> void * { -> void * {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return execute_void_pointer_callback(function_name, [&]() -> void * { return execute_void_pointer_callback(function_name, [&]() -> void * {
return instance().init_impl(conn, cfg); return instance().init_impl(conn, cfg);
@ -381,9 +347,7 @@ auto fuse_base::init_(struct fuse_conn_info *conn,
} }
#else #else
auto fuse_base::init_(struct fuse_conn_info *conn) -> void * { auto fuse_base::init_(struct fuse_conn_info *conn) -> void * {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return execute_void_pointer_callback( return execute_void_pointer_callback(
function_name, [&]() -> void * { return instance().init_impl(conn); }); function_name, [&]() -> void * { return instance().init_impl(conn); });
@ -396,9 +360,7 @@ auto fuse_base::init_impl([[maybe_unused]] struct fuse_conn_info *conn,
#else // FUSE_USE_VERSION < 30 #else // FUSE_USE_VERSION < 30
auto fuse_base::init_impl(struct fuse_conn_info *conn) -> void * { auto fuse_base::init_impl(struct fuse_conn_info *conn) -> void * {
#endif // FUSE_USE_VERSION >= 30 #endif // FUSE_USE_VERSION >= 30
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
#if defined(__APPLE__) #if defined(__APPLE__)
conn->want |= FUSE_CAP_VOL_RENAME; conn->want |= FUSE_CAP_VOL_RENAME;
@ -426,9 +388,7 @@ auto fuse_base::init_impl(struct fuse_conn_info *conn) -> void * {
} }
auto fuse_base::mkdir_(const char *path, mode_t mode) -> int { auto fuse_base::mkdir_(const char *path, mode_t mode) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -485,9 +445,7 @@ auto fuse_base::mount(std::vector<std::string> args) -> int {
} }
auto fuse_base::open_(const char *path, struct fuse_file_info *fi) -> int { auto fuse_base::open_(const char *path, struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -496,9 +454,7 @@ auto fuse_base::open_(const char *path, struct fuse_file_info *fi) -> int {
} }
auto fuse_base::opendir_(const char *path, struct fuse_file_info *fi) -> int { auto fuse_base::opendir_(const char *path, struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -508,9 +464,7 @@ auto fuse_base::opendir_(const char *path, struct fuse_file_info *fi) -> int {
auto fuse_base::read_(const char *path, char *buffer, size_t read_size, auto fuse_base::read_(const char *path, char *buffer, size_t read_size,
off_t read_offset, struct fuse_file_info *fi) -> int { off_t read_offset, struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::size_t bytes_read{}; std::size_t bytes_read{};
const auto res = instance().execute_callback( const auto res = instance().execute_callback(
@ -526,11 +480,9 @@ auto fuse_base::read_(const char *path, char *buffer, size_t read_size,
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::readdir_(const char *path, void *buf, auto fuse_base::readdir_(const char *path, void *buf,
fuse_fill_dir_t fuse_fill_dir, off_t offset, fuse_fill_dir_t fuse_fill_dir, off_t offset,
struct fuse_file_info *fi, struct fuse_file_info *fi, fuse_readdir_flags flags)
fuse_readdir_flags flags) -> int { -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -542,9 +494,7 @@ auto fuse_base::readdir_(const char *path, void *buf,
auto fuse_base::readdir_(const char *path, void *buf, auto fuse_base::readdir_(const char *path, void *buf,
fuse_fill_dir_t fuse_fill_dir, off_t offset, fuse_fill_dir_t fuse_fill_dir, off_t offset,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -555,9 +505,7 @@ auto fuse_base::readdir_(const char *path, void *buf,
#endif #endif
auto fuse_base::release_(const char *path, struct fuse_file_info *fi) -> int { auto fuse_base::release_(const char *path, struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -565,11 +513,9 @@ auto fuse_base::release_(const char *path, struct fuse_file_info *fi) -> int {
}); });
} }
auto fuse_base::releasedir_(const char *path, auto fuse_base::releasedir_(const char *path, struct fuse_file_info *fi)
struct fuse_file_info *fi) -> int { -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -578,11 +524,9 @@ auto fuse_base::releasedir_(const char *path,
} }
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::rename_(const char *from, const char *to, auto fuse_base::rename_(const char *from, const char *to, unsigned int flags)
unsigned int flags) -> int { -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, from, to, function_name, from, to,
@ -593,9 +537,7 @@ auto fuse_base::rename_(const char *from, const char *to,
} }
#else #else
auto fuse_base::rename_(const char *from, const char *to) -> int { auto fuse_base::rename_(const char *from, const char *to) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, from, to, function_name, from, to,
@ -607,9 +549,7 @@ auto fuse_base::rename_(const char *from, const char *to) -> int {
#endif #endif
auto fuse_base::rmdir_(const char *path) -> int { auto fuse_base::rmdir_(const char *path) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -621,9 +561,7 @@ auto fuse_base::rmdir_(const char *path) -> int {
#if defined(__APPLE__) #if defined(__APPLE__)
auto fuse_base::getxattr_(const char *path, const char *name, char *value, auto fuse_base::getxattr_(const char *path, const char *name, char *value,
size_t size, uint32_t position) -> int { size_t size, uint32_t position) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
int attribute_size = 0; int attribute_size = 0;
const auto res = instance().execute_callback( const auto res = instance().execute_callback(
@ -637,9 +575,7 @@ auto fuse_base::getxattr_(const char *path, const char *name, char *value,
#else // __APPLE__ #else // __APPLE__
auto fuse_base::getxattr_(const char *path, const char *name, char *value, auto fuse_base::getxattr_(const char *path, const char *name, char *value,
size_t size) -> int { size_t size) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
int attribute_size = 0; int attribute_size = 0;
const auto res = instance().execute_callback( const auto res = instance().execute_callback(
@ -653,9 +589,7 @@ auto fuse_base::getxattr_(const char *path, const char *name, char *value,
#endif // __APPLE__ #endif // __APPLE__
auto fuse_base::listxattr_(const char *path, char *buffer, size_t size) -> int { auto fuse_base::listxattr_(const char *path, char *buffer, size_t size) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
int required_size = 0; int required_size = 0;
bool return_size = false; bool return_size = false;
@ -775,9 +709,7 @@ void fuse_base::raise_fuse_event(std::string_view function_name,
} }
auto fuse_base::removexattr_(const char *path, const char *name) -> int { auto fuse_base::removexattr_(const char *path, const char *name) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -788,9 +720,7 @@ auto fuse_base::removexattr_(const char *path, const char *name) -> int {
#if defined(__APPLE__) #if defined(__APPLE__)
auto fuse_base::setxattr_(const char *path, const char *name, const char *value, auto fuse_base::setxattr_(const char *path, const char *name, const char *value,
size_t size, int flags, uint32_t position) -> int { size_t size, int flags, uint32_t position) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto res = instance().execute_callback( const auto res = instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -806,9 +736,7 @@ auto fuse_base::setxattr_(const char *path, const char *name, const char *value,
#else // __APPLE__ #else // __APPLE__
auto fuse_base::setxattr_(const char *path, const char *name, const char *value, auto fuse_base::setxattr_(const char *path, const char *name, const char *value,
size_t size, int flags) -> int { size_t size, int flags) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto res = instance().execute_callback( const auto res = instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -832,9 +760,7 @@ void fuse_base::shutdown() {
#if defined(__APPLE__) #if defined(__APPLE__)
auto fuse_base::setattr_x_(const char *path, struct setattr_x *attr) -> int { auto fuse_base::setattr_x_(const char *path, struct setattr_x *attr) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -842,11 +768,9 @@ auto fuse_base::setattr_x_(const char *path, struct setattr_x *attr) -> int {
}); });
} }
auto fuse_base::setbkuptime_(const char *path, auto fuse_base::setbkuptime_(const char *path, const struct timespec *bkuptime)
const struct timespec *bkuptime) -> int { -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -854,11 +778,9 @@ auto fuse_base::setbkuptime_(const char *path,
}); });
} }
auto fuse_base::setchgtime_(const char *path, auto fuse_base::setchgtime_(const char *path, const struct timespec *chgtime)
const struct timespec *chgtime) -> int { -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -866,11 +788,9 @@ auto fuse_base::setchgtime_(const char *path,
}); });
} }
auto fuse_base::setcrtime_(const char *path, auto fuse_base::setcrtime_(const char *path, const struct timespec *crtime)
const struct timespec *crtime) -> int { -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -879,9 +799,7 @@ auto fuse_base::setcrtime_(const char *path,
} }
auto fuse_base::setvolname_(const char *volname) -> int { auto fuse_base::setvolname_(const char *volname) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, volname, [&](std::string api_path) -> api_error { function_name, volname, [&](std::string api_path) -> api_error {
@ -890,9 +808,7 @@ auto fuse_base::setvolname_(const char *volname) -> int {
} }
auto fuse_base::statfs_x_(const char *path, struct statfs *stbuf) -> int { auto fuse_base::statfs_x_(const char *path, struct statfs *stbuf) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -901,9 +817,7 @@ auto fuse_base::statfs_x_(const char *path, struct statfs *stbuf) -> int {
} }
#else // __APPLE__ #else // __APPLE__
auto fuse_base::statfs_(const char *path, struct statvfs *stbuf) -> int { auto fuse_base::statfs_(const char *path, struct statvfs *stbuf) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -915,9 +829,7 @@ auto fuse_base::statfs_(const char *path, struct statvfs *stbuf) -> int {
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::truncate_(const char *path, off_t size, auto fuse_base::truncate_(const char *path, off_t size,
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -926,9 +838,7 @@ auto fuse_base::truncate_(const char *path, off_t size,
} }
#else #else
auto fuse_base::truncate_(const char *path, off_t size) -> int { auto fuse_base::truncate_(const char *path, off_t size) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -938,9 +848,7 @@ auto fuse_base::truncate_(const char *path, off_t size) -> int {
#endif #endif
auto fuse_base::unlink_(const char *path) -> int { auto fuse_base::unlink_(const char *path) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -965,9 +873,7 @@ auto fuse_base::unmount(const std::string &mount_location) -> int {
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_base::utimens_(const char *path, const struct timespec tv[2], auto fuse_base::utimens_(const char *path, const struct timespec tv[2],
struct fuse_file_info *fi) -> int { struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -976,9 +882,7 @@ auto fuse_base::utimens_(const char *path, const struct timespec tv[2],
} }
#else #else
auto fuse_base::utimens_(const char *path, const struct timespec tv[2]) -> int { auto fuse_base::utimens_(const char *path, const struct timespec tv[2]) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
return instance().execute_callback( return instance().execute_callback(
function_name, path, [&](std::string api_path) -> api_error { function_name, path, [&](std::string api_path) -> api_error {
@ -989,9 +893,7 @@ auto fuse_base::utimens_(const char *path, const struct timespec tv[2]) -> int {
auto fuse_base::write_(const char *path, const char *buffer, size_t write_size, auto fuse_base::write_(const char *path, const char *buffer, size_t write_size,
off_t write_offset, struct fuse_file_info *fi) -> int { off_t write_offset, struct fuse_file_info *fi) -> int {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::size_t bytes_written{}; std::size_t bytes_written{};

View File

@ -76,8 +76,8 @@ auto fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid,
struct fuse_file_info * /*file_info*/) struct fuse_file_info * /*file_info*/)
-> api_error { -> api_error {
#else #else
auto fuse_drive::chown_impl(std::string api_path, uid_t uid, auto fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid)
gid_t gid) -> api_error { -> api_error {
#endif #endif
return check_and_perform(api_path, X_OK, return check_and_perform(api_path, X_OK,
[&](api_meta_map &meta) -> api_error { [&](api_meta_map &meta) -> api_error {
@ -206,9 +206,7 @@ auto fuse_drive::create_impl(std::string api_path, mode_t mode,
} }
void fuse_drive::destroy_impl(void *ptr) { void fuse_drive::destroy_impl(void *ptr) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
event_system::instance().raise<drive_unmount_pending>(get_mount_location()); event_system::instance().raise<drive_unmount_pending>(get_mount_location());
@ -394,9 +392,7 @@ auto fuse_drive::get_directory_item_count(const std::string &api_path) const
auto fuse_drive::get_directory_items(const std::string &api_path) const auto fuse_drive::get_directory_items(const std::string &api_path) const
-> directory_item_list { -> directory_item_list {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
directory_item_list list{}; directory_item_list list{};
auto res = provider_.get_directory_items(api_path, list); auto res = provider_.get_directory_items(api_path, list);
@ -410,9 +406,7 @@ auto fuse_drive::get_directory_items(const std::string &api_path) const
auto fuse_drive::get_file_size(const std::string &api_path) const auto fuse_drive::get_file_size(const std::string &api_path) const
-> std::uint64_t { -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::uint64_t file_size{}; std::uint64_t file_size{};
auto res = provider_.get_file_size(api_path, file_size); auto res = provider_.get_file_size(api_path, file_size);
@ -446,8 +440,8 @@ auto fuse_drive::getattr_impl(std::string api_path, struct stat *st,
struct fuse_file_info * /*file_info*/) struct fuse_file_info * /*file_info*/)
-> api_error { -> api_error {
#else #else
auto fuse_drive::getattr_impl(std::string api_path, auto fuse_drive::getattr_impl(std::string api_path, struct stat *st)
struct stat *st) -> api_error { -> api_error {
#endif #endif
const auto parent = utils::path::get_parent_api_path(api_path); const auto parent = utils::path::get_parent_api_path(api_path);
@ -529,14 +523,12 @@ auto fuse_drive::getxtimes_impl(std::string api_path, struct timespec *bkuptime,
#endif // __APPLE__ #endif // __APPLE__
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto fuse_drive::init_impl(struct fuse_conn_info *conn, auto fuse_drive::init_impl(struct fuse_conn_info *conn, struct fuse_config *cfg)
struct fuse_config *cfg) -> void * { -> void * {
#else #else
void *fuse_drive::init_impl(struct fuse_conn_info *conn) { void *fuse_drive::init_impl(struct fuse_conn_info *conn) {
#endif #endif
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto *ret = fuse_drive_base::init_impl(conn, cfg); auto *ret = fuse_drive_base::init_impl(conn, cfg);
@ -605,9 +597,7 @@ auto fuse_drive::is_processing(const std::string &api_path) const -> bool {
} }
auto fuse_drive::mkdir_impl(std::string api_path, mode_t mode) -> api_error { auto fuse_drive::mkdir_impl(std::string api_path, mode_t mode) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto res = check_parent_access(api_path, W_OK | X_OK); auto res = check_parent_access(api_path, W_OK | X_OK);
if (res != api_error::success) { if (res != api_error::success) {
@ -759,8 +749,9 @@ auto fuse_drive::release_impl(std::string /*api_path*/,
return api_error::success; return api_error::success;
} }
auto fuse_drive::releasedir_impl( auto fuse_drive::releasedir_impl(std::string /*api_path*/,
std::string /*api_path*/, struct fuse_file_info *file_info) -> api_error { struct fuse_file_info *file_info)
-> api_error {
auto iter = directory_cache_->get_directory(file_info->fh); auto iter = directory_cache_->get_directory(file_info->fh);
if (iter == nullptr) { if (iter == nullptr) {
return api_error::invalid_handle; return api_error::invalid_handle;
@ -778,8 +769,8 @@ auto fuse_drive::rename_directory(const std::string &from_api_path,
} }
auto fuse_drive::rename_file(const std::string &from_api_path, auto fuse_drive::rename_file(const std::string &from_api_path,
const std::string &to_api_path, const std::string &to_api_path, bool overwrite)
bool overwrite) -> int { -> int {
const auto res = fm_->rename_file(from_api_path, to_api_path, overwrite); const auto res = fm_->rename_file(from_api_path, to_api_path, overwrite);
errno = std::abs(utils::from_api_error(res)); errno = std::abs(utils::from_api_error(res));
return (res == api_error::success) ? 0 : -1; return (res == api_error::success) ? 0 : -1;
@ -789,8 +780,8 @@ auto fuse_drive::rename_file(const std::string &from_api_path,
auto fuse_drive::rename_impl(std::string from_api_path, std::string to_api_path, auto fuse_drive::rename_impl(std::string from_api_path, std::string to_api_path,
unsigned int /*flags*/) -> api_error { unsigned int /*flags*/) -> api_error {
#else #else
auto fuse_drive::rename_impl(std::string from_api_path, auto fuse_drive::rename_impl(std::string from_api_path, std::string to_api_path)
std::string to_api_path) -> api_error { -> api_error {
#endif #endif
auto res = check_parent_access(to_api_path, W_OK | X_OK); auto res = check_parent_access(to_api_path, W_OK | X_OK);
if (res != api_error::success) { if (res != api_error::success) {
@ -897,15 +888,15 @@ auto fuse_drive::getxattr_impl(std::string api_path, const char *name,
} }
#else // __APPLE__ #else // __APPLE__
auto fuse_drive::getxattr_impl(std::string api_path, const char *name, auto fuse_drive::getxattr_impl(std::string api_path, const char *name,
char *value, size_t size, char *value, size_t size, int &attribute_size)
int &attribute_size) -> api_error { -> api_error {
return getxattr_common(api_path, name, value, size, attribute_size, nullptr); return getxattr_common(api_path, name, value, size, attribute_size, nullptr);
} }
#endif // __APPLE__ #endif // __APPLE__
auto fuse_drive::listxattr_impl(std::string api_path, char *buffer, size_t size, auto fuse_drive::listxattr_impl(std::string api_path, char *buffer, size_t size,
int &required_size, int &required_size, bool &return_size)
bool &return_size) -> api_error { -> api_error {
const auto check_size = (size == 0); const auto check_size = (size == 0);
auto res = check_parent_access(api_path, X_OK); auto res = check_parent_access(api_path, X_OK);
@ -944,8 +935,8 @@ auto fuse_drive::listxattr_impl(std::string api_path, char *buffer, size_t size,
return res; return res;
} }
auto fuse_drive::removexattr_impl(std::string api_path, auto fuse_drive::removexattr_impl(std::string api_path, const char *name)
const char *name) -> api_error { -> api_error {
std::string attribute_name; std::string attribute_name;
#if defined(__APPLE__) #if defined(__APPLE__)
auto res = parse_xattr_parameters(name, 0, attribute_name, api_path); auto res = parse_xattr_parameters(name, 0, attribute_name, api_path);
@ -973,8 +964,8 @@ auto fuse_drive::setxattr_impl(std::string api_path, const char *name,
uint32_t position) -> api_error { uint32_t position) -> api_error {
#else // __APPLE__ #else // __APPLE__
auto fuse_drive::setxattr_impl(std::string api_path, const char *name, auto fuse_drive::setxattr_impl(std::string api_path, const char *name,
const char *value, size_t size, const char *value, size_t size, int flags)
int flags) -> api_error { -> api_error {
#endif #endif
std::string attribute_name; std::string attribute_name;
#if defined(__APPLE__) #if defined(__APPLE__)
@ -1039,9 +1030,7 @@ auto fuse_drive::setxattr_impl(std::string api_path, const char *name,
void fuse_drive::set_item_meta(const std::string &api_path, void fuse_drive::set_item_meta(const std::string &api_path,
const std::string &key, const std::string &key,
const std::string &value) { const std::string &value) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto res = provider_.set_item_meta(api_path, key, value); auto res = provider_.set_item_meta(api_path, key, value);
if (res != api_error::success) { if (res != api_error::success) {
@ -1051,8 +1040,8 @@ void fuse_drive::set_item_meta(const std::string &api_path,
} }
#if defined(__APPLE__) #if defined(__APPLE__)
auto fuse_drive::setattr_x_impl(std::string api_path, auto fuse_drive::setattr_x_impl(std::string api_path, struct setattr_x *attr)
struct setattr_x *attr) -> api_error { -> api_error {
bool exists{}; bool exists{};
auto res = provider_.is_file(api_path, exists); auto res = provider_.is_file(api_path, exists);
if (res != api_error::success) { if (res != api_error::success) {
@ -1151,8 +1140,9 @@ auto fuse_drive::setattr_x_impl(std::string api_path,
return api_error::success; return api_error::success;
} }
auto fuse_drive::setbkuptime_impl( auto fuse_drive::setbkuptime_impl(std::string api_path,
std::string api_path, const struct timespec *bkuptime) -> api_error { const struct timespec *bkuptime)
-> api_error {
return check_and_perform( return check_and_perform(
api_path, X_OK, [&](api_meta_map &meta) -> api_error { api_path, X_OK, [&](api_meta_map &meta) -> api_error {
const auto nanos = bkuptime->tv_nsec + const auto nanos = bkuptime->tv_nsec +
@ -1188,8 +1178,8 @@ auto fuse_drive::setvolname_impl(const char * /*volname*/) -> api_error {
return api_error::success; return api_error::success;
} }
auto fuse_drive::statfs_x_impl(std::string /*api_path*/, auto fuse_drive::statfs_x_impl(std::string /*api_path*/, struct statfs *stbuf)
struct statfs *stbuf) -> api_error { -> api_error {
if (statfs(&config_.get_cache_directory()[0], stbuf) != 0) { if (statfs(&config_.get_cache_directory()[0], stbuf) != 0) {
return api_error::os_error; return api_error::os_error;
} }
@ -1214,8 +1204,8 @@ auto fuse_drive::statfs_x_impl(std::string /*api_path*/,
return api_error::success; return api_error::success;
} }
#else // __APPLE__ #else // __APPLE__
auto fuse_drive::statfs_impl(std::string /*api_path*/, auto fuse_drive::statfs_impl(std::string /*api_path*/, struct statvfs *stbuf)
struct statvfs *stbuf) -> api_error { -> api_error {
if (statvfs(config_.get_cache_directory().data(), stbuf) != 0) { if (statvfs(config_.get_cache_directory().data(), stbuf) != 0) {
return api_error::os_error; return api_error::os_error;
} }
@ -1296,8 +1286,8 @@ auto fuse_drive::utimens_impl(std::string api_path, const struct timespec tv[2],
struct fuse_file_info * /*file_info*/) struct fuse_file_info * /*file_info*/)
-> api_error { -> api_error {
#else #else
auto fuse_drive::utimens_impl(std::string api_path, auto fuse_drive::utimens_impl(std::string api_path, const struct timespec tv[2])
const struct timespec tv[2]) -> api_error { -> api_error {
#endif #endif
api_meta_map meta; api_meta_map meta;
auto res = provider_.get_item_meta(api_path, meta); auto res = provider_.get_item_meta(api_path, meta);
@ -1368,9 +1358,7 @@ auto fuse_drive::write_impl(std::string /*api_path*/
} }
void fuse_drive::update_accessed_time(const std::string &api_path) { void fuse_drive::update_accessed_time(const std::string &api_path) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (atime_enabled_) { if (atime_enabled_) {
auto res = provider_.set_item_meta( auto res = provider_.set_item_meta(

View File

@ -36,9 +36,7 @@ remote_client::remote_client(const app_config &config)
auto remote_client::fuse_access(const char *path, const std::int32_t &mask) auto remote_client::fuse_access(const char *path, const std::int32_t &mask)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -48,11 +46,9 @@ auto remote_client::fuse_access(const char *path, const std::int32_t &mask)
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_chflags(const char *path, auto remote_client::fuse_chflags(const char *path, std::uint32_t flags)
std::uint32_t flags) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -64,9 +60,7 @@ auto remote_client::fuse_chflags(const char *path,
auto remote_client::fuse_chmod(const char *path, const remote::file_mode &mode) auto remote_client::fuse_chmod(const char *path, const remote::file_mode &mode)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -79,9 +73,7 @@ auto remote_client::fuse_chmod(const char *path, const remote::file_mode &mode)
auto remote_client::fuse_chown(const char *path, const remote::user_id &uid, auto remote_client::fuse_chown(const char *path, const remote::user_id &uid,
const remote::group_id &gid) const remote::group_id &gid)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -93,9 +85,7 @@ auto remote_client::fuse_chown(const char *path, const remote::user_id &uid,
} }
auto remote_client::fuse_destroy() -> packet::error_type { auto remote_client::fuse_destroy() -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::uint32_t service_flags{}; std::uint32_t service_flags{};
return packet_client_.send(function_name, service_flags); return packet_client_.send(function_name, service_flags);
@ -114,12 +104,11 @@ std::int32_t &mode, const remote::file_offset &offset, const remote::file_offset
return packetClient_.send(function_name, request, service_flags); return packetClient_.send(function_name, request, service_flags);
}*/ }*/
auto remote_client::fuse_fgetattr( auto remote_client::fuse_fgetattr(const char *path, remote::stat &st,
const char *path, remote::stat &st, bool &directory, bool &directory,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -143,12 +132,11 @@ auto remote_client::fuse_fgetattr(
return ret; return ret;
} }
auto remote_client::fuse_fsetattr_x( auto remote_client::fuse_fsetattr_x(const char *path,
const char *path, const remote::setattr_x &attr, const remote::setattr_x &attr,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -162,9 +150,7 @@ auto remote_client::fuse_fsetattr_x(
auto remote_client::fuse_fsync(const char *path, const std::int32_t &datasync, auto remote_client::fuse_fsync(const char *path, const std::int32_t &datasync,
const remote::file_handle &handle) const remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -175,12 +161,11 @@ auto remote_client::fuse_fsync(const char *path, const std::int32_t &datasync,
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_ftruncate( auto remote_client::fuse_ftruncate(const char *path,
const char *path, const remote::file_offset &size, const remote::file_offset &size,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -193,9 +178,7 @@ auto remote_client::fuse_ftruncate(
auto remote_client::fuse_getattr(const char *path, remote::stat &st, auto remote_client::fuse_getattr(const char *path, remote::stat &st,
bool &directory) -> packet::error_type { bool &directory) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -262,12 +245,11 @@ response.CurrentPointer(), static_cast<std::size_t>(size2));
return ret; return ret;
}*/ }*/
auto remote_client::fuse_getxtimes( auto remote_client::fuse_getxtimes(const char *path,
const char *path, remote::file_time &bkuptime, remote::file_time &bkuptime,
remote::file_time &crtime) -> packet::error_type { remote::file_time &crtime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -285,9 +267,7 @@ auto remote_client::fuse_getxtimes(
} }
auto remote_client::fuse_init() -> packet::error_type { auto remote_client::fuse_init() -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::uint32_t service_flags{}; std::uint32_t service_flags{};
return packet_client_.send(function_name, service_flags); return packet_client_.send(function_name, service_flags);
@ -316,9 +296,7 @@ static_cast<std::size_t>(size2));
auto remote_client::fuse_mkdir(const char *path, const remote::file_mode &mode) auto remote_client::fuse_mkdir(const char *path, const remote::file_mode &mode)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -330,9 +308,7 @@ auto remote_client::fuse_mkdir(const char *path, const remote::file_mode &mode)
auto remote_client::fuse_opendir(const char *path, remote::file_handle &handle) auto remote_client::fuse_opendir(const char *path, remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -352,9 +328,7 @@ auto remote_client::fuse_create(const char *path, const remote::file_mode &mode,
const remote::open_flags &flags, const remote::open_flags &flags,
remote::file_handle &handle) remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -375,9 +349,7 @@ auto remote_client::fuse_create(const char *path, const remote::file_mode &mode,
auto remote_client::fuse_open(const char *path, const remote::open_flags &flags, auto remote_client::fuse_open(const char *path, const remote::open_flags &flags,
remote::file_handle &handle) remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -394,13 +366,12 @@ auto remote_client::fuse_open(const char *path, const remote::open_flags &flags,
return ret; return ret;
} }
auto remote_client::fuse_read( auto remote_client::fuse_read(const char *path, char *buffer,
const char *path, char *buffer, const remote::file_size &read_size, const remote::file_size &read_size,
const remote::file_offset &read_offset, const remote::file_offset &read_offset,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -419,11 +390,9 @@ auto remote_client::fuse_read(
return ret; return ret;
} }
auto remote_client::fuse_rename(const char *from, auto remote_client::fuse_rename(const char *from, const char *to)
const char *to) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(from); request.encode(from);
@ -433,13 +402,12 @@ auto remote_client::fuse_rename(const char *from,
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_write( auto remote_client::fuse_write(const char *path, const char *buffer,
const char *path, const char *buffer, const remote::file_size &write_size, const remote::file_size &write_size,
const remote::file_offset &write_offset, const remote::file_offset &write_offset,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
if (write_size > std::numeric_limits<std::size_t>::max()) { if (write_size > std::numeric_limits<std::size_t>::max()) {
return -ERANGE; return -ERANGE;
@ -456,13 +424,12 @@ auto remote_client::fuse_write(
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_write_base64( auto remote_client::fuse_write_base64(const char *path, const char *buffer,
const char *path, const char *buffer, const remote::file_size &write_size, const remote::file_size &write_size,
const remote::file_offset &write_offset, const remote::file_offset &write_offset,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
if (write_size > std::numeric_limits<std::size_t>::max()) { if (write_size > std::numeric_limits<std::size_t>::max()) {
return -ERANGE; return -ERANGE;
@ -483,9 +450,7 @@ auto remote_client::fuse_readdir(const char *path,
const remote::file_offset &offset, const remote::file_offset &offset,
const remote::file_handle &handle, const remote::file_handle &handle,
std::string &item_path) -> packet::error_type { std::string &item_path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -503,11 +468,10 @@ auto remote_client::fuse_readdir(const char *path,
return ret; return ret;
} }
auto remote_client::fuse_release( auto remote_client::fuse_release(const char *path,
const char *path, const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -517,11 +481,10 @@ auto remote_client::fuse_release(
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_releasedir( auto remote_client::fuse_releasedir(const char *path,
const char *path, const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -540,9 +503,7 @@ request.Encode(name);
}*/ }*/
auto remote_client::fuse_rmdir(const char *path) -> packet::error_type { auto remote_client::fuse_rmdir(const char *path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -553,9 +514,7 @@ auto remote_client::fuse_rmdir(const char *path) -> packet::error_type {
auto remote_client::fuse_setattr_x(const char *path, remote::setattr_x &attr) auto remote_client::fuse_setattr_x(const char *path, remote::setattr_x &attr)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -565,11 +524,10 @@ auto remote_client::fuse_setattr_x(const char *path, remote::setattr_x &attr)
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_setbkuptime( auto remote_client::fuse_setbkuptime(const char *path,
const char *path, const remote::file_time &bkuptime) -> packet::error_type { const remote::file_time &bkuptime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -579,11 +537,10 @@ auto remote_client::fuse_setbkuptime(
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_setchgtime( auto remote_client::fuse_setchgtime(const char *path,
const char *path, const remote::file_time &chgtime) -> packet::error_type { const remote::file_time &chgtime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -593,11 +550,10 @@ auto remote_client::fuse_setchgtime(
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::fuse_setcrtime( auto remote_client::fuse_setcrtime(const char *path,
const char *path, const remote::file_time &crtime) -> packet::error_type { const remote::file_time &crtime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -608,9 +564,7 @@ auto remote_client::fuse_setcrtime(
} }
auto remote_client::fuse_setvolname(const char *volname) -> packet::error_type { auto remote_client::fuse_setvolname(const char *volname) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(volname); request.encode(volname);
@ -651,9 +605,7 @@ request.encode(flags); request.encode(position);
auto remote_client::fuse_statfs(const char *path, std::uint64_t frsize, auto remote_client::fuse_statfs(const char *path, std::uint64_t frsize,
remote::statfs &st) -> packet::error_type { remote::statfs &st) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -672,9 +624,7 @@ auto remote_client::fuse_statfs(const char *path, std::uint64_t frsize,
auto remote_client::fuse_statfs_x(const char *path, std::uint64_t bsize, auto remote_client::fuse_statfs_x(const char *path, std::uint64_t bsize,
remote::statfs_x &st) -> packet::error_type { remote::statfs_x &st) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -691,11 +641,10 @@ auto remote_client::fuse_statfs_x(const char *path, std::uint64_t bsize,
return ret; return ret;
} }
auto remote_client::fuse_truncate( auto remote_client::fuse_truncate(const char *path,
const char *path, const remote::file_offset &size) -> packet::error_type { const remote::file_offset &size)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -706,9 +655,7 @@ auto remote_client::fuse_truncate(
} }
auto remote_client::fuse_unlink(const char *path) -> packet::error_type { auto remote_client::fuse_unlink(const char *path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -718,11 +665,9 @@ auto remote_client::fuse_unlink(const char *path) -> packet::error_type {
} }
auto remote_client::fuse_utimens(const char *path, const remote::file_time *tv, auto remote_client::fuse_utimens(const char *path, const remote::file_time *tv,
std::uint64_t op0, std::uint64_t op0, std::uint64_t op1)
std::uint64_t op1) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -734,11 +679,10 @@ auto remote_client::fuse_utimens(const char *path, const remote::file_time *tv,
return packet_client_.send(function_name, request, service_flags); return packet_client_.send(function_name, request, service_flags);
} }
auto remote_client::json_create_directory_snapshot( auto remote_client::json_create_directory_snapshot(const std::string &path,
const std::string &path, json &json_data) -> packet::error_type { json &json_data)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -757,9 +701,7 @@ auto remote_client::json_create_directory_snapshot(
auto remote_client::json_read_directory_snapshot( auto remote_client::json_read_directory_snapshot(
const std::string &path, const remote::file_handle &handle, const std::string &path, const remote::file_handle &handle,
std::uint32_t page, json &json_data) -> packet::error_type { std::uint32_t page, json &json_data) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -778,11 +720,9 @@ auto remote_client::json_read_directory_snapshot(
} }
auto remote_client::json_release_directory_snapshot( auto remote_client::json_release_directory_snapshot(
const std::string &path, const std::string &path, const remote::file_handle &handle)
const remote::file_handle &handle) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);

View File

@ -40,8 +40,8 @@
#include "utils/utils.hpp" #include "utils/utils.hpp"
namespace repertory::remote_fuse { namespace repertory::remote_fuse {
auto remote_fuse_drive::access_impl(std::string api_path, auto remote_fuse_drive::access_impl(std::string api_path, int mask)
int mask) -> api_error { -> api_error {
return utils::to_api_error( return utils::to_api_error(
remote_instance_->fuse_access(api_path.c_str(), mask)); remote_instance_->fuse_access(api_path.c_str(), mask));
} }
@ -59,8 +59,8 @@ auto remote_fuse_drive::chmod_impl(std::string api_path, mode_t mode,
struct fuse_file_info * /*f_info*/) struct fuse_file_info * /*f_info*/)
-> api_error { -> api_error {
#else #else
auto remote_fuse_drive::chmod_impl(std::string api_path, auto remote_fuse_drive::chmod_impl(std::string api_path, mode_t mode)
mode_t mode) -> api_error { -> api_error {
#endif #endif
return utils::to_api_error(remote_instance_->fuse_chmod( return utils::to_api_error(remote_instance_->fuse_chmod(
api_path.c_str(), static_cast<remote::file_mode>(mode))); api_path.c_str(), static_cast<remote::file_mode>(mode)));
@ -71,8 +71,8 @@ auto remote_fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid,
struct fuse_file_info * /*f_info*/) struct fuse_file_info * /*f_info*/)
-> api_error { -> api_error {
#else #else
auto remote_fuse_drive::chown_impl(std::string api_path, uid_t uid, auto remote_fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid)
gid_t gid) -> api_error { -> api_error {
#endif #endif
return utils::to_api_error( return utils::to_api_error(
remote_instance_->fuse_chown(api_path.c_str(), uid, gid)); remote_instance_->fuse_chown(api_path.c_str(), uid, gid));
@ -88,9 +88,7 @@ auto remote_fuse_drive::create_impl(std::string api_path, mode_t mode,
} }
void remote_fuse_drive::destroy_impl(void *ptr) { void remote_fuse_drive::destroy_impl(void *ptr) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
event_system::instance().raise<drive_unmount_pending>(get_mount_location()); event_system::instance().raise<drive_unmount_pending>(get_mount_location());
@ -118,9 +116,10 @@ void remote_fuse_drive::destroy_impl(void *ptr) {
fuse_base::destroy_impl(ptr); fuse_base::destroy_impl(ptr);
} }
auto remote_fuse_drive::fgetattr_impl( auto remote_fuse_drive::fgetattr_impl(std::string api_path,
std::string api_path, struct stat *unix_st, struct stat *unix_st,
struct fuse_file_info *f_info) -> api_error { struct fuse_file_info *f_info)
-> api_error {
remote::stat r_stat{}; remote::stat r_stat{};
auto directory = false; auto directory = false;
@ -181,8 +180,8 @@ auto remote_fuse_drive::getattr_impl(std::string api_path, struct stat *unix_st,
struct fuse_file_info * /*f_info*/) struct fuse_file_info * /*f_info*/)
-> api_error { -> api_error {
#else #else
auto remote_fuse_drive::getattr_impl(std::string api_path, auto remote_fuse_drive::getattr_impl(std::string api_path, struct stat *unix_st)
struct stat *unix_st) -> api_error { -> api_error {
#endif #endif
bool directory = false; bool directory = false;
remote::stat r_stat{}; remote::stat r_stat{};
@ -227,9 +226,7 @@ auto remote_fuse_drive::init_impl(struct fuse_conn_info *conn,
#else #else
auto remote_fuse_drive::init_impl(struct fuse_conn_info *conn) -> void * { auto remote_fuse_drive::init_impl(struct fuse_conn_info *conn) -> void * {
#endif #endif
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto *ret = fuse_base::init_impl(conn, cfg); auto *ret = fuse_base::init_impl(conn, cfg);
@ -267,8 +264,8 @@ auto remote_fuse_drive::init_impl(struct fuse_conn_info *conn) -> void * {
return ret; return ret;
} }
auto remote_fuse_drive::mkdir_impl(std::string api_path, auto remote_fuse_drive::mkdir_impl(std::string api_path, mode_t mode)
mode_t mode) -> api_error { -> api_error {
return utils::to_api_error(remote_instance_->fuse_mkdir( return utils::to_api_error(remote_instance_->fuse_mkdir(
api_path.c_str(), static_cast<remote::file_mode>(mode))); api_path.c_str(), static_cast<remote::file_mode>(mode)));
} }
@ -290,8 +287,9 @@ auto remote_fuse_drive::open_impl(std::string api_path,
f_info->fh)); f_info->fh));
} }
auto remote_fuse_drive::opendir_impl( auto remote_fuse_drive::opendir_impl(std::string api_path,
std::string api_path, struct fuse_file_info *f_info) -> api_error { struct fuse_file_info *f_info)
-> api_error {
return utils::to_api_error( return utils::to_api_error(
remote_instance_->fuse_opendir(api_path.c_str(), f_info->fh)); remote_instance_->fuse_opendir(api_path.c_str(), f_info->fh));
@ -380,14 +378,18 @@ auto remote_fuse_drive::read_impl(std::string api_path, char *buffer,
} }
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto remote_fuse_drive::readdir_impl( auto remote_fuse_drive::readdir_impl(std::string api_path, void *buf,
std::string api_path, void *buf, fuse_fill_dir_t fuse_fill_dir, fuse_fill_dir_t fuse_fill_dir,
off_t offset, struct fuse_file_info *f_info, off_t offset,
fuse_readdir_flags /*flags*/) -> api_error { struct fuse_file_info *f_info,
fuse_readdir_flags /*flags*/)
-> api_error {
#else #else
auto remote_fuse_drive::readdir_impl( auto remote_fuse_drive::readdir_impl(std::string api_path, void *buf,
std::string api_path, void *buf, fuse_fill_dir_t fuse_fill_dir, fuse_fill_dir_t fuse_fill_dir,
off_t offset, struct fuse_file_info *f_info) -> api_error { off_t offset,
struct fuse_file_info *f_info)
-> api_error {
#endif #endif
std::string item_path; std::string item_path;
int res = 0; int res = 0;
@ -415,14 +417,16 @@ auto remote_fuse_drive::readdir_impl(
return utils::to_api_error(res); return utils::to_api_error(res);
} }
auto remote_fuse_drive::release_impl( auto remote_fuse_drive::release_impl(std::string api_path,
std::string api_path, struct fuse_file_info *f_info) -> api_error { struct fuse_file_info *f_info)
-> api_error {
return utils::to_api_error( return utils::to_api_error(
remote_instance_->fuse_release(api_path.c_str(), f_info->fh)); remote_instance_->fuse_release(api_path.c_str(), f_info->fh));
} }
auto remote_fuse_drive::releasedir_impl( auto remote_fuse_drive::releasedir_impl(std::string api_path,
std::string api_path, struct fuse_file_info *f_info) -> api_error { struct fuse_file_info *f_info)
-> api_error {
return utils::to_api_error( return utils::to_api_error(
remote_instance_->fuse_releasedir(api_path.c_str(), f_info->fh)); remote_instance_->fuse_releasedir(api_path.c_str(), f_info->fh));
} }
@ -519,8 +523,8 @@ api_error remote_fuse_drive::statfs_x_impl(std::string api_path,
return utils::to_api_error(res); return utils::to_api_error(res);
} }
#else // __APPLE__ #else // __APPLE__
auto remote_fuse_drive::statfs_impl(std::string api_path, auto remote_fuse_drive::statfs_impl(std::string api_path, struct statvfs *stbuf)
struct statvfs *stbuf) -> api_error { -> api_error {
auto res = statvfs(config_.get_data_directory().c_str(), stbuf); auto res = statvfs(config_.get_data_directory().c_str(), stbuf);
if (res == 0) { if (res == 0) {
remote::statfs r_stat{}; remote::statfs r_stat{};
@ -547,8 +551,8 @@ auto remote_fuse_drive::truncate_impl(std::string api_path, off_t size,
struct fuse_file_info * /*f_info*/) struct fuse_file_info * /*f_info*/)
-> api_error { -> api_error {
#else #else
auto remote_fuse_drive::truncate_impl(std::string api_path, auto remote_fuse_drive::truncate_impl(std::string api_path, off_t size)
off_t size) -> api_error { -> api_error {
#endif #endif
return utils::to_api_error(remote_instance_->fuse_truncate( return utils::to_api_error(remote_instance_->fuse_truncate(
api_path.c_str(), static_cast<remote::file_offset>(size))); api_path.c_str(), static_cast<remote::file_offset>(size)));
@ -559,9 +563,10 @@ auto remote_fuse_drive::unlink_impl(std::string api_path) -> api_error {
} }
#if FUSE_USE_VERSION >= 30 #if FUSE_USE_VERSION >= 30
auto remote_fuse_drive::utimens_impl( auto remote_fuse_drive::utimens_impl(std::string api_path,
std::string api_path, const struct timespec tv[2], const struct timespec tv[2],
struct fuse_file_info * /*f_info*/) -> api_error { struct fuse_file_info * /*f_info*/)
-> api_error {
#else #else
auto remote_fuse_drive::utimens_impl(std::string api_path, auto remote_fuse_drive::utimens_impl(std::string api_path,
const struct timespec tv[2]) -> api_error { const struct timespec tv[2]) -> api_error {

View File

@ -112,9 +112,7 @@ void remote_server::populate_file_info(const std::string &api_path,
const UINT64 &file_size, const UINT64 &file_size,
const UINT32 &attributes, const UINT32 &attributes,
remote::file_info &file_info) { remote::file_info &file_info) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
api_meta_map meta{}; api_meta_map meta{};
const auto res = drive_.get_item_meta(api_path, meta); const auto res = drive_.get_item_meta(api_path, meta);
@ -199,22 +197,17 @@ void remote_server::populate_stat(const struct stat64 &unix_st,
auto remote_server::fuse_access(const char *path, const std::int32_t &mask) auto remote_server::fuse_access(const char *path, const std::int32_t &mask)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path);
const auto res = access(file_path.c_str(), mask); const auto res = access(file_path.c_str(), mask);
auto ret = ((res < 0) ? -errno : 0); auto ret = ((res < 0) ? -errno : 0);
RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, file_path, ret); RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, file_path, ret);
return ret; return ret;
} }
auto remote_server::fuse_chflags(const char *path, auto remote_server::fuse_chflags(const char *path, std::uint32_t flags)
std::uint32_t flags) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -234,9 +227,7 @@ auto remote_server::fuse_chflags(const char *path,
auto remote_server::fuse_chmod(const char *path, const remote::file_mode &mode) auto remote_server::fuse_chmod(const char *path, const remote::file_mode &mode)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = chmod(file_path.c_str(), mode); const auto res = chmod(file_path.c_str(), mode);
@ -248,9 +239,7 @@ auto remote_server::fuse_chmod(const char *path, const remote::file_mode &mode)
auto remote_server::fuse_chown(const char *path, const remote::user_id &uid, auto remote_server::fuse_chown(const char *path, const remote::user_id &uid,
const remote::group_id &gid) const remote::group_id &gid)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = chown(file_path.c_str(), uid, gid); const auto res = chown(file_path.c_str(), uid, gid);
@ -263,9 +252,7 @@ auto remote_server::fuse_create(const char *path, const remote::file_mode &mode,
const remote::open_flags &flags, const remote::open_flags &flags,
remote::file_handle &handle) remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = const auto res =
@ -282,9 +269,7 @@ auto remote_server::fuse_create(const char *path, const remote::file_mode &mode,
} }
auto remote_server::fuse_destroy() -> packet::error_type { auto remote_server::fuse_destroy() -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, "", 0); RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, "", 0);
return 0; return 0;
@ -328,12 +313,11 @@ length); ret = ((res < 0) ? -errno : 0); #endif
return ret; return ret;
}*/ }*/
auto remote_server::fuse_fgetattr( auto remote_server::fuse_fgetattr(const char *path, remote::stat &r_stat,
const char *path, remote::stat &r_stat, bool &directory, bool &directory,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
r_stat = {}; r_stat = {};
@ -354,12 +338,11 @@ auto remote_server::fuse_fgetattr(
return ret; return ret;
} }
auto remote_server::fuse_fsetattr_x( auto remote_server::fuse_fsetattr_x(const char *path,
const char *path, const remote::setattr_x &attr, const remote::setattr_x &attr,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -454,9 +437,7 @@ auto remote_server::fuse_fsetattr_x(
auto remote_server::fuse_fsync(const char *path, const std::int32_t &datasync, auto remote_server::fuse_fsync(const char *path, const std::int32_t &datasync,
const remote::file_handle &handle) const remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -476,12 +457,11 @@ auto remote_server::fuse_fsync(const char *path, const std::int32_t &datasync,
return ret; return ret;
} }
auto remote_server::fuse_ftruncate( auto remote_server::fuse_ftruncate(const char *path,
const char *path, const remote::file_offset &size, const remote::file_offset &size,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -498,9 +478,7 @@ auto remote_server::fuse_ftruncate(
auto remote_server::fuse_getattr(const char *path, remote::stat &r_stat, auto remote_server::fuse_getattr(const char *path, remote::stat &r_stat,
bool &directory) -> packet::error_type { bool &directory) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(api_path); const auto file_path = construct_path(api_path);
@ -575,12 +553,11 @@ STATUS_NOT_IMPLEMENTED; #endif RAISE_REMOTE_FUSE_SERVER_EVENT(function_name,
file_path, ret); return ret; file_path, ret); return ret;
}*/ }*/
auto remote_server::fuse_getxtimes( auto remote_server::fuse_getxtimes(const char *path,
const char *path, remote::file_time &bkuptime, remote::file_time &bkuptime,
remote::file_time &crtime) -> packet::error_type { remote::file_time &crtime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -610,9 +587,7 @@ auto remote_server::fuse_getxtimes(
} }
auto remote_server::fuse_init() -> packet::error_type { auto remote_server::fuse_init() -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, "", 0); RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, "", 0);
return 0; return 0;
@ -630,9 +605,7 @@ auto res = listxattr(file_path.c_str(), buffer, size); #endif auto ret = ((res <
auto remote_server::fuse_mkdir(const char *path, const remote::file_mode &mode) auto remote_server::fuse_mkdir(const char *path, const remote::file_mode &mode)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = mkdir(file_path.c_str(), mode); const auto res = mkdir(file_path.c_str(), mode);
@ -644,9 +617,7 @@ auto remote_server::fuse_mkdir(const char *path, const remote::file_mode &mode)
auto remote_server::fuse_open(const char *path, const remote::open_flags &flags, auto remote_server::fuse_open(const char *path, const remote::open_flags &flags,
remote::file_handle &handle) remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = open(file_path.c_str(), const auto res = open(file_path.c_str(),
@ -662,9 +633,7 @@ auto remote_server::fuse_open(const char *path, const remote::open_flags &flags,
auto remote_server::fuse_opendir(const char *path, remote::file_handle &handle) auto remote_server::fuse_opendir(const char *path, remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -687,13 +656,12 @@ auto remote_server::fuse_opendir(const char *path, remote::file_handle &handle)
return ret; return ret;
} }
auto remote_server::fuse_read( auto remote_server::fuse_read(const char *path, char *buffer,
const char *path, char *buffer, const remote::file_size &read_size, const remote::file_size &read_size,
const remote::file_offset &read_offset, const remote::file_offset &read_offset,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto &data = *reinterpret_cast<data_buffer *>(buffer); auto &data = *reinterpret_cast<data_buffer *>(buffer);
@ -713,11 +681,9 @@ auto remote_server::fuse_read(
return static_cast<packet::error_type>(ret); return static_cast<packet::error_type>(ret);
} }
auto remote_server::fuse_rename(const char *from, auto remote_server::fuse_rename(const char *from, const char *to)
const char *to) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto from_path = utils::path::combine(mount_location_, {from}); const auto from_path = utils::path::combine(mount_location_, {from});
const auto to_path = utils::path::combine(mount_location_, {to}); const auto to_path = utils::path::combine(mount_location_, {to});
@ -732,9 +698,7 @@ auto remote_server::fuse_readdir(const char *path,
const remote::file_offset &offset, const remote::file_offset &offset,
const remote::file_handle &handle, const remote::file_handle &handle,
std::string &item_path) -> packet::error_type { std::string &item_path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto res = 0; auto res = 0;
@ -756,11 +720,10 @@ auto remote_server::fuse_readdir(const char *path,
return ret; return ret;
} }
auto remote_server::fuse_release( auto remote_server::fuse_release(const char *path,
const char *path, const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet::error_type ret = 0; packet::error_type ret = 0;
@ -776,11 +739,10 @@ auto remote_server::fuse_release(
return ret; return ret;
} }
auto remote_server::fuse_releasedir( auto remote_server::fuse_releasedir(const char *path,
const char *path, const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -801,9 +763,7 @@ removexattr(file_path.c_str(), name); #endif auto ret = ((res < 0) ? -errno :
}*/ }*/
auto remote_server::fuse_rmdir(const char *path) -> packet::error_type { auto remote_server::fuse_rmdir(const char *path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = rmdir(file_path.c_str()); const auto res = rmdir(file_path.c_str());
@ -823,9 +783,7 @@ auto remote_server::fuse_rmdir(const char *path) -> packet::error_type {
auto remote_server::fuse_setattr_x(const char *path, remote::setattr_x &attr) auto remote_server::fuse_setattr_x(const char *path, remote::setattr_x &attr)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto ret = fuse_fsetattr_x( auto ret = fuse_fsetattr_x(
@ -834,11 +792,10 @@ auto remote_server::fuse_setattr_x(const char *path, remote::setattr_x &attr)
return ret; return ret;
} }
auto remote_server::fuse_setbkuptime( auto remote_server::fuse_setbkuptime(const char *path,
const char *path, const remote::file_time &bkuptime) -> packet::error_type { const remote::file_time &bkuptime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -856,11 +813,10 @@ auto remote_server::fuse_setbkuptime(
return ret; return ret;
} }
auto remote_server::fuse_setchgtime( auto remote_server::fuse_setchgtime(const char *path,
const char *path, const remote::file_time &chgtime) -> packet::error_type { const remote::file_time &chgtime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -878,11 +834,10 @@ auto remote_server::fuse_setchgtime(
return ret; return ret;
} }
auto remote_server::fuse_setcrtime( auto remote_server::fuse_setcrtime(const char *path,
const char *path, const remote::file_time &crtime) -> packet::error_type { const remote::file_time &crtime)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -901,9 +856,7 @@ auto remote_server::fuse_setcrtime(
} }
auto remote_server::fuse_setvolname(const char *volname) -> packet::error_type { auto remote_server::fuse_setvolname(const char *volname) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, volname, 0); RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, volname, 0);
return 0; return 0;
@ -931,9 +884,7 @@ res = setxattr(file_path.c_str(), name, value, size, position, flags); auto ret
auto remote_server::fuse_statfs(const char *path, std::uint64_t frsize, auto remote_server::fuse_statfs(const char *path, std::uint64_t frsize,
remote::statfs &r_stat) -> packet::error_type { remote::statfs &r_stat) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -954,9 +905,7 @@ auto remote_server::fuse_statfs(const char *path, std::uint64_t frsize,
auto remote_server::fuse_statfs_x(const char *path, std::uint64_t bsize, auto remote_server::fuse_statfs_x(const char *path, std::uint64_t bsize,
remote::statfs_x &r_stat) remote::statfs_x &r_stat)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -978,11 +927,10 @@ auto remote_server::fuse_statfs_x(const char *path, std::uint64_t bsize,
return 0; return 0;
} }
auto remote_server::fuse_truncate( auto remote_server::fuse_truncate(const char *path,
const char *path, const remote::file_offset &size) -> packet::error_type { const remote::file_offset &size)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = truncate(file_path.c_str(), static_cast<off_t>(size)); const auto res = truncate(file_path.c_str(), static_cast<off_t>(size));
@ -992,9 +940,7 @@ auto remote_server::fuse_truncate(
} }
auto remote_server::fuse_unlink(const char *path) -> packet::error_type { auto remote_server::fuse_unlink(const char *path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto res = unlink(file_path.c_str()); const auto res = unlink(file_path.c_str());
@ -1004,11 +950,9 @@ auto remote_server::fuse_unlink(const char *path) -> packet::error_type {
} }
auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv, auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv,
std::uint64_t op0, std::uint64_t op0, std::uint64_t op1)
std::uint64_t op1) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -1034,13 +978,12 @@ auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv,
return ret; return ret;
} }
auto remote_server::fuse_write( auto remote_server::fuse_write(const char *path, const char *buffer,
const char *path, const char *buffer, const remote::file_size &write_size, const remote::file_size &write_size,
const remote::file_offset &write_offset, const remote::file_offset &write_offset,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -1069,11 +1012,9 @@ auto remote_server::fuse_write_base64(
} }
// WinFSP Layer // WinFSP Layer
auto remote_server::winfsp_can_delete(PVOID file_desc, auto remote_server::winfsp_can_delete(PVOID file_desc, PWSTR file_name)
PWSTR file_name) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto relative_path = utils::string::to_utf8(file_name); const auto relative_path = utils::string::to_utf8(file_name);
const auto file_path = construct_path(relative_path); const auto file_path = construct_path(relative_path);
@ -1098,11 +1039,9 @@ auto remote_server::winfsp_can_delete(PVOID file_desc,
} }
auto remote_server::winfsp_cleanup(PVOID /*file_desc*/, PWSTR file_name, auto remote_server::winfsp_cleanup(PVOID /*file_desc*/, PWSTR file_name,
UINT32 flags, UINT32 flags, BOOLEAN &was_closed)
BOOLEAN &was_closed) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto relative_path = utils::string::to_utf8(file_name); const auto relative_path = utils::string::to_utf8(file_name);
const auto file_path = construct_path(relative_path); const auto file_path = construct_path(relative_path);
@ -1159,9 +1098,7 @@ auto remote_server::winfsp_cleanup(PVOID /*file_desc*/, PWSTR file_name,
} }
auto remote_server::winfsp_close(PVOID file_desc) -> packet::error_type { auto remote_server::winfsp_close(PVOID file_desc) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string file_path; std::string file_path;
const auto handle = reinterpret_cast<remote::file_handle>(file_desc); const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
@ -1180,11 +1117,9 @@ auto remote_server::winfsp_create(PWSTR file_name, UINT32 create_options,
UINT32 granted_access, UINT32 attributes, UINT32 granted_access, UINT32 attributes,
UINT64 /*allocation_size*/, PVOID *file_desc, UINT64 /*allocation_size*/, PVOID *file_desc,
remote::file_info *file_info, remote::file_info *file_info,
std::string &normalized_name, std::string &normalized_name, BOOLEAN &exists)
BOOLEAN &exists) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto relative_path = utils::string::to_utf8(file_name); const auto relative_path = utils::string::to_utf8(file_name);
const auto file_path = construct_path(relative_path); const auto file_path = construct_path(relative_path);
@ -1233,9 +1168,7 @@ auto remote_server::winfsp_create(PWSTR file_name, UINT32 create_options,
auto remote_server::winfsp_flush(PVOID file_desc, remote::file_info *file_info) auto remote_server::winfsp_flush(PVOID file_desc, remote::file_info *file_info)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto handle = reinterpret_cast<remote::file_handle>(file_desc); const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
auto ret = static_cast<packet::error_type>( auto ret = static_cast<packet::error_type>(
@ -1255,11 +1188,10 @@ auto remote_server::winfsp_flush(PVOID file_desc, remote::file_info *file_info)
return ret; return ret;
} }
auto remote_server::winfsp_get_file_info( auto remote_server::winfsp_get_file_info(PVOID file_desc,
PVOID file_desc, remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto handle = reinterpret_cast<remote::file_handle>(file_desc); const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
auto ret = static_cast<packet::error_type>( auto ret = static_cast<packet::error_type>(
@ -1280,9 +1212,7 @@ auto remote_server::winfsp_get_security_by_name(
PWSTR file_name, PUINT32 attributes, PWSTR file_name, PUINT32 attributes,
std::uint64_t * /*security_descriptor_size*/, std::uint64_t * /*security_descriptor_size*/,
std::wstring & /*str_descriptor*/) -> packet::error_type { std::wstring & /*str_descriptor*/) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret = static_cast<packet::error_type>(STATUS_SUCCESS); auto ret = static_cast<packet::error_type>(STATUS_SUCCESS);
const auto file_path = construct_path(file_name); const auto file_path = construct_path(file_name);
@ -1303,12 +1233,11 @@ auto remote_server::winfsp_get_security_by_name(
return ret; return ret;
} }
auto remote_server::winfsp_get_volume_info( auto remote_server::winfsp_get_volume_info(UINT64 &total_size,
UINT64 &total_size, UINT64 &free_size, UINT64 &free_size,
std::string &volume_label) -> packet::error_type { std::string &volume_label)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
drive_.get_volume_info(total_size, free_size, volume_label); drive_.get_volume_info(total_size, free_size, volume_label);
RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, volume_label, STATUS_SUCCESS); RAISE_REMOTE_FUSE_SERVER_EVENT(function_name, volume_label, STATUS_SUCCESS);
@ -1317,22 +1246,19 @@ auto remote_server::winfsp_get_volume_info(
auto remote_server::winfsp_mounted(const std::wstring &location) auto remote_server::winfsp_mounted(const std::wstring &location)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_FUSE_SERVER_EVENT( RAISE_REMOTE_FUSE_SERVER_EVENT(
function_name, utils::string::to_utf8(location), STATUS_SUCCESS); function_name, utils::string::to_utf8(location), STATUS_SUCCESS);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
auto remote_server::winfsp_open( auto remote_server::winfsp_open(PWSTR file_name, UINT32 create_options,
PWSTR file_name, UINT32 create_options, UINT32 granted_access, UINT32 granted_access, PVOID *file_desc,
PVOID *file_desc, remote::file_info *file_info, remote::file_info *file_info,
std::string &normalized_name) -> packet::error_type { std::string &normalized_name)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto relative_path = utils::string::to_utf8(file_name); const auto relative_path = utils::string::to_utf8(file_name);
const auto file_path = construct_path(relative_path); const auto file_path = construct_path(relative_path);
@ -1367,13 +1293,12 @@ auto remote_server::winfsp_open(
return ret; return ret;
} }
auto remote_server::winfsp_overwrite( auto remote_server::winfsp_overwrite(PVOID file_desc, UINT32 attributes,
PVOID file_desc, UINT32 attributes, BOOLEAN replace_attributes, BOOLEAN replace_attributes,
UINT64 /*allocation_size*/, UINT64 /*allocation_size*/,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto handle = reinterpret_cast<remote::file_handle>(file_desc); const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
auto ret = static_cast<packet::error_type>( auto ret = static_cast<packet::error_type>(
@ -1429,9 +1354,7 @@ auto remote_server::winfsp_overwrite(
auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset, auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset,
UINT32 length, PUINT32 bytes_transferred) UINT32 length, PUINT32 bytes_transferred)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
*bytes_transferred = 0; *bytes_transferred = 0;
@ -1458,9 +1381,7 @@ auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset,
auto remote_server::winfsp_read_directory(PVOID file_desc, PWSTR /*pattern*/, auto remote_server::winfsp_read_directory(PVOID file_desc, PWSTR /*pattern*/,
PWSTR marker, json &item_list) PWSTR marker, json &item_list)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
item_list.clear(); item_list.clear();
@ -1493,12 +1414,11 @@ auto remote_server::winfsp_read_directory(PVOID file_desc, PWSTR /*pattern*/,
return ret; return ret;
} }
auto remote_server::winfsp_rename( auto remote_server::winfsp_rename(PVOID /*file_desc*/, PWSTR file_name,
PVOID /*file_desc*/, PWSTR file_name, PWSTR new_file_name, PWSTR new_file_name,
BOOLEAN replace_if_exists) -> packet::error_type { BOOLEAN replace_if_exists)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto relative_path = utils::string::to_utf8(file_name); const auto relative_path = utils::string::to_utf8(file_name);
const auto file_path = construct_path(relative_path); const auto file_path = construct_path(relative_path);
@ -1528,9 +1448,7 @@ auto remote_server::winfsp_set_basic_info(
PVOID file_desc, UINT32 attributes, UINT64 creation_time, PVOID file_desc, UINT32 attributes, UINT64 creation_time,
UINT64 last_access_time, UINT64 last_write_time, UINT64 change_time, UINT64 last_access_time, UINT64 last_write_time, UINT64 change_time,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto handle = reinterpret_cast<remote::file_handle>(file_desc); const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
auto ret = static_cast<packet::error_type>( auto ret = static_cast<packet::error_type>(
@ -1593,12 +1511,11 @@ auto remote_server::winfsp_set_basic_info(
return ret; return ret;
} }
auto remote_server::winfsp_set_file_size( auto remote_server::winfsp_set_file_size(PVOID file_desc, UINT64 new_size,
PVOID file_desc, UINT64 new_size, BOOLEAN set_allocation_size, BOOLEAN set_allocation_size,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto handle = reinterpret_cast<remote::file_handle>(file_desc); const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
auto ret = static_cast<packet::error_type>( auto ret = static_cast<packet::error_type>(
@ -1626,22 +1543,20 @@ auto remote_server::winfsp_set_file_size(
auto remote_server::winfsp_unmounted(const std::wstring &location) auto remote_server::winfsp_unmounted(const std::wstring &location)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_FUSE_SERVER_EVENT( RAISE_REMOTE_FUSE_SERVER_EVENT(
function_name, utils::string::to_utf8(location), STATUS_SUCCESS); function_name, utils::string::to_utf8(location), STATUS_SUCCESS);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
auto remote_server::winfsp_write( auto remote_server::winfsp_write(PVOID file_desc, PVOID buffer, UINT64 offset,
PVOID file_desc, PVOID buffer, UINT64 offset, UINT32 length, UINT32 length, BOOLEAN write_to_end,
BOOLEAN write_to_end, BOOLEAN constrained_io, PUINT32 bytes_transferred, BOOLEAN constrained_io,
remote::file_info *file_info) -> packet::error_type { PUINT32 bytes_transferred,
static constexpr const std::string_view function_name{ remote::file_info *file_info)
static_cast<const char *>(__FUNCTION__), -> packet::error_type {
}; REPERTORY_USES_FUNCTION_NAME();
*bytes_transferred = 0; *bytes_transferred = 0;
const auto handle = reinterpret_cast<remote::file_handle>(file_desc); const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
@ -1688,11 +1603,10 @@ auto remote_server::winfsp_write(
return ret; return ret;
} }
auto remote_server::json_create_directory_snapshot( auto remote_server::json_create_directory_snapshot(const std::string &path,
const std::string &path, json &json_data) -> packet::error_type { json &json_data)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto api_path = utils::path::create_api_path(path); const auto api_path = utils::path::create_api_path(path);
const auto file_path = construct_path(api_path); const auto file_path = construct_path(api_path);
@ -1722,9 +1636,7 @@ auto remote_server::json_create_directory_snapshot(
auto remote_server::json_read_directory_snapshot( auto remote_server::json_read_directory_snapshot(
const std::string &path, const remote::file_handle &handle, const std::string &path, const remote::file_handle &handle,
std::uint32_t page, json &json_data) -> packet::error_type { std::uint32_t page, json &json_data) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
int res{-EBADF}; int res{-EBADF};
@ -1752,11 +1664,9 @@ auto remote_server::json_read_directory_snapshot(
} }
auto remote_server::json_release_directory_snapshot( auto remote_server::json_release_directory_snapshot(
const std::string &path, const std::string &path, const remote::file_handle &handle)
const remote::file_handle &handle) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
directory_cache_.remove_directory(handle); directory_cache_.remove_directory(handle);

View File

@ -54,11 +54,9 @@ remote_client::remote_client(const app_config &config)
config.get_remote_receive_timeout_secs(), config.get_remote_receive_timeout_secs(),
config.get_remote_send_timeout_secs(), config.get_remote_token()) {} config.get_remote_send_timeout_secs(), config.get_remote_token()) {}
auto remote_client::winfsp_can_delete(PVOID file_desc, auto remote_client::winfsp_can_delete(PVOID file_desc, PWSTR file_name)
PWSTR file_name) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -75,11 +73,10 @@ auto remote_client::winfsp_can_delete(PVOID file_desc,
return ret; return ret;
} }
auto remote_client::json_create_directory_snapshot( auto remote_client::json_create_directory_snapshot(const std::string &path,
const std::string &path, json &json_data) -> packet::error_type { json &json_data)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -100,9 +97,7 @@ auto remote_client::json_create_directory_snapshot(
auto remote_client::json_read_directory_snapshot( auto remote_client::json_read_directory_snapshot(
const std::string &path, const remote::file_handle &handle, const std::string &path, const remote::file_handle &handle,
std::uint32_t page, json &json_data) -> packet::error_type { std::uint32_t page, json &json_data) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -123,11 +118,9 @@ auto remote_client::json_read_directory_snapshot(
} }
auto remote_client::json_release_directory_snapshot( auto remote_client::json_release_directory_snapshot(
const std::string &path, const std::string &path, const remote::file_handle &handle)
const remote::file_handle &handle) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(path); request.encode(path);
@ -143,11 +136,9 @@ auto remote_client::json_release_directory_snapshot(
} }
auto remote_client::winfsp_cleanup(PVOID file_desc, PWSTR file_name, auto remote_client::winfsp_cleanup(PVOID file_desc, PWSTR file_name,
UINT32 flags, UINT32 flags, BOOLEAN &was_closed)
BOOLEAN &was_closed) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto handle{ auto handle{
to_handle(file_desc), to_handle(file_desc),
@ -178,9 +169,7 @@ auto remote_client::winfsp_cleanup(PVOID file_desc, PWSTR file_name,
} }
auto remote_client::winfsp_close(PVOID file_desc) -> packet::error_type { auto remote_client::winfsp_close(PVOID file_desc) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto handle{ auto handle{
to_handle(file_desc), to_handle(file_desc),
@ -211,11 +200,9 @@ auto remote_client::winfsp_create(PWSTR file_name, UINT32 create_options,
UINT32 granted_access, UINT32 attributes, UINT32 granted_access, UINT32 attributes,
UINT64 allocation_size, PVOID *file_desc, UINT64 allocation_size, PVOID *file_desc,
remote::file_info *file_info, remote::file_info *file_info,
std::string &normalized_name, std::string &normalized_name, BOOLEAN &exists)
BOOLEAN &exists) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(file_name); request.encode(file_name);
@ -255,9 +242,7 @@ auto remote_client::winfsp_create(PWSTR file_name, UINT32 create_options,
auto remote_client::winfsp_flush(PVOID file_desc, remote::file_info *file_info) auto remote_client::winfsp_flush(PVOID file_desc, remote::file_info *file_info)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -285,11 +270,10 @@ auto remote_client::winfsp_get_dir_buffer([[maybe_unused]] PVOID file_desc,
return static_cast<packet::error_type>(STATUS_INVALID_HANDLE); return static_cast<packet::error_type>(STATUS_INVALID_HANDLE);
} }
auto remote_client::winfsp_get_file_info( auto remote_client::winfsp_get_file_info(PVOID file_desc,
PVOID file_desc, remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -306,12 +290,12 @@ auto remote_client::winfsp_get_file_info(
return ret; return ret;
} }
auto remote_client::winfsp_get_security_by_name( auto remote_client::winfsp_get_security_by_name(PWSTR file_name,
PWSTR file_name, PUINT32 attributes, std::uint64_t *descriptor_size, PUINT32 attributes,
std::wstring &string_descriptor) -> packet::error_type { std::uint64_t *descriptor_size,
static constexpr const std::string_view function_name{ std::wstring &string_descriptor)
static_cast<const char *>(__FUNCTION__), -> packet::error_type {
}; REPERTORY_USES_FUNCTION_NAME();
packet request; packet request;
request.encode(file_name); request.encode(file_name);
@ -340,12 +324,11 @@ auto remote_client::winfsp_get_security_by_name(
return ret; return ret;
} }
auto remote_client::winfsp_get_volume_info( auto remote_client::winfsp_get_volume_info(UINT64 &total_size,
UINT64 &total_size, UINT64 &free_size, UINT64 &free_size,
std::string &volume_label) -> packet::error_type { std::string &volume_label)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
packet response; packet response;
@ -362,9 +345,7 @@ auto remote_client::winfsp_get_volume_info(
auto remote_client::winfsp_mounted(const std::wstring &location) auto remote_client::winfsp_mounted(const std::wstring &location)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(std::string{project_get_version()}); request.encode(std::string{project_get_version()});
@ -384,13 +365,12 @@ auto remote_client::winfsp_mounted(const std::wstring &location)
return ret; return ret;
} }
auto remote_client::winfsp_open( auto remote_client::winfsp_open(PWSTR file_name, UINT32 create_options,
PWSTR file_name, UINT32 create_options, UINT32 granted_access, UINT32 granted_access, PVOID *file_desc,
PVOID *file_desc, remote::file_info *file_info, remote::file_info *file_info,
std::string &normalized_name) -> packet::error_type { std::string &normalized_name)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(file_name); request.encode(file_name);
@ -421,13 +401,12 @@ auto remote_client::winfsp_open(
return ret; return ret;
} }
auto remote_client::winfsp_overwrite( auto remote_client::winfsp_overwrite(PVOID file_desc, UINT32 attributes,
PVOID file_desc, UINT32 attributes, BOOLEAN replace_attributes, BOOLEAN replace_attributes,
UINT64 allocation_size, UINT64 allocation_size,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -450,9 +429,7 @@ auto remote_client::winfsp_overwrite(
auto remote_client::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset, auto remote_client::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset,
UINT32 length, PUINT32 bytes_transferred) UINT32 length, PUINT32 bytes_transferred)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -486,9 +463,7 @@ auto remote_client::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset,
auto remote_client::winfsp_read_directory(PVOID file_desc, PWSTR pattern, auto remote_client::winfsp_read_directory(PVOID file_desc, PWSTR pattern,
PWSTR marker, json &item_list) PWSTR marker, json &item_list)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -509,12 +484,11 @@ auto remote_client::winfsp_read_directory(PVOID file_desc, PWSTR pattern,
return ret; return ret;
} }
auto remote_client::winfsp_rename( auto remote_client::winfsp_rename(PVOID file_desc, PWSTR file_name,
PVOID file_desc, PWSTR file_name, PWSTR new_file_name, PWSTR new_file_name,
BOOLEAN replace_if_exists) -> packet::error_type { BOOLEAN replace_if_exists)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -539,9 +513,7 @@ auto remote_client::winfsp_set_basic_info(
PVOID file_desc, UINT32 attributes, UINT64 creation_time, PVOID file_desc, UINT32 attributes, UINT64 creation_time,
UINT64 last_access_time, UINT64 last_write_time, UINT64 change_time, UINT64 last_access_time, UINT64 last_write_time, UINT64 change_time,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -563,12 +535,11 @@ auto remote_client::winfsp_set_basic_info(
return ret; return ret;
} }
auto remote_client::winfsp_set_file_size( auto remote_client::winfsp_set_file_size(PVOID file_desc, UINT64 new_size,
PVOID file_desc, UINT64 new_size, BOOLEAN set_allocation_size, BOOLEAN set_allocation_size,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);
@ -589,9 +560,7 @@ auto remote_client::winfsp_set_file_size(
auto remote_client::winfsp_unmounted(const std::wstring &location) auto remote_client::winfsp_unmounted(const std::wstring &location)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto mount_location{ auto mount_location{
utils::string::to_utf8(location), utils::string::to_utf8(location),
@ -610,13 +579,13 @@ auto remote_client::winfsp_unmounted(const std::wstring &location)
return ret; return ret;
} }
auto remote_client::winfsp_write( auto remote_client::winfsp_write(PVOID file_desc, PVOID buffer, UINT64 offset,
PVOID file_desc, PVOID buffer, UINT64 offset, UINT32 length, UINT32 length, BOOLEAN write_to_end,
BOOLEAN write_to_end, BOOLEAN constrained_io, PUINT32 bytes_transferred, BOOLEAN constrained_io,
remote::file_info *file_info) -> packet::error_type { PUINT32 bytes_transferred,
static constexpr const std::string_view function_name{ remote::file_info *file_info)
static_cast<const char *>(__FUNCTION__), -> packet::error_type {
}; REPERTORY_USES_FUNCTION_NAME();
packet request; packet request;
request.encode(file_desc); request.encode(file_desc);

View File

@ -107,9 +107,7 @@ void remote_server::populate_stat(const char *path, bool directory,
// FUSE Layer // FUSE Layer
auto remote_server::fuse_access(const char *path, const std::int32_t &mask) auto remote_server::fuse_access(const char *path, const std::int32_t &mask)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto file_path{ auto file_path{
construct_path(path), construct_path(path),
@ -133,9 +131,7 @@ auto remote_server::fuse_access(const char *path, const std::int32_t &mask)
auto remote_server::fuse_chflags(const char *path, std::uint32_t /*flags*/) auto remote_server::fuse_chflags(const char *path, std::uint32_t /*flags*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -146,9 +142,7 @@ auto remote_server::fuse_chflags(const char *path, std::uint32_t /*flags*/)
auto remote_server::fuse_chmod(const char *path, auto remote_server::fuse_chmod(const char *path,
const remote::file_mode & /*mode*/) const remote::file_mode & /*mode*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -156,12 +150,11 @@ auto remote_server::fuse_chmod(const char *path,
return ret; return ret;
} }
auto remote_server::fuse_chown( auto remote_server::fuse_chown(const char *path,
const char *path, const remote::user_id & /*uid*/, const remote::user_id & /*uid*/,
const remote::group_id & /*gid*/) -> packet::error_type { const remote::group_id & /*gid*/)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -170,9 +163,7 @@ auto remote_server::fuse_chown(
} }
auto remote_server::fuse_destroy() -> packet::error_type { auto remote_server::fuse_destroy() -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, "", 0); RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, "", 0);
return 0; return 0;
@ -190,12 +181,11 @@ construct_path(path); auto res = HasOpenFileCompatInfo(handle, EBADF); if (res
return ret; return ret;
}*/ }*/
auto remote_server::fuse_fgetattr( auto remote_server::fuse_fgetattr(const char *path, remote::stat &r_stat,
const char *path, remote::stat &r_stat, bool &directory, bool &directory,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
r_stat = {}; r_stat = {};
@ -218,12 +208,11 @@ auto remote_server::fuse_fgetattr(
return ret; return ret;
} }
auto remote_server::fuse_fsetattr_x( auto remote_server::fuse_fsetattr_x(const char *path,
const char *path, const remote::setattr_x & /*attr*/, const remote::setattr_x & /*attr*/,
const remote::file_handle & /*handle*/) -> packet::error_type { const remote::file_handle & /*handle*/)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -231,12 +220,11 @@ auto remote_server::fuse_fsetattr_x(
return ret; return ret;
} }
auto remote_server::fuse_fsync( auto remote_server::fuse_fsync(const char *path,
const char *path, const std::int32_t & /*datasync*/, const std::int32_t & /*datasync*/,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -262,12 +250,11 @@ auto remote_server::fuse_fsync(
return ret; return ret;
} }
auto remote_server::fuse_ftruncate( auto remote_server::fuse_ftruncate(const char *path,
const char *path, const remote::file_offset &size, const remote::file_offset &size,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -298,9 +285,7 @@ auto remote_server::fuse_ftruncate(
auto remote_server::fuse_getattr(const char *path, remote::stat &r_st, auto remote_server::fuse_getattr(const char *path, remote::stat &r_st,
bool &directory) -> packet::error_type { bool &directory) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
r_st = {}; r_st = {};
@ -334,12 +319,11 @@ STATUS_NOT_IMPLEMENTED; RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name,
file_path, ret); return ret; file_path, ret); return ret;
}*/ }*/
auto remote_server::fuse_getxtimes( auto remote_server::fuse_getxtimes(const char *path,
const char *path, remote::file_time & /*bkuptime*/, remote::file_time & /*bkuptime*/,
remote::file_time & /*crtime*/) -> packet::error_type { remote::file_time & /*crtime*/)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -348,9 +332,7 @@ auto remote_server::fuse_getxtimes(
} }
auto remote_server::fuse_init() -> packet::error_type { auto remote_server::fuse_init() -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, "", 0); RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, "", 0);
return 0; return 0;
@ -366,9 +348,7 @@ construct_path(path); const auto ret = STATUS_NOT_IMPLEMENTED;
auto remote_server::fuse_mkdir(const char *path, auto remote_server::fuse_mkdir(const char *path,
const remote::file_mode & /*mode*/) const remote::file_mode & /*mode*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto res{ auto res{
@ -381,9 +361,7 @@ auto remote_server::fuse_mkdir(const char *path,
auto remote_server::fuse_opendir(const char *path, remote::file_handle &handle) auto remote_server::fuse_opendir(const char *path, remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto unicode_file_path = utils::string::from_utf8(file_path); const auto unicode_file_path = utils::string::from_utf8(file_path);
@ -410,9 +388,7 @@ auto remote_server::fuse_create(const char *path, const remote::file_mode &mode,
const remote::open_flags &flags, const remote::open_flags &flags,
remote::file_handle &handle) remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret = -1; auto ret = -1;
@ -449,9 +425,7 @@ auto remote_server::fuse_create(const char *path, const remote::file_mode &mode,
auto remote_server::fuse_open(const char *path, const remote::open_flags &flags, auto remote_server::fuse_open(const char *path, const remote::open_flags &flags,
remote::file_handle &handle) remote::file_handle &handle)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto res{-1}; auto res{-1};
@ -479,13 +453,12 @@ auto remote_server::fuse_open(const char *path, const remote::open_flags &flags,
return ret; return ret;
} }
auto remote_server::fuse_read( auto remote_server::fuse_read(const char *path, char *buffer,
const char *path, char *buffer, const remote::file_size &read_size, const remote::file_size &read_size,
const remote::file_offset &read_offset, const remote::file_offset &read_offset,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto &data = *reinterpret_cast<data_buffer *>(buffer); auto &data = *reinterpret_cast<data_buffer *>(buffer);
@ -515,11 +488,9 @@ auto remote_server::fuse_read(
return ret; return ret;
} }
auto remote_server::fuse_rename(const char *from, auto remote_server::fuse_rename(const char *from, const char *to)
const char *to) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto from_path = utils::path::combine(mount_location_, {from}); const auto from_path = utils::path::combine(mount_location_, {from});
const auto to_path = utils::path::combine(mount_location_, {to}); const auto to_path = utils::path::combine(mount_location_, {to});
@ -533,13 +504,12 @@ auto remote_server::fuse_rename(const char *from,
return ret; return ret;
} }
auto remote_server::fuse_write( auto remote_server::fuse_write(const char *path, const char *buffer,
const char *path, const char *buffer, const remote::file_size &write_size, const remote::file_size &write_size,
const remote::file_offset &write_offset, const remote::file_offset &write_offset,
const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
std::size_t bytes_written{}; std::size_t bytes_written{};
@ -583,9 +553,7 @@ auto remote_server::fuse_readdir(const char *path,
const remote::file_offset &offset, const remote::file_offset &offset,
const remote::file_handle &handle, const remote::file_handle &handle,
std::string &item_path) -> packet::error_type { std::string &item_path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto res{0}; auto res{0};
@ -607,11 +575,10 @@ auto remote_server::fuse_readdir(const char *path,
return ret; return ret;
} }
auto remote_server::fuse_release( auto remote_server::fuse_release(const char *path,
const char *path, const remote::file_handle &handle) -> packet::error_type { const remote::file_handle &handle)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -628,9 +595,7 @@ auto remote_server::fuse_release(
auto remote_server::fuse_releasedir(const char *path, auto remote_server::fuse_releasedir(const char *path,
const remote::file_handle & /*handle*/) const remote::file_handle & /*handle*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, file_path, 0); RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, file_path, 0);
@ -645,9 +610,7 @@ file_path, ret); return ret;
}*/ }*/
auto remote_server::fuse_rmdir(const char *path) -> packet::error_type { auto remote_server::fuse_rmdir(const char *path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto res{ auto res{
@ -658,11 +621,10 @@ auto remote_server::fuse_rmdir(const char *path) -> packet::error_type {
return ret; return ret;
} }
auto remote_server::fuse_setattr_x( auto remote_server::fuse_setattr_x(const char *path,
const char *path, remote::setattr_x & /*attr*/) -> packet::error_type { remote::setattr_x & /*attr*/)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -673,9 +635,7 @@ auto remote_server::fuse_setattr_x(
auto remote_server::fuse_setbkuptime(const char *path, auto remote_server::fuse_setbkuptime(const char *path,
const remote::file_time & /*bkuptime*/) const remote::file_time & /*bkuptime*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -686,9 +646,7 @@ auto remote_server::fuse_setbkuptime(const char *path,
auto remote_server::fuse_setchgtime(const char *path, auto remote_server::fuse_setchgtime(const char *path,
const remote::file_time & /*chgtime*/) const remote::file_time & /*chgtime*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -699,9 +657,7 @@ auto remote_server::fuse_setchgtime(const char *path,
auto remote_server::fuse_setcrtime(const char *path, auto remote_server::fuse_setcrtime(const char *path,
const remote::file_time & /*crtime*/) const remote::file_time & /*crtime*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto ret = STATUS_NOT_IMPLEMENTED; const auto ret = STATUS_NOT_IMPLEMENTED;
@ -710,9 +666,7 @@ auto remote_server::fuse_setcrtime(const char *path,
} }
auto remote_server::fuse_setvolname(const char *volname) -> packet::error_type { auto remote_server::fuse_setvolname(const char *volname) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, volname, 0); RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, volname, 0);
return 0; return 0;
@ -735,9 +689,7 @@ construct_path(path); const auto ret = STATUS_NOT_IMPLEMENTED;
auto remote_server::fuse_statfs(const char *path, std::uint64_t frsize, auto remote_server::fuse_statfs(const char *path, std::uint64_t frsize,
remote::statfs &r_stat) -> packet::error_type { remote::statfs &r_stat) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -760,9 +712,7 @@ auto remote_server::fuse_statfs(const char *path, std::uint64_t frsize,
auto remote_server::fuse_statfs_x(const char *path, std::uint64_t bsize, auto remote_server::fuse_statfs_x(const char *path, std::uint64_t bsize,
remote::statfs_x &r_stat) remote::statfs_x &r_stat)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -785,11 +735,10 @@ auto remote_server::fuse_statfs_x(const char *path, std::uint64_t bsize,
return 0; return 0;
} }
auto remote_server::fuse_truncate( auto remote_server::fuse_truncate(const char *path,
const char *path, const remote::file_offset &size) -> packet::error_type { const remote::file_offset &size)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto unicode_file_path = utils::string::from_utf8(file_path); const auto unicode_file_path = utils::string::from_utf8(file_path);
@ -823,9 +772,7 @@ auto remote_server::fuse_truncate(
} }
auto remote_server::fuse_unlink(const char *path) -> packet::error_type { auto remote_server::fuse_unlink(const char *path) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
auto res{ auto res{
@ -837,11 +784,9 @@ auto remote_server::fuse_unlink(const char *path) -> packet::error_type {
} }
auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv, auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv,
std::uint64_t op0, std::uint64_t op0, std::uint64_t op1)
std::uint64_t op1) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
const auto unicode_file_path = utils::string::from_utf8(file_path); const auto unicode_file_path = utils::string::from_utf8(file_path);
@ -899,11 +844,10 @@ auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv,
} }
// JSON Layer // JSON Layer
auto remote_server::json_create_directory_snapshot( auto remote_server::json_create_directory_snapshot(const std::string &path,
const std::string &path, json &json_data) -> packet::error_type { json &json_data)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -932,9 +876,7 @@ auto remote_server::json_create_directory_snapshot(
auto remote_server::json_read_directory_snapshot( auto remote_server::json_read_directory_snapshot(
const std::string &path, const remote::file_handle &handle, const std::string &path, const remote::file_handle &handle,
std::uint32_t page, json &json_data) -> packet::error_type { std::uint32_t page, json &json_data) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
@ -962,11 +904,9 @@ auto remote_server::json_read_directory_snapshot(
} }
auto remote_server::json_release_directory_snapshot( auto remote_server::json_release_directory_snapshot(
const std::string &path, const std::string &path, const remote::file_handle & /*handle*/)
const remote::file_handle & /*handle*/) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = construct_path(path); const auto file_path = construct_path(path);
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, file_path, 0); RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, file_path, 0);
@ -977,9 +917,7 @@ auto remote_server::json_release_directory_snapshot(
// WinFSP Layer // WinFSP Layer
auto remote_server::winfsp_can_delete(PVOID file_desc, PWSTR /*file_name*/) auto remote_server::winfsp_can_delete(PVOID file_desc, PWSTR /*file_name*/)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto *handle = reinterpret_cast<HANDLE>(file_desc); auto *handle = reinterpret_cast<HANDLE>(file_desc);
@ -998,11 +936,9 @@ auto remote_server::winfsp_can_delete(PVOID file_desc, PWSTR /*file_name*/)
} }
auto remote_server::winfsp_cleanup(PVOID file_desc, PWSTR /*file_name*/, auto remote_server::winfsp_cleanup(PVOID file_desc, PWSTR /*file_name*/,
UINT32 flags, UINT32 flags, BOOLEAN &was_closed)
BOOLEAN &was_closed) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = get_open_file_path(file_desc); const auto file_path = get_open_file_path(file_desc);
was_closed = FALSE; was_closed = FALSE;
@ -1020,9 +956,7 @@ auto remote_server::winfsp_cleanup(PVOID file_desc, PWSTR /*file_name*/,
} }
auto remote_server::winfsp_close(PVOID file_desc) -> packet::error_type { auto remote_server::winfsp_close(PVOID file_desc) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = get_open_file_path(file_desc); const auto file_path = get_open_file_path(file_desc);
@ -1040,11 +974,9 @@ auto remote_server::winfsp_create(PWSTR file_name, UINT32 create_options,
UINT32 granted_access, UINT32 attributes, UINT32 granted_access, UINT32 attributes,
UINT64 /*allocation_size*/, PVOID *file_desc, UINT64 /*allocation_size*/, PVOID *file_desc,
remote::file_info *file_info, remote::file_info *file_info,
std::string &normalized_name, std::string &normalized_name, BOOLEAN &exists)
BOOLEAN &exists) -> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto file_path = utils::string::from_utf8(utils::path::combine( const auto file_path = utils::string::from_utf8(utils::path::combine(
mount_location_, {utils::string::to_utf8(file_name)})); mount_location_, {utils::string::to_utf8(file_name)}));
@ -1089,9 +1021,7 @@ auto remote_server::winfsp_create(PWSTR file_name, UINT32 create_options,
auto remote_server::winfsp_flush(PVOID file_desc, remote::file_info *file_info) auto remote_server::winfsp_flush(PVOID file_desc, remote::file_info *file_info)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto *handle = reinterpret_cast<HANDLE>(file_desc); auto *handle = reinterpret_cast<HANDLE>(file_desc);
auto ret = has_open_info(handle, STATUS_INVALID_HANDLE); auto ret = has_open_info(handle, STATUS_INVALID_HANDLE);
@ -1109,11 +1039,10 @@ auto remote_server::winfsp_flush(PVOID file_desc, remote::file_info *file_info)
return ret; return ret;
} }
auto remote_server::winfsp_get_file_info( auto remote_server::winfsp_get_file_info(PVOID file_desc,
PVOID file_desc, remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
auto *handle = reinterpret_cast<HANDLE>(file_desc); auto *handle = reinterpret_cast<HANDLE>(file_desc);
auto ret = has_open_info(handle, STATUS_INVALID_HANDLE); auto ret = has_open_info(handle, STATUS_INVALID_HANDLE);
@ -1126,12 +1055,12 @@ auto remote_server::winfsp_get_file_info(
return ret; return ret;
} }
auto remote_server::winfsp_get_security_by_name( auto remote_server::winfsp_get_security_by_name(PWSTR file_name,
PWSTR file_name, PUINT32 attributes, std::uint64_t *descriptor_size, PUINT32 attributes,
std::wstring &string_descriptor) -> packet::error_type { std::uint64_t *descriptor_size,
static constexpr const std::string_view function_name{ std::wstring &string_descriptor)
static_cast<const char *>(__FUNCTION__), -> packet::error_type {
}; REPERTORY_USES_FUNCTION_NAME();
const auto file_path = utils::string::from_utf8(utils::path::combine( const auto file_path = utils::string::from_utf8(utils::path::combine(
mount_location_, {utils::string::to_utf8(file_name)})); mount_location_, {utils::string::to_utf8(file_name)}));
@ -1168,12 +1097,11 @@ auto remote_server::winfsp_get_security_by_name(
return ret; return ret;
} }
auto remote_server::winfsp_get_volume_info( auto remote_server::winfsp_get_volume_info(UINT64 &total_size,
UINT64 &total_size, UINT64 &free_size, UINT64 &free_size,
std::string &volume_label) -> packet::error_type { std::string &volume_label)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
drive_.get_volume_info(total_size, free_size, volume_label); drive_.get_volume_info(total_size, free_size, volume_label);
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, volume_label, STATUS_SUCCESS); RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, volume_label, STATUS_SUCCESS);
@ -1182,22 +1110,19 @@ auto remote_server::winfsp_get_volume_info(
auto remote_server::winfsp_mounted(const std::wstring &location) auto remote_server::winfsp_mounted(const std::wstring &location)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_WINFSP_SERVER_EVENT( RAISE_REMOTE_WINFSP_SERVER_EVENT(
function_name, utils::string::to_utf8(location), STATUS_SUCCESS); function_name, utils::string::to_utf8(location), STATUS_SUCCESS);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
auto remote_server::winfsp_open( auto remote_server::winfsp_open(PWSTR file_name, UINT32 create_options,
PWSTR file_name, UINT32 create_options, UINT32 granted_access, UINT32 granted_access, PVOID *file_desc,
PVOID *file_desc, remote::file_info *file_info, remote::file_info *file_info,
std::string &normalized_name) -> packet::error_type { std::string &normalized_name)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto file_path = utils::string::from_utf8(utils::path::combine( const auto file_path = utils::string::from_utf8(utils::path::combine(
mount_location_, {utils::string::to_utf8(file_name)})); mount_location_, {utils::string::to_utf8(file_name)}));
@ -1228,13 +1153,12 @@ auto remote_server::winfsp_open(
return ret; return ret;
} }
auto remote_server::winfsp_overwrite( auto remote_server::winfsp_overwrite(PVOID file_desc, UINT32 attributes,
PVOID file_desc, UINT32 attributes, BOOLEAN replace_attributes, BOOLEAN replace_attributes,
UINT64 /*allocation_size*/, UINT64 /*allocation_size*/,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
auto *handle = reinterpret_cast<HANDLE>(file_desc); auto *handle = reinterpret_cast<HANDLE>(file_desc);
auto ret = has_open_info(handle, STATUS_INVALID_HANDLE); auto ret = has_open_info(handle, STATUS_INVALID_HANDLE);
@ -1289,9 +1213,7 @@ auto remote_server::winfsp_overwrite(
auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset, auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset,
UINT32 length, PUINT32 bytes_transferred) UINT32 length, PUINT32 bytes_transferred)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
*bytes_transferred = 0U; *bytes_transferred = 0U;
@ -1319,9 +1241,7 @@ auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset,
auto remote_server::winfsp_read_directory(PVOID file_desc, PWSTR /*pattern*/, auto remote_server::winfsp_read_directory(PVOID file_desc, PWSTR /*pattern*/,
PWSTR marker, json &item_list) PWSTR marker, json &item_list)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret = STATUS_INVALID_HANDLE; auto ret = STATUS_INVALID_HANDLE;
item_list.clear(); item_list.clear();
@ -1348,12 +1268,11 @@ auto remote_server::winfsp_read_directory(PVOID file_desc, PWSTR /*pattern*/,
return ret; return ret;
} }
auto remote_server::winfsp_rename( auto remote_server::winfsp_rename(PVOID /*file_desc*/, PWSTR file_name,
PVOID /*file_desc*/, PWSTR file_name, PWSTR new_file_name, PWSTR new_file_name,
BOOLEAN replace_if_exists) -> packet::error_type { BOOLEAN replace_if_exists)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
const auto from_path = utils::string::from_utf8(utils::path::combine( const auto from_path = utils::string::from_utf8(utils::path::combine(
mount_location_, {utils::string::to_utf8(file_name)})); mount_location_, {utils::string::to_utf8(file_name)}));
@ -1375,9 +1294,7 @@ auto remote_server::winfsp_set_basic_info(
PVOID file_desc, UINT32 attributes, UINT64 creation_time, PVOID file_desc, UINT32 attributes, UINT64 creation_time,
UINT64 last_access_time, UINT64 last_write_time, UINT64 change_time, UINT64 last_access_time, UINT64 last_write_time, UINT64 change_time,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info) -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto *handle = reinterpret_cast<HANDLE>(file_desc); auto *handle = reinterpret_cast<HANDLE>(file_desc);
auto ret = has_open_info(handle, STATUS_INVALID_HANDLE); auto ret = has_open_info(handle, STATUS_INVALID_HANDLE);
@ -1406,12 +1323,11 @@ auto remote_server::winfsp_set_basic_info(
return ret; return ret;
} }
auto remote_server::winfsp_set_file_size( auto remote_server::winfsp_set_file_size(PVOID file_desc, UINT64 new_size,
PVOID file_desc, UINT64 new_size, BOOLEAN set_allocation_size, BOOLEAN set_allocation_size,
remote::file_info *file_info) -> packet::error_type { remote::file_info *file_info)
static constexpr const std::string_view function_name{ -> packet::error_type {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
auto *handle = reinterpret_cast<HANDLE>(file_desc); auto *handle = reinterpret_cast<HANDLE>(file_desc);
auto ret = has_open_info(handle, STATUS_INVALID_HANDLE); auto ret = has_open_info(handle, STATUS_INVALID_HANDLE);
@ -1446,22 +1362,20 @@ auto remote_server::winfsp_set_file_size(
auto remote_server::winfsp_unmounted(const std::wstring &location) auto remote_server::winfsp_unmounted(const std::wstring &location)
-> packet::error_type { -> packet::error_type {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
RAISE_REMOTE_WINFSP_SERVER_EVENT( RAISE_REMOTE_WINFSP_SERVER_EVENT(
function_name, utils::string::to_utf8(location), STATUS_SUCCESS); function_name, utils::string::to_utf8(location), STATUS_SUCCESS);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
auto remote_server::winfsp_write( auto remote_server::winfsp_write(PVOID file_desc, PVOID buffer, UINT64 offset,
PVOID file_desc, PVOID buffer, UINT64 offset, UINT32 length, UINT32 length, BOOLEAN /*write_to_end*/,
BOOLEAN /*write_to_end*/, BOOLEAN constrained_io, PUINT32 bytes_transferred, BOOLEAN constrained_io,
remote::file_info *file_info) -> packet::error_type { PUINT32 bytes_transferred,
static constexpr const std::string_view function_name{ remote::file_info *file_info)
static_cast<const char *>(__FUNCTION__), -> packet::error_type {
}; REPERTORY_USES_FUNCTION_NAME();
auto *handle = reinterpret_cast<HANDLE>(file_desc); auto *handle = reinterpret_cast<HANDLE>(file_desc);
*bytes_transferred = 0U; *bytes_transferred = 0U;

View File

@ -50,9 +50,7 @@ remote_winfsp_drive::winfsp_service::winfsp_service(
host_(drive) {} host_(drive) {}
auto remote_winfsp_drive::winfsp_service::OnStart(ULONG, PWSTR *) -> NTSTATUS { auto remote_winfsp_drive::winfsp_service::OnStart(ULONG, PWSTR *) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto mount_location = utils::string::to_lower(utils::path::absolute( const auto mount_location = utils::string::to_lower(utils::path::absolute(
(drive_args_.size() > 1U) ? drive_args_.at(1U) : "")); (drive_args_.size() > 1U) ? drive_args_.at(1U) : ""));
@ -88,9 +86,7 @@ auto remote_winfsp_drive::winfsp_service::OnStart(ULONG, PWSTR *) -> NTSTATUS {
} }
auto remote_winfsp_drive::winfsp_service::OnStop() -> NTSTATUS { auto remote_winfsp_drive::winfsp_service::OnStop() -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
host_.Unmount(); host_.Unmount();
if (not lock_.set_mount_state(false, "", -1)) { if (not lock_.set_mount_state(false, "", -1)) {
@ -131,8 +127,8 @@ auto remote_winfsp_drive::Create(PWSTR file_name, UINT32 create_options,
UINT32 granted_access, UINT32 attributes, UINT32 granted_access, UINT32 attributes,
PSECURITY_DESCRIPTOR /*descriptor*/, PSECURITY_DESCRIPTOR /*descriptor*/,
UINT64 allocation_size, PVOID * /*file_node*/, UINT64 allocation_size, PVOID * /*file_node*/,
PVOID *file_desc, PVOID *file_desc, OpenFileInfo *ofi)
OpenFileInfo *ofi) -> NTSTATUS { -> NTSTATUS {
remote::file_info fi{}; remote::file_info fi{};
std::string normalized_name; std::string normalized_name;
BOOLEAN exists = 0; BOOLEAN exists = 0;
@ -166,9 +162,10 @@ auto remote_winfsp_drive::GetFileInfo(PVOID /*file_node*/, PVOID file_desc,
return ret; return ret;
} }
auto remote_winfsp_drive::GetSecurityByName( auto remote_winfsp_drive::GetSecurityByName(PWSTR file_name, PUINT32 attributes,
PWSTR file_name, PUINT32 attributes, PSECURITY_DESCRIPTOR descriptor, PSECURITY_DESCRIPTOR descriptor,
SIZE_T *descriptor_size) -> NTSTATUS { SIZE_T *descriptor_size)
-> NTSTATUS {
std::wstring string_descriptor; std::wstring string_descriptor;
std::uint64_t sds = (descriptor_size == nullptr) ? 0 : *descriptor_size; std::uint64_t sds = (descriptor_size == nullptr) ? 0 : *descriptor_size;
auto ret = remote_instance_->winfsp_get_security_by_name( auto ret = remote_instance_->winfsp_get_security_by_name(
@ -266,9 +263,7 @@ auto remote_winfsp_drive::mount(const std::vector<std::string> &drive_args)
} }
auto remote_winfsp_drive::Mounted(PVOID host) -> NTSTATUS { auto remote_winfsp_drive::Mounted(PVOID host) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto *file_system_host = reinterpret_cast<FileSystemHost *>(host); auto *file_system_host = reinterpret_cast<FileSystemHost *>(host);
remote_instance_ = factory_(); remote_instance_ = factory_();
@ -285,8 +280,8 @@ auto remote_winfsp_drive::Mounted(PVOID host) -> NTSTATUS {
auto remote_winfsp_drive::Open(PWSTR file_name, UINT32 create_options, auto remote_winfsp_drive::Open(PWSTR file_name, UINT32 create_options,
UINT32 granted_access, PVOID * /*file_node*/, UINT32 granted_access, PVOID * /*file_node*/,
PVOID *file_desc, PVOID *file_desc, OpenFileInfo *ofi)
OpenFileInfo *ofi) -> NTSTATUS { -> NTSTATUS {
remote::file_info fi{}; remote::file_info fi{};
std::string normalize_name; std::string normalize_name;
auto ret = auto ret =
@ -306,8 +301,8 @@ auto remote_winfsp_drive::Open(PWSTR file_name, UINT32 create_options,
auto remote_winfsp_drive::Overwrite(PVOID /*file_node*/, PVOID file_desc, auto remote_winfsp_drive::Overwrite(PVOID /*file_node*/, PVOID file_desc,
UINT32 attributes, UINT32 attributes,
BOOLEAN replace_attributes, BOOLEAN replace_attributes,
UINT64 allocation_size, UINT64 allocation_size, FileInfo *file_info)
FileInfo *file_info) -> NTSTATUS { -> NTSTATUS {
remote::file_info fi{}; remote::file_info fi{};
auto ret = remote_instance_->winfsp_overwrite( auto ret = remote_instance_->winfsp_overwrite(
file_desc, attributes, replace_attributes, allocation_size, &fi); file_desc, attributes, replace_attributes, allocation_size, &fi);
@ -423,8 +418,8 @@ auto remote_winfsp_drive::SetBasicInfo(PVOID /*file_node*/, PVOID file_desc,
UINT32 attributes, UINT64 creation_time, UINT32 attributes, UINT64 creation_time,
UINT64 last_access_time, UINT64 last_access_time,
UINT64 last_write_time, UINT64 last_write_time,
UINT64 change_time, UINT64 change_time, FileInfo *file_info)
FileInfo *file_info) -> NTSTATUS { -> NTSTATUS {
remote::file_info fi{}; remote::file_info fi{};
auto ret = remote_instance_->winfsp_set_basic_info( auto ret = remote_instance_->winfsp_set_basic_info(
file_desc, attributes, creation_time, last_access_time, last_write_time, file_desc, attributes, creation_time, last_access_time, last_write_time,
@ -460,9 +455,7 @@ auto remote_winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc,
} }
VOID remote_winfsp_drive::Unmounted(PVOID host) { VOID remote_winfsp_drive::Unmounted(PVOID host) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
server_->stop(); server_->stop();
server_.reset(); server_.reset();
@ -478,8 +471,8 @@ VOID remote_winfsp_drive::Unmounted(PVOID host) {
auto remote_winfsp_drive::Write(PVOID /*file_node*/, PVOID file_desc, auto remote_winfsp_drive::Write(PVOID /*file_node*/, PVOID file_desc,
PVOID buffer, UINT64 offset, ULONG length, PVOID buffer, UINT64 offset, ULONG length,
BOOLEAN write_to_end, BOOLEAN constrained_io, BOOLEAN write_to_end, BOOLEAN constrained_io,
PULONG bytes_transferred, PULONG bytes_transferred, FileInfo *file_info)
FileInfo *file_info) -> NTSTATUS { -> NTSTATUS {
remote::file_info fi{}; remote::file_info fi{};
auto ret = remote_instance_->winfsp_write( auto ret = remote_instance_->winfsp_write(
file_desc, buffer, offset, length, write_to_end, constrained_io, file_desc, buffer, offset, length, write_to_end, constrained_io,

View File

@ -67,11 +67,9 @@ winfsp_drive::winfsp_service::winfsp_service(
host_(drive), host_(drive),
config_(config) {} config_(config) {}
auto winfsp_drive::winfsp_service::OnStart(ULONG /*Argc*/, auto winfsp_drive::winfsp_service::OnStart(ULONG /*Argc*/, PWSTR * /*Argv*/)
PWSTR * /*Argv*/) -> NTSTATUS { -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto mount_location = utils::string::to_lower( const auto mount_location = utils::string::to_lower(
utils::path::absolute((drive_args_.size() > 1U) ? drive_args_[1U] : "")); utils::path::absolute((drive_args_.size() > 1U) ? drive_args_[1U] : ""));
@ -108,9 +106,7 @@ auto winfsp_drive::winfsp_service::OnStart(ULONG /*Argc*/,
} }
auto winfsp_drive::winfsp_service::OnStop() -> NTSTATUS { auto winfsp_drive::winfsp_service::OnStop() -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
host_.Unmount(); host_.Unmount();
@ -133,9 +129,7 @@ void winfsp_drive::shutdown() { ::GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0); }
auto winfsp_drive::CanDelete(PVOID /*file_node*/, PVOID file_desc, auto winfsp_drive::CanDelete(PVOID /*file_node*/, PVOID file_desc,
PWSTR /*file_name*/) -> NTSTATUS { PWSTR /*file_name*/) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto error = api_error::invalid_handle; auto error = api_error::invalid_handle;
@ -163,9 +157,7 @@ auto winfsp_drive::CanDelete(PVOID /*file_node*/, PVOID file_desc,
VOID winfsp_drive::Cleanup(PVOID file_node, PVOID file_desc, VOID winfsp_drive::Cleanup(PVOID file_node, PVOID file_desc,
PWSTR /*file_name*/, ULONG flags) { PWSTR /*file_name*/, ULONG flags) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto handle = auto handle =
@ -265,9 +257,7 @@ VOID winfsp_drive::Cleanup(PVOID file_node, PVOID file_desc,
} }
VOID winfsp_drive::Close(PVOID /*file_node*/, PVOID file_desc) { VOID winfsp_drive::Close(PVOID /*file_node*/, PVOID file_desc) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto handle = auto handle =
@ -295,9 +285,7 @@ auto winfsp_drive::Create(PWSTR file_name, UINT32 create_options,
PSECURITY_DESCRIPTOR /*descriptor*/, PSECURITY_DESCRIPTOR /*descriptor*/,
UINT64 /*allocation_size*/, PVOID * /*file_node*/, UINT64 /*allocation_size*/, PVOID * /*file_node*/,
PVOID *file_desc, OpenFileInfo *ofi) -> NTSTATUS { PVOID *file_desc, OpenFileInfo *ofi) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
// TODO Need to revisit this // TODO Need to revisit this
// (ConvertSecurityDescriptorToStringSecurityDescriptor/ConvertStringSecurityDescriptorToSecurityDescriptor) // (ConvertSecurityDescriptorToStringSecurityDescriptor/ConvertStringSecurityDescriptorToSecurityDescriptor)
@ -350,9 +338,7 @@ auto winfsp_drive::Create(PWSTR file_name, UINT32 create_options,
auto winfsp_drive::Flush(PVOID /*file_node*/, PVOID file_desc, auto winfsp_drive::Flush(PVOID /*file_node*/, PVOID file_desc,
FileInfo *file_info) -> NTSTATUS { FileInfo *file_info) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto error = api_error::success; auto error = api_error::success;
@ -391,9 +377,7 @@ auto winfsp_drive::get_directory_item_count(const std::string &api_path) const
auto winfsp_drive::get_directory_items(const std::string &api_path) const auto winfsp_drive::get_directory_items(const std::string &api_path) const
-> directory_item_list { -> directory_item_list {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
directory_item_list list; directory_item_list list;
auto res = provider_.get_directory_items(api_path, list); auto res = provider_.get_directory_items(api_path, list);
@ -406,9 +390,7 @@ auto winfsp_drive::get_directory_items(const std::string &api_path) const
auto winfsp_drive::GetFileInfo(PVOID /*file_node*/, PVOID file_desc, auto winfsp_drive::GetFileInfo(PVOID /*file_node*/, PVOID file_desc,
FileInfo *file_info) -> NTSTATUS { FileInfo *file_info) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto error = api_error::invalid_handle; auto error = api_error::invalid_handle;
@ -433,9 +415,7 @@ auto winfsp_drive::GetFileInfo(PVOID /*file_node*/, PVOID file_desc,
auto winfsp_drive::get_file_size(const std::string &api_path) const auto winfsp_drive::get_file_size(const std::string &api_path) const
-> std::uint64_t { -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::uint64_t file_size{}; std::uint64_t file_size{};
auto res = provider_.get_file_size(api_path, file_size); auto res = provider_.get_file_size(api_path, file_size);
@ -464,9 +444,10 @@ auto winfsp_drive::get_item_meta(const std::string &api_path,
return ret; return ret;
} }
auto winfsp_drive::get_security_by_name( auto winfsp_drive::get_security_by_name(PWSTR file_name, PUINT32 attributes,
PWSTR file_name, PUINT32 attributes, PSECURITY_DESCRIPTOR descriptor, PSECURITY_DESCRIPTOR descriptor,
std::uint64_t *descriptor_size) -> NTSTATUS { std::uint64_t *descriptor_size)
-> NTSTATUS {
const auto api_path = const auto api_path =
utils::path::create_api_path(utils::string::to_utf8(file_name)); utils::path::create_api_path(utils::string::to_utf8(file_name));
@ -502,9 +483,7 @@ auto winfsp_drive::get_security_by_name(
auto winfsp_drive::GetSecurityByName(PWSTR file_name, PUINT32 attributes, auto winfsp_drive::GetSecurityByName(PWSTR file_name, PUINT32 attributes,
PSECURITY_DESCRIPTOR descriptor, PSECURITY_DESCRIPTOR descriptor,
SIZE_T *descriptor_size) -> NTSTATUS { SIZE_T *descriptor_size) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto api_path = const auto api_path =
utils::path::create_api_path(utils::string::to_utf8(file_name)); utils::path::create_api_path(utils::string::to_utf8(file_name));
@ -541,9 +520,7 @@ void winfsp_drive::get_volume_info(UINT64 &total_size, UINT64 &free_size,
} }
auto winfsp_drive::GetVolumeInfo(VolumeInfo *volume_info) -> NTSTATUS { auto winfsp_drive::GetVolumeInfo(VolumeInfo *volume_info) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const std::wstring volume_label = utils::string::from_utf8( const std::wstring volume_label = utils::string::from_utf8(
utils::create_volume_label(config_.get_provider_type())); utils::create_volume_label(config_.get_provider_type()));
@ -619,9 +596,7 @@ auto winfsp_drive::mount(const std::vector<std::string> &drive_args) -> int {
} }
auto winfsp_drive::Mounted(PVOID host) -> NTSTATUS { auto winfsp_drive::Mounted(PVOID host) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret{STATUS_SUCCESS}; auto ret{STATUS_SUCCESS};
if (not utils::file::change_to_process_directory()) { if (not utils::file::change_to_process_directory()) {
@ -687,9 +662,7 @@ auto winfsp_drive::Mounted(PVOID host) -> NTSTATUS {
auto winfsp_drive::Open(PWSTR file_name, UINT32 create_options, auto winfsp_drive::Open(PWSTR file_name, UINT32 create_options,
UINT32 granted_access, PVOID * /*file_node*/, UINT32 granted_access, PVOID * /*file_node*/,
PVOID *file_desc, OpenFileInfo *ofi) -> NTSTATUS { PVOID *file_desc, OpenFileInfo *ofi) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto api_path = const auto api_path =
utils::path::create_api_path(utils::string::to_utf8(file_name)); utils::path::create_api_path(utils::string::to_utf8(file_name));
@ -734,11 +707,9 @@ auto winfsp_drive::Open(PWSTR file_name, UINT32 create_options,
auto winfsp_drive::Overwrite(PVOID /*file_node*/, PVOID file_desc, auto winfsp_drive::Overwrite(PVOID /*file_node*/, PVOID file_desc,
UINT32 attributes, BOOLEAN replace_attributes, UINT32 attributes, BOOLEAN replace_attributes,
UINT64 /*allocation_size*/, UINT64 /*allocation_size*/, FileInfo *file_info)
FileInfo *file_info) -> NTSTATUS { -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto error = api_error::invalid_handle; auto error = api_error::invalid_handle;
@ -811,8 +782,9 @@ void winfsp_drive::populate_file_info(const std::string &api_path,
populate_file_info(file_size, meta, ofi.FileInfo); populate_file_info(file_size, meta, ofi.FileInfo);
} }
auto winfsp_drive::populate_file_info( auto winfsp_drive::populate_file_info(const std::string &api_path,
const std::string &api_path, remote::file_info &file_info) -> api_error { remote::file_info &file_info)
-> api_error {
api_meta_map meta{}; api_meta_map meta{};
auto ret = provider_.get_item_meta(api_path, meta); auto ret = provider_.get_item_meta(api_path, meta);
if (ret == api_error::success) { if (ret == api_error::success) {
@ -845,11 +817,9 @@ void winfsp_drive::populate_file_info(std::uint64_t file_size,
} }
auto winfsp_drive::Read(PVOID /*file_node*/, PVOID file_desc, PVOID buffer, auto winfsp_drive::Read(PVOID /*file_node*/, PVOID file_desc, PVOID buffer,
UINT64 offset, ULONG length, UINT64 offset, ULONG length, PULONG bytes_transferred)
PULONG bytes_transferred) -> NTSTATUS { -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
*bytes_transferred = 0U; *bytes_transferred = 0U;
@ -899,11 +869,9 @@ auto winfsp_drive::Read(PVOID /*file_node*/, PVOID file_desc, PVOID buffer,
auto winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc, auto winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc,
PWSTR /*pattern*/, PWSTR marker, PVOID buffer, PWSTR /*pattern*/, PWSTR marker, PVOID buffer,
ULONG buffer_length, ULONG buffer_length, PULONG bytes_transferred)
PULONG bytes_transferred) -> NTSTATUS { -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto error = api_error::invalid_handle; auto error = api_error::invalid_handle;
@ -1002,9 +970,7 @@ auto winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc,
auto winfsp_drive::Rename(PVOID /*file_node*/, PVOID /*file_desc*/, auto winfsp_drive::Rename(PVOID /*file_node*/, PVOID /*file_desc*/,
PWSTR file_name, PWSTR new_file_name, PWSTR file_name, PWSTR new_file_name,
BOOLEAN replace_if_exists) -> NTSTATUS { BOOLEAN replace_if_exists) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto from_api_path = const auto from_api_path =
utils::path::create_api_path(utils::string::to_utf8(file_name)); utils::path::create_api_path(utils::string::to_utf8(file_name));
@ -1034,11 +1000,9 @@ auto winfsp_drive::Rename(PVOID /*file_node*/, PVOID /*file_desc*/,
auto winfsp_drive::SetBasicInfo(PVOID /*file_node*/, PVOID file_desc, auto winfsp_drive::SetBasicInfo(PVOID /*file_node*/, PVOID file_desc,
UINT32 attributes, UINT64 creation_time, UINT32 attributes, UINT64 creation_time,
UINT64 last_access_time, UINT64 last_write_time, UINT64 last_access_time, UINT64 last_write_time,
UINT64 change_time, UINT64 change_time, FileInfo *file_info)
FileInfo *file_info) -> NTSTATUS { -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto error = api_error::invalid_handle; auto error = api_error::invalid_handle;
@ -1115,9 +1079,7 @@ void winfsp_drive::set_file_info(remote::file_info &dest,
auto winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc, auto winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc,
UINT64 new_size, BOOLEAN set_allocation_size, UINT64 new_size, BOOLEAN set_allocation_size,
FileInfo *file_info) -> NTSTATUS { FileInfo *file_info) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::string api_path; std::string api_path;
auto error = api_error::invalid_handle; auto error = api_error::invalid_handle;
@ -1172,9 +1134,7 @@ auto winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc,
} }
VOID winfsp_drive::Unmounted(PVOID host) { VOID winfsp_drive::Unmounted(PVOID host) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto *file_system_host = reinterpret_cast<FileSystemHost *>(host); auto *file_system_host = reinterpret_cast<FileSystemHost *>(host);
const auto mount_location = const auto mount_location =
@ -1206,9 +1166,7 @@ auto winfsp_drive::Write(PVOID /*file_node*/, PVOID file_desc, PVOID buffer,
UINT64 offset, ULONG length, BOOLEAN write_to_end, UINT64 offset, ULONG length, BOOLEAN write_to_end,
BOOLEAN constrained_io, PULONG bytes_transferred, BOOLEAN constrained_io, PULONG bytes_transferred,
FileInfo *file_info) -> NTSTATUS { FileInfo *file_info) -> NTSTATUS {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
*bytes_transferred = 0; *bytes_transferred = 0;

View File

@ -40,8 +40,8 @@
#include "utils/time.hpp" #include "utils/time.hpp"
namespace { namespace {
[[nodiscard]] auto [[nodiscard]] auto create_resume_entry(const repertory::i_open_file &file)
create_resume_entry(const repertory::i_open_file &file) -> json { -> json {
return { return {
{"chunk_size", file.get_chunk_size()}, {"chunk_size", file.get_chunk_size()},
{"path", file.get_api_path()}, {"path", file.get_api_path()},
@ -207,9 +207,7 @@ auto file_manager::create(const std::string &api_path, api_meta_map &meta,
} }
auto file_manager::evict_file(const std::string &api_path) -> bool { auto file_manager::evict_file(const std::string &api_path) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (provider_.is_direct_only()) { if (provider_.is_direct_only()) {
return false; return false;
@ -260,9 +258,7 @@ auto file_manager::evict_file(const std::string &api_path) -> bool {
auto file_manager::get_directory_items(const std::string &api_path) const auto file_manager::get_directory_items(const std::string &api_path) const
-> directory_item_list { -> directory_item_list {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
directory_item_list list{}; directory_item_list list{};
auto res = provider_.get_directory_items(api_path, list); auto res = provider_.get_directory_items(api_path, list);
@ -351,9 +347,7 @@ auto file_manager::get_open_handle_count() const -> std::size_t {
} }
auto file_manager::get_stored_downloads() const -> std::vector<json> { auto file_manager::get_stored_downloads() const -> std::vector<json> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::vector<json> ret; std::vector<json> ret;
if (not provider_.is_direct_only()) { if (not provider_.is_direct_only()) {
@ -461,10 +455,11 @@ auto file_manager::open(const std::string &api_path, bool directory,
return open(api_path, directory, ofd, handle, file, nullptr); return open(api_path, directory, ofd, handle, file, nullptr);
} }
auto file_manager::open( auto file_manager::open(const std::string &api_path, bool directory,
const std::string &api_path, bool directory, const open_file_data &ofd, const open_file_data &ofd, std::uint64_t &handle,
std::uint64_t &handle, std::shared_ptr<i_open_file> &file, std::shared_ptr<i_open_file> &file,
std::shared_ptr<i_closeable_open_file> closeable_file) -> api_error { std::shared_ptr<i_closeable_open_file> closeable_file)
-> api_error {
const auto create_and_add_handle = const auto create_and_add_handle =
[&](std::shared_ptr<i_closeable_open_file> cur_file) { [&](std::shared_ptr<i_closeable_open_file> cur_file) {
handle = get_next_handle(); handle = get_next_handle();
@ -546,9 +541,7 @@ void file_manager::queue_upload(const std::string &api_path,
} }
auto file_manager::remove_file(const std::string &api_path) -> api_error { auto file_manager::remove_file(const std::string &api_path) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
recur_mutex_lock open_lock(open_file_mtx_); recur_mutex_lock open_lock(open_file_mtx_);
@ -603,9 +596,7 @@ void file_manager::remove_upload(const std::string &api_path) {
} }
void file_manager::remove_upload(const std::string &api_path, bool no_lock) { void file_manager::remove_upload(const std::string &api_path, bool no_lock) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (provider_.is_direct_only()) { if (provider_.is_direct_only()) {
return; return;
@ -727,8 +718,8 @@ auto file_manager::rename_directory(const std::string &from_api_path,
} }
auto file_manager::rename_file(const std::string &from_api_path, auto file_manager::rename_file(const std::string &from_api_path,
const std::string &to_api_path, const std::string &to_api_path, bool overwrite)
bool overwrite) -> api_error { -> api_error {
if (not provider_.is_rename_supported()) { if (not provider_.is_rename_supported()) {
return api_error::not_implemented; return api_error::not_implemented;
} }
@ -800,9 +791,7 @@ auto file_manager::rename_file(const std::string &from_api_path,
} }
void file_manager::start() { void file_manager::start() {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
polling::instance().set_callback( polling::instance().set_callback(
{"timed_out_close", polling::frequency::second, {"timed_out_close", polling::frequency::second,
@ -980,9 +969,7 @@ void file_manager::store_resume(const i_open_file &file) {
void file_manager::swap_renamed_items(std::string from_api_path, void file_manager::swap_renamed_items(std::string from_api_path,
std::string to_api_path, bool directory) { std::string to_api_path, bool directory) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto file_iter = open_file_lookup_.find(from_api_path); auto file_iter = open_file_lookup_.find(from_api_path);
if (file_iter != open_file_lookup_.end()) { if (file_iter != open_file_lookup_.end()) {
@ -1009,9 +996,7 @@ void file_manager::swap_renamed_items(std::string from_api_path,
} }
void file_manager::upload_completed(const file_upload_completed &evt) { void file_manager::upload_completed(const file_upload_completed &evt) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
unique_mutex_lock upload_lock(upload_mtx_); unique_mutex_lock upload_lock(upload_mtx_);
@ -1053,9 +1038,7 @@ void file_manager::upload_completed(const file_upload_completed &evt) {
} }
void file_manager::upload_handler() { void file_manager::upload_handler() {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
while (not stop_requested_) { while (not stop_requested_) {
auto should_wait{true}; auto should_wait{true};

View File

@ -248,9 +248,7 @@ auto file_manager::open_file::native_operation(
auto file_manager::open_file::native_operation( auto file_manager::open_file::native_operation(
std::uint64_t new_file_size, std::uint64_t new_file_size,
i_open_file::native_operation_callback callback) -> api_error { i_open_file::native_operation_callback callback) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (fsi_.directory) { if (fsi_.directory) {
return api_error::invalid_operation; return api_error::invalid_operation;
@ -339,8 +337,8 @@ auto file_manager::open_file::native_operation(
} }
auto file_manager::open_file::read(std::size_t read_size, auto file_manager::open_file::read(std::size_t read_size,
std::uint64_t read_offset, std::uint64_t read_offset, data_buffer &data)
data_buffer &data) -> api_error { -> api_error {
if (fsi_.directory) { if (fsi_.directory) {
return api_error::invalid_operation; return api_error::invalid_operation;
} }
@ -418,9 +416,7 @@ auto file_manager::open_file::resize(std::uint64_t new_file_size) -> api_error {
} }
auto file_manager::open_file::close() -> bool { auto file_manager::open_file::close() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (not fsi_.directory && not stop_requested_) { if (not fsi_.directory && not stop_requested_) {
stop_requested_ = true; stop_requested_ = true;
@ -533,9 +529,7 @@ void file_manager::open_file::update_background_reader(std::size_t read_chunk) {
auto file_manager::open_file::write(std::uint64_t write_offset, auto file_manager::open_file::write(std::uint64_t write_offset,
const data_buffer &data, const data_buffer &data,
std::size_t &bytes_written) -> api_error { std::size_t &bytes_written) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
bytes_written = 0U; bytes_written = 0U;

View File

@ -86,9 +86,7 @@ file_manager::ring_buffer_open_file::ring_buffer_open_file(
} }
file_manager::ring_buffer_open_file::~ring_buffer_open_file() { file_manager::ring_buffer_open_file::~ring_buffer_open_file() {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
close(); close();

View File

@ -49,9 +49,7 @@ void file_manager::upload::cancel() {
void file_manager::upload::stop() { stop_requested_ = true; } void file_manager::upload::stop() { stop_requested_ = true; }
void file_manager::upload::upload_thread() { void file_manager::upload::upload_thread() {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
error_ = error_ =
provider_.upload_file(fsi_.api_path, fsi_.source_path, stop_requested_); provider_.upload_file(fsi_.api_path, fsi_.source_path, stop_requested_);

View File

@ -102,9 +102,7 @@ auto lock_data::get_state_directory() -> std::string {
} }
auto lock_data::grab_lock(std::uint8_t retry_count) -> lock_result { auto lock_data::grab_lock(std::uint8_t retry_count) -> lock_result {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (lock_fd_ == -1) { if (lock_fd_ == -1) {
return lock_result::failure; return lock_result::failure;
@ -126,9 +124,7 @@ auto lock_data::grab_lock(std::uint8_t retry_count) -> lock_result {
auto lock_data::set_mount_state(bool active, const std::string &mount_location, auto lock_data::set_mount_state(bool active, const std::string &mount_location,
int pid) -> bool { int pid) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret = false; auto ret = false;
auto handle = auto handle =

View File

@ -27,8 +27,8 @@
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
namespace repertory { namespace repertory {
auto lock_data::get_mount_state(const provider_type & /*pt*/, auto lock_data::get_mount_state(const provider_type & /*pt*/, json &mount_state)
json &mount_state) -> bool { -> bool {
const auto ret = get_mount_state(mount_state); const auto ret = get_mount_state(mount_state);
if (ret) { if (ret) {
const auto mount_id = const auto mount_id =
@ -73,9 +73,7 @@ auto lock_data::get_mount_state(json &mount_state) -> bool {
} }
auto lock_data::grab_lock(std::uint8_t retry_count) -> lock_result { auto lock_data::grab_lock(std::uint8_t retry_count) -> lock_result {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto ret = lock_result::success; auto ret = lock_result::success;
if (mutex_handle_ == INVALID_HANDLE_VALUE) { if (mutex_handle_ == INVALID_HANDLE_VALUE) {

View File

@ -33,8 +33,8 @@
namespace repertory { namespace repertory {
auto base_provider::create_api_file(std::string path, std::string key, auto base_provider::create_api_file(std::string path, std::string key,
std::uint64_t size, std::uint64_t size, std::uint64_t file_time)
std::uint64_t file_time) -> api_file { -> api_file {
api_file file{}; api_file file{};
file.api_path = utils::path::create_api_path(path); file.api_path = utils::path::create_api_path(path);
file.api_parent = utils::path::get_parent_api_path(file.api_path); file.api_parent = utils::path::get_parent_api_path(file.api_path);
@ -66,11 +66,9 @@ auto base_provider::create_api_file(std::string path, std::uint64_t size,
} }
auto base_provider::create_directory_clone_source_meta( auto base_provider::create_directory_clone_source_meta(
const std::string &source_api_path, const std::string &source_api_path, const std::string &api_path)
const std::string &api_path) -> api_error { -> api_error {
constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
bool exists{}; bool exists{};
auto res = is_file(source_api_path, exists); auto res = is_file(source_api_path, exists);
@ -122,9 +120,7 @@ auto base_provider::create_directory_clone_source_meta(
auto base_provider::create_directory(const std::string &api_path, auto base_provider::create_directory(const std::string &api_path,
api_meta_map &meta) -> api_error { api_meta_map &meta) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
bool exists{}; bool exists{};
auto res = is_directory(api_path, exists); auto res = is_directory(api_path, exists);
@ -168,11 +164,9 @@ auto base_provider::create_directory(const std::string &api_path,
return set_item_meta(api_path, meta); return set_item_meta(api_path, meta);
} }
auto base_provider::create_file(const std::string &api_path, auto base_provider::create_file(const std::string &api_path, api_meta_map &meta)
api_meta_map &meta) -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
bool exists{}; bool exists{};
auto res = is_directory(api_path, exists); auto res = is_directory(api_path, exists);
@ -228,11 +222,10 @@ auto base_provider::create_file(const std::string &api_path,
return api_error::error; return api_error::error;
} }
auto base_provider::get_api_path_from_source( auto base_provider::get_api_path_from_source(const std::string &source_path,
const std::string &source_path, std::string &api_path) const -> api_error { std::string &api_path) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
if (source_path.empty()) { if (source_path.empty()) {
utils::error::raise_api_path_error(function_name, api_path, utils::error::raise_api_path_error(function_name, api_path,
@ -244,11 +237,10 @@ auto base_provider::get_api_path_from_source(
return db3_->get_api_path(source_path, api_path); return db3_->get_api_path(source_path, api_path);
} }
auto base_provider::get_directory_items( auto base_provider::get_directory_items(const std::string &api_path,
const std::string &api_path, directory_item_list &list) const -> api_error { directory_item_list &list) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
bool exists{}; bool exists{};
auto res = is_directory(api_path, exists); auto res = is_directory(api_path, exists);
@ -311,9 +303,10 @@ auto base_provider::get_file_size(const std::string &api_path,
return api_error::success; return api_error::success;
} }
auto base_provider::get_filesystem_item( auto base_provider::get_filesystem_item(const std::string &api_path,
const std::string &api_path, bool directory, bool directory,
filesystem_item &fsi) const -> api_error { filesystem_item &fsi) const
-> api_error {
bool exists{}; bool exists{};
auto res = is_directory(api_path, exists); auto res = is_directory(api_path, exists);
if (res != api_error::success) { if (res != api_error::success) {
@ -346,9 +339,10 @@ auto base_provider::get_filesystem_item(
return api_error::success; return api_error::success;
} }
auto base_provider::get_filesystem_item_and_file( auto base_provider::get_filesystem_item_and_file(const std::string &api_path,
const std::string &api_path, api_file &file, api_file &file,
filesystem_item &fsi) const -> api_error { filesystem_item &fsi) const
-> api_error {
auto res = get_file(api_path, file); auto res = get_file(api_path, file);
if (res != api_error::success) { if (res != api_error::success) {
return res; return res;
@ -409,9 +403,7 @@ auto base_provider::get_total_item_count() const -> std::uint64_t {
} }
auto base_provider::get_used_drive_space() const -> std::uint64_t { auto base_provider::get_used_drive_space() const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto used_space = get_used_drive_space_impl(); auto used_space = get_used_drive_space_impl();
@ -437,9 +429,7 @@ auto base_provider::is_file_writeable(const std::string &api_path) const
} }
void base_provider::remove_deleted_files(bool source_only) { void base_provider::remove_deleted_files(bool source_only) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (not is_direct_only()) { if (not is_direct_only()) {
auto source_list = auto source_list =
@ -734,9 +724,7 @@ void base_provider::stop() {
auto base_provider::upload_file(const std::string &api_path, auto base_provider::upload_file(const std::string &api_path,
const std::string &source_path, const std::string &source_path,
stop_type &stop_requested) -> api_error { stop_type &stop_requested) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
event_system::instance().raise<provider_upload_begin>(api_path, source_path); event_system::instance().raise<provider_upload_begin>(api_path, source_path);

View File

@ -69,9 +69,10 @@ const std::map<std::string, std::string> sql_create_tables = {
namespace repertory { namespace repertory {
encrypt_provider::encrypt_provider(app_config &config) : config_(config) {} encrypt_provider::encrypt_provider(app_config &config) : config_(config) {}
auto encrypt_provider::create_api_file( auto encrypt_provider::create_api_file(const std::string &api_path,
const std::string &api_path, bool directory, bool directory,
const std::string &source_path) -> api_file { const std::string &source_path)
-> api_file {
auto times = utils::file::get_times(source_path); auto times = utils::file::get_times(source_path);
if (not times.has_value()) { if (not times.has_value()) {
throw std::runtime_error("failed to get file times"); throw std::runtime_error("failed to get file times");
@ -187,11 +188,10 @@ auto encrypt_provider::do_fs_operation(
return callback(cfg, source_path); return callback(cfg, source_path);
} }
auto encrypt_provider::get_api_path_from_source( auto encrypt_provider::get_api_path_from_source(const std::string &source_path,
const std::string &source_path, std::string &api_path) const -> api_error { std::string &api_path) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
try { try {
auto result = utils::db::sqlite::db_select{*db_, file_table} auto result = utils::db::sqlite::db_select{*db_, file_table}
@ -231,9 +231,7 @@ auto encrypt_provider::get_api_path_from_source(
auto encrypt_provider::get_directory_item_count( auto encrypt_provider::get_directory_item_count(
const std::string &api_path) const -> std::uint64_t { const std::string &api_path) const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::uint64_t count{}; std::uint64_t count{};
auto res = do_fs_operation( auto res = do_fs_operation(
@ -257,11 +255,10 @@ auto encrypt_provider::get_directory_item_count(
return count; return count;
} }
auto encrypt_provider::get_directory_items( auto encrypt_provider::get_directory_items(const std::string &api_path,
const std::string &api_path, directory_item_list &list) const -> api_error { directory_item_list &list) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
return do_fs_operation( return do_fs_operation(
api_path, true, api_path, true,
@ -374,9 +371,7 @@ auto encrypt_provider::get_directory_items(
auto encrypt_provider::get_file(const std::string &api_path, auto encrypt_provider::get_file(const std::string &api_path,
api_file &file) const -> api_error { api_file &file) const -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
bool exists{}; bool exists{};
@ -411,9 +406,7 @@ auto encrypt_provider::get_file(const std::string &api_path,
} }
auto encrypt_provider::get_file_list(api_file_list &list) const -> api_error { auto encrypt_provider::get_file_list(api_file_list &list) const -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto cfg = config_.get_encrypt_config(); const auto cfg = config_.get_encrypt_config();
event_system::instance().raise<debug_log>(std::string{function_name}, event_system::instance().raise<debug_log>(std::string{function_name},
@ -437,11 +430,10 @@ auto encrypt_provider::get_file_list(api_file_list &list) const -> api_error {
return api_error::error; return api_error::error;
} }
auto encrypt_provider::get_file_size( auto encrypt_provider::get_file_size(const std::string &api_path,
const std::string &api_path, std::uint64_t &file_size) const -> api_error { std::uint64_t &file_size) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
try { try {
auto result = utils::db::sqlite::db_select{*db_, source_table} auto result = utils::db::sqlite::db_select{*db_, source_table}
@ -466,9 +458,10 @@ auto encrypt_provider::get_file_size(
return api_error::error; return api_error::error;
} }
auto encrypt_provider::get_filesystem_item( auto encrypt_provider::get_filesystem_item(const std::string &api_path,
const std::string &api_path, bool directory, bool directory,
filesystem_item &fsi) const -> api_error { filesystem_item &fsi) const
-> api_error {
auto result = utils::db::sqlite::db_select{*db_, source_table} auto result = utils::db::sqlite::db_select{*db_, source_table}
.column("source_path") .column("source_path")
.where("api_path") .where("api_path")
@ -544,12 +537,11 @@ auto encrypt_provider::get_filesystem_item_from_source_path(
return get_filesystem_item(api_path, false, fsi); return get_filesystem_item(api_path, false, fsi);
} }
auto encrypt_provider::get_filesystem_item_and_file( auto encrypt_provider::get_filesystem_item_and_file(const std::string &api_path,
const std::string &api_path, api_file &file, api_file &file,
filesystem_item &fsi) const -> api_error { filesystem_item &fsi) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
try { try {
bool exists{}; bool exists{};
@ -582,9 +574,7 @@ auto encrypt_provider::get_pinned_files() const -> std::vector<std::string> {
auto encrypt_provider::get_item_meta(const std::string &api_path, auto encrypt_provider::get_item_meta(const std::string &api_path,
api_meta_map &meta) const -> api_error { api_meta_map &meta) const -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto result = utils::db::sqlite::db_select{*db_, source_table} auto result = utils::db::sqlite::db_select{*db_, source_table}
@ -677,8 +667,8 @@ auto encrypt_provider::is_directory(const std::string &api_path,
return api_error::success; return api_error::success;
} }
auto encrypt_provider::is_file(const std::string &api_path, auto encrypt_provider::is_file(const std::string &api_path, bool &exists) const
bool &exists) const -> api_error { -> api_error {
auto result = utils::db::sqlite::db_select{*db_, source_table} auto result = utils::db::sqlite::db_select{*db_, source_table}
.column("source_path") .column("source_path")
.where("api_path") .where("api_path")
@ -863,9 +853,7 @@ auto encrypt_provider::read_file_bytes(const std::string &api_path,
std::size_t size, std::uint64_t offset, std::size_t size, std::uint64_t offset,
data_buffer &data, data_buffer &data,
stop_type &stop_requested) -> api_error { stop_type &stop_requested) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto result = utils::db::sqlite::db_select{*db_, source_table} auto result = utils::db::sqlite::db_select{*db_, source_table}
.column("source_path") .column("source_path")
@ -1037,9 +1025,7 @@ void encrypt_provider::remove_deleted_files() {
auto encrypt_provider::start(api_item_added_callback /*api_item_added*/, auto encrypt_provider::start(api_item_added_callback /*api_item_added*/,
i_file_manager * /*mgr*/) -> bool { i_file_manager * /*mgr*/) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (not is_online()) { if (not is_online()) {
return false; return false;

View File

@ -32,9 +32,7 @@
namespace repertory { namespace repertory {
meta_db::meta_db(const app_config &cfg) { meta_db::meta_db(const app_config &cfg) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto db_path = utils::path::combine(cfg.get_data_directory(), {"meta.db3"}); auto db_path = utils::path::combine(cfg.get_data_directory(), {"meta.db3"});
@ -110,11 +108,9 @@ auto meta_db::get_api_path_list() -> std::vector<std::string> {
return ret; return ret;
} }
auto meta_db::get_item_meta(const std::string &api_path, auto meta_db::get_item_meta(const std::string &api_path, api_meta_map &meta)
api_meta_map &meta) -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto result = utils::db::sqlite::db_select{*db_, table_name} auto result = utils::db::sqlite::db_select{*db_, table_name}
.column("*") .column("*")
@ -153,9 +149,7 @@ auto meta_db::get_item_meta(const std::string &api_path,
auto meta_db::get_item_meta(const std::string &api_path, const std::string &key, auto meta_db::get_item_meta(const std::string &api_path, const std::string &key,
std::string &value) const -> api_error { std::string &value) const -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto result = utils::db::sqlite::db_select{*db_, table_name} auto result = utils::db::sqlite::db_select{*db_, table_name}
.column("*") .column("*")
@ -196,9 +190,7 @@ auto meta_db::get_item_meta(const std::string &api_path, const std::string &key,
} }
auto meta_db::get_pinned_files() const -> std::vector<std::string> { auto meta_db::get_pinned_files() const -> std::vector<std::string> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::vector<std::string> ret{}; std::vector<std::string> ret{};
@ -222,9 +214,7 @@ auto meta_db::get_pinned_files() const -> std::vector<std::string> {
} }
auto meta_db::get_total_item_count() const -> std::uint64_t { auto meta_db::get_total_item_count() const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
std::uint64_t ret{}; std::uint64_t ret{};
@ -247,9 +237,7 @@ auto meta_db::get_total_item_count() const -> std::uint64_t {
} }
void meta_db::remove_api_path(const std::string &api_path) { void meta_db::remove_api_path(const std::string &api_path) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto result = utils::db::sqlite::db_delete{*db_, table_name} auto result = utils::db::sqlite::db_delete{*db_, table_name}
.where("api_path") .where("api_path")
@ -304,11 +292,9 @@ auto meta_db::set_item_meta(const std::string &api_path,
return update_item_meta(api_path, existing_meta); return update_item_meta(api_path, existing_meta);
} }
auto meta_db::update_item_meta(const std::string &api_path, auto meta_db::update_item_meta(const std::string &api_path, api_meta_map meta)
api_meta_map meta) -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto directory = utils::string::to_bool(meta[META_DIRECTORY]); auto directory = utils::string::to_bool(meta[META_DIRECTORY]);
auto pinned = utils::string::to_bool(meta[META_PINNED]); auto pinned = utils::string::to_bool(meta[META_PINNED]);

View File

@ -43,8 +43,9 @@ s3_provider::s3_provider(app_config &config, i_http_comm &comm)
get_comm().enable_s3_path_style(config.get_s3_config().use_path_style); get_comm().enable_s3_path_style(config.get_s3_config().use_path_style);
} }
auto s3_provider::add_if_not_found( auto s3_provider::add_if_not_found(api_file &file,
api_file &file, const std::string &object_name) const -> api_error { const std::string &object_name) const
-> api_error {
api_meta_map meta{}; api_meta_map meta{};
if (get_item_meta(file.api_path, meta) == api_error::item_not_found) { if (get_item_meta(file.api_path, meta) == api_error::item_not_found) {
auto err = create_path_directories( auto err = create_path_directories(
@ -83,9 +84,7 @@ auto s3_provider::convert_api_date(std::string_view date) -> std::uint64_t {
auto s3_provider::create_directory_impl(const std::string &api_path, auto s3_provider::create_directory_impl(const std::string &api_path,
api_meta_map &meta) -> api_error { api_meta_map &meta) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto cfg = get_config().get_s3_config(); const auto cfg = get_config().get_s3_config();
const auto is_encrypted = not cfg.encryption_token.empty(); const auto is_encrypted = not cfg.encryption_token.empty();
@ -138,9 +137,7 @@ auto s3_provider::create_directory_impl(const std::string &api_path,
auto s3_provider::create_file_extra(const std::string &api_path, auto s3_provider::create_file_extra(const std::string &api_path,
api_meta_map &meta) -> api_error { api_meta_map &meta) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (not get_config().get_s3_config().encryption_token.empty()) { if (not get_config().get_s3_config().encryption_token.empty()) {
std::string encrypted_file_path; std::string encrypted_file_path;
@ -165,8 +162,9 @@ auto s3_provider::create_file_extra(const std::string &api_path,
return api_error::success; return api_error::success;
} }
auto s3_provider::create_path_directories( auto s3_provider::create_path_directories(const std::string &api_path,
const std::string &api_path, const std::string &key) const -> api_error { const std::string &key) const
-> api_error {
if (api_path == "/") { if (api_path == "/") {
return api_error::success; return api_error::success;
} }
@ -224,9 +222,7 @@ auto s3_provider::decrypt_object_name(std::string &object_name) const
auto s3_provider::get_directory_item_count(const std::string &api_path) const auto s3_provider::get_directory_item_count(const std::string &api_path) const
-> std::uint64_t { -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
const auto cfg = get_config().get_s3_config(); const auto cfg = get_config().get_s3_config();
@ -284,8 +280,9 @@ auto s3_provider::get_directory_item_count(const std::string &api_path) const
return 0U; return 0U;
} }
auto s3_provider::get_directory_items_impl( auto s3_provider::get_directory_items_impl(const std::string &api_path,
const std::string &api_path, directory_item_list &list) const -> api_error { directory_item_list &list) const
-> api_error {
const auto cfg = get_config().get_s3_config(); const auto cfg = get_config().get_s3_config();
const auto is_encrypted = not cfg.encryption_token.empty(); const auto is_encrypted = not cfg.encryption_token.empty();
@ -400,11 +397,9 @@ auto s3_provider::get_directory_items_impl(
return ret; return ret;
} }
auto s3_provider::get_file(const std::string &api_path, auto s3_provider::get_file(const std::string &api_path, api_file &file) const
api_file &file) const -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
bool is_encrypted{}; bool is_encrypted{};
@ -494,8 +489,9 @@ auto s3_provider::get_file_list(api_file_list &list) const -> api_error {
return api_error::success; return api_error::success;
} }
auto s3_provider::get_last_modified( auto s3_provider::get_last_modified(bool directory,
bool directory, const std::string &api_path) const -> std::uint64_t { const std::string &api_path) const
-> std::uint64_t {
bool is_encrypted{}; bool is_encrypted{};
std::string object_name; std::string object_name;
head_object_result result{}; head_object_result result{};
@ -505,12 +501,11 @@ auto s3_provider::get_last_modified(
: utils::time::get_time_now(); : utils::time::get_time_now();
} }
auto s3_provider::get_object_info( auto s3_provider::get_object_info(bool directory, const std::string &api_path,
bool directory, const std::string &api_path, bool &is_encrypted, bool &is_encrypted, std::string &object_name,
std::string &object_name, head_object_result &result) const -> api_error { head_object_result &result) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
try { try {
const auto cfg = get_config().get_s3_config(); const auto cfg = get_config().get_s3_config();
@ -556,10 +551,11 @@ auto s3_provider::get_object_info(
return api_error::error; return api_error::error;
} }
auto s3_provider::get_object_list( auto s3_provider::get_object_list(std::string &response_data,
std::string &response_data, long &response_code, long &response_code,
std::optional<std::string> delimiter, std::optional<std::string> delimiter,
std::optional<std::string> prefix) const -> bool { std::optional<std::string> prefix) const
-> bool {
curl::requests::http_get get{}; curl::requests::http_get get{};
get.allow_timeout = true; get.allow_timeout = true;
get.aws_service = "aws:amz:" + get_config().get_s3_config().region + ":s3"; get.aws_service = "aws:amz:" + get_config().get_s3_config().region + ":s3";
@ -616,11 +612,9 @@ auto s3_provider::get_used_drive_space_impl() const -> std::uint64_t {
}); });
} }
auto s3_provider::is_directory(const std::string &api_path, auto s3_provider::is_directory(const std::string &api_path, bool &exists) const
bool &exists) const -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
exists = false; exists = false;
if (api_path == "/") { if (api_path == "/") {
@ -646,11 +640,9 @@ auto s3_provider::is_directory(const std::string &api_path,
return api_error::error; return api_error::error;
} }
auto s3_provider::is_file(const std::string &api_path, auto s3_provider::is_file(const std::string &api_path, bool &exists) const
bool &exists) const -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
exists = false; exists = false;
if (api_path == "/") { if (api_path == "/") {
@ -683,9 +675,7 @@ auto s3_provider::is_online() const -> bool {
auto s3_provider::read_file_bytes(const std::string &api_path, std::size_t size, auto s3_provider::read_file_bytes(const std::string &api_path, std::size_t size,
std::uint64_t offset, data_buffer &data, std::uint64_t offset, data_buffer &data,
stop_type &stop_requested) -> api_error { stop_type &stop_requested) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
const auto cfg = get_config().get_s3_config(); const auto cfg = get_config().get_s3_config();
@ -791,9 +781,7 @@ auto s3_provider::read_file_bytes(const std::string &api_path, std::size_t size,
auto s3_provider::remove_directory_impl(const std::string &api_path) auto s3_provider::remove_directory_impl(const std::string &api_path)
-> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto cfg = get_config().get_s3_config(); const auto cfg = get_config().get_s3_config();
const auto is_encrypted = not cfg.encryption_token.empty(); const auto is_encrypted = not cfg.encryption_token.empty();
@ -835,9 +823,7 @@ auto s3_provider::remove_directory_impl(const std::string &api_path)
} }
auto s3_provider::remove_file_impl(const std::string &api_path) -> api_error { auto s3_provider::remove_file_impl(const std::string &api_path) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto cfg = get_config().get_s3_config(); const auto cfg = get_config().get_s3_config();
const auto is_encrypted = not cfg.encryption_token.empty(); const auto is_encrypted = not cfg.encryption_token.empty();

View File

@ -45,8 +45,8 @@ namespace {
return cfg.bucket; return cfg.bucket;
} }
[[nodiscard]] auto [[nodiscard]] auto get_last_modified(const nlohmann::json &obj)
get_last_modified(const nlohmann::json &obj) -> std::uint64_t { -> std::uint64_t {
try { try {
return repertory::s3_provider::convert_api_date( return repertory::s3_provider::convert_api_date(
obj["modTime"].get<std::string>()); obj["modTime"].get<std::string>());
@ -60,11 +60,10 @@ namespace repertory {
sia_provider::sia_provider(app_config &config, i_http_comm &comm) sia_provider::sia_provider(app_config &config, i_http_comm &comm)
: base_provider(config, comm) {} : base_provider(config, comm) {}
auto sia_provider::create_directory_impl( auto sia_provider::create_directory_impl(const std::string &api_path,
const std::string &api_path, api_meta_map & /* meta */) -> api_error { api_meta_map & /* meta */)
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
curl::requests::http_put_file put_file{}; curl::requests::http_put_file put_file{};
put_file.allow_timeout = true; put_file.allow_timeout = true;
@ -91,9 +90,7 @@ auto sia_provider::create_directory_impl(
auto sia_provider::get_directory_item_count(const std::string &api_path) const auto sia_provider::get_directory_item_count(const std::string &api_path) const
-> std::uint64_t { -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
json object_list{}; json object_list{};
@ -129,11 +126,10 @@ auto sia_provider::get_directory_item_count(const std::string &api_path) const
return 0U; return 0U;
} }
auto sia_provider::get_directory_items_impl( auto sia_provider::get_directory_items_impl(const std::string &api_path,
const std::string &api_path, directory_item_list &list) const -> api_error { directory_item_list &list) const
static constexpr const std::string_view function_name{ -> api_error {
static_cast<const char *>(__FUNCTION__), REPERTORY_USES_FUNCTION_NAME();
};
json object_list{}; json object_list{};
if (not get_object_list(api_path, object_list)) { if (not get_object_list(api_path, object_list)) {
@ -190,8 +186,8 @@ auto sia_provider::get_directory_items_impl(
return api_error::success; return api_error::success;
} }
auto sia_provider::get_file(const std::string &api_path, auto sia_provider::get_file(const std::string &api_path, api_file &file) const
api_file &file) const -> api_error { -> api_error {
json file_data{}; json file_data{};
auto res = get_object_info(api_path, file_data); auto res = get_object_info(api_path, file_data);
if (res != api_error::success) { if (res != api_error::success) {
@ -219,9 +215,7 @@ auto sia_provider::get_file(const std::string &api_path,
} }
auto sia_provider::get_file_list(api_file_list &list) const -> api_error { auto sia_provider::get_file_list(api_file_list &list) const -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
using dir_func = std::function<api_error(std::string api_path)>; using dir_func = std::function<api_error(std::string api_path)>;
const dir_func get_files_in_dir = [&](std::string api_path) -> api_error { const dir_func get_files_in_dir = [&](std::string api_path) -> api_error {
@ -287,9 +281,7 @@ auto sia_provider::get_file_list(api_file_list &list) const -> api_error {
auto sia_provider::get_object_info(const std::string &api_path, auto sia_provider::get_object_info(const std::string &api_path,
json &object_info) const -> api_error { json &object_info) const -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
curl::requests::http_get get{}; curl::requests::http_get get{};
@ -331,9 +323,7 @@ auto sia_provider::get_object_info(const std::string &api_path,
auto sia_provider::get_object_list(const std::string &api_path, auto sia_provider::get_object_list(const std::string &api_path,
nlohmann::json &object_list) const -> bool { nlohmann::json &object_list) const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
curl::requests::http_get get{}; curl::requests::http_get get{};
get.allow_timeout = true; get.allow_timeout = true;
@ -366,9 +356,7 @@ auto sia_provider::get_object_list(const std::string &api_path,
} }
auto sia_provider::get_total_drive_space() const -> std::uint64_t { auto sia_provider::get_total_drive_space() const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
curl::requests::http_get get{}; curl::requests::http_get get{};
@ -406,9 +394,7 @@ auto sia_provider::get_total_drive_space() const -> std::uint64_t {
} }
auto sia_provider::get_used_drive_space_impl() const -> std::uint64_t { auto sia_provider::get_used_drive_space_impl() const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
curl::requests::http_get get{}; curl::requests::http_get get{};
get.allow_timeout = true; get.allow_timeout = true;
@ -438,11 +424,9 @@ auto sia_provider::get_used_drive_space_impl() const -> std::uint64_t {
return object_data["totalObjectsSize"].get<std::uint64_t>(); return object_data["totalObjectsSize"].get<std::uint64_t>();
} }
auto sia_provider::is_directory(const std::string &api_path, auto sia_provider::is_directory(const std::string &api_path, bool &exists) const
bool &exists) const -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (api_path == "/") { if (api_path == "/") {
exists = true; exists = true;
@ -473,11 +457,9 @@ auto sia_provider::is_directory(const std::string &api_path,
return api_error::error; return api_error::error;
} }
auto sia_provider::is_file(const std::string &api_path, auto sia_provider::is_file(const std::string &api_path, bool &exists) const
bool &exists) const -> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
exists = false; exists = false;
if (api_path == "/") { if (api_path == "/") {
@ -506,9 +488,7 @@ auto sia_provider::is_file(const std::string &api_path,
} }
auto sia_provider::is_online() const -> bool { auto sia_provider::is_online() const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
curl::requests::http_get get{}; curl::requests::http_get get{};
@ -551,9 +531,7 @@ auto sia_provider::read_file_bytes(const std::string &api_path,
std::size_t size, std::uint64_t offset, std::size_t size, std::uint64_t offset,
data_buffer &buffer, data_buffer &buffer,
stop_type &stop_requested) -> api_error { stop_type &stop_requested) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
curl::requests::http_get get{}; curl::requests::http_get get{};
get.path = "/api/worker/objects" + api_path; get.path = "/api/worker/objects" + api_path;
@ -607,9 +585,7 @@ auto sia_provider::read_file_bytes(const std::string &api_path,
auto sia_provider::remove_directory_impl(const std::string &api_path) auto sia_provider::remove_directory_impl(const std::string &api_path)
-> api_error { -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
curl::requests::http_delete del{}; curl::requests::http_delete del{};
del.allow_timeout = true; del.allow_timeout = true;
@ -635,9 +611,7 @@ auto sia_provider::remove_directory_impl(const std::string &api_path)
} }
auto sia_provider::remove_file_impl(const std::string &api_path) -> api_error { auto sia_provider::remove_file_impl(const std::string &api_path) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
curl::requests::http_delete del{}; curl::requests::http_delete del{};
del.allow_timeout = true; del.allow_timeout = true;
@ -665,9 +639,7 @@ auto sia_provider::remove_file_impl(const std::string &api_path) -> api_error {
auto sia_provider::rename_file(const std::string &from_api_path, auto sia_provider::rename_file(const std::string &from_api_path,
const std::string &to_api_path) -> api_error { const std::string &to_api_path) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
curl::requests::http_post post{}; curl::requests::http_post post{};
post.json = nlohmann::json({ post.json = nlohmann::json({
@ -713,9 +685,7 @@ void sia_provider::stop() {
auto sia_provider::upload_file_impl(const std::string &api_path, auto sia_provider::upload_file_impl(const std::string &api_path,
const std::string &source_path, const std::string &source_path,
stop_type &stop_requested) -> api_error { stop_type &stop_requested) -> api_error {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
curl::requests::http_put_file put_file{}; curl::requests::http_put_file put_file{};
put_file.path = "/api/worker/objects" + api_path; put_file.path = "/api/worker/objects" + api_path;

View File

@ -88,9 +88,7 @@ void full_server::handle_get_pinned_files(const httplib::Request & /*req*/,
void full_server::handle_get_pinned_status(const httplib::Request &req, void full_server::handle_get_pinned_status(const httplib::Request &req,
httplib::Response &res) { httplib::Response &res) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto api_path = const auto api_path =
utils::path::create_api_path(req.get_param_value("api_path")); utils::path::create_api_path(req.get_param_value("api_path"));
@ -114,9 +112,7 @@ void full_server::handle_get_pinned_status(const httplib::Request &req,
void full_server::handle_pin_file(const httplib::Request &req, void full_server::handle_pin_file(const httplib::Request &req,
httplib::Response &res) { httplib::Response &res) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto api_path = const auto api_path =
utils::path::create_api_path(req.get_param_value("api_path")); utils::path::create_api_path(req.get_param_value("api_path"));
@ -145,9 +141,7 @@ void full_server::handle_pin_file(const httplib::Request &req,
void full_server::handle_unpin_file(const httplib::Request &req, void full_server::handle_unpin_file(const httplib::Request &req,
httplib::Response &res) { httplib::Response &res) {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto api_path = const auto api_path =
utils::path::create_api_path(req.get_param_value("api_path")); utils::path::create_api_path(req.get_param_value("api_path"));

View File

@ -29,9 +29,7 @@ namespace repertory {
server::server(app_config &config) : config_(config) {} server::server(app_config &config) : config_(config) {}
auto server::check_authorization(const httplib::Request &req) -> bool { auto server::check_authorization(const httplib::Request &req) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (config_.get_api_auth().empty() || config_.get_api_user().empty()) { if (config_.get_api_auth().empty() || config_.get_api_user().empty()) {
utils::error::raise_error(function_name, utils::error::raise_error(function_name,
@ -134,9 +132,7 @@ void server::initialize(httplib::Server &inst) {
} }
void server::start() { void server::start() {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
mutex_lock lock(start_stop_mutex_); mutex_lock lock(start_stop_mutex_);
if (not started_) { if (not started_) {

View File

@ -29,6 +29,11 @@
namespace { namespace {
struct repertory_exception_handler final struct repertory_exception_handler final
: repertory::utils::error::i_exception_handler { : repertory::utils::error::i_exception_handler {
void handle_error(std::string_view function_name,
std::string_view msg) const override {
repertory::utils::error::raise_error(function_name, msg);
}
void handle_exception(std::string_view function_name) const override { void handle_exception(std::string_view function_name) const override {
repertory::utils::error::raise_error(function_name, "|exception|unknown"); repertory::utils::error::raise_error(function_name, "|exception|unknown");
} }
@ -39,7 +44,7 @@ struct repertory_exception_handler final
} }
}; };
static std::unique_ptr<repertory_exception_handler> handler{([]() -> auto * { std::unique_ptr<repertory_exception_handler> handler{([]() -> auto * {
auto *ptr = new repertory_exception_handler{}; auto *ptr = new repertory_exception_handler{};
repertory::utils::error::set_exception_handler(ptr); repertory::utils::error::set_exception_handler(ptr);
return ptr; return ptr;

View File

@ -30,9 +30,7 @@
namespace repertory::utils::file { namespace repertory::utils::file {
auto get_directory_files(std::string_view path, bool oldest_first, auto get_directory_files(std::string_view path, bool oldest_first,
bool recursive) -> std::deque<std::string> { bool recursive) -> std::deque<std::string> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto abs_path = utils::path::absolute(path); auto abs_path = utils::path::absolute(path);
std::deque<std::string> ret; std::deque<std::string> ret;

View File

@ -36,11 +36,12 @@ template <typename drive> inline void help(std::vector<const char *> args) {
std::cout << " -di,--drive_information Display mounted drive " std::cout << " -di,--drive_information Display mounted drive "
"information" "information"
<< std::endl; << std::endl;
std::cout << " -s3,--s3 Enables S3 mode" std::cout
<< std::endl; << " -na,--name Unique name for S3 or Sia "
std::cout << " -na,--name Unique name for S3 "
"instance [Required]" "instance [Required]"
<< std::endl; << std::endl;
std::cout << " -s3,--s3 Enables S3 mode"
<< std::endl;
std::cout std::cout
<< " -gc,--generate_config Generate initial configuration" << " -gc,--generate_config Generate initial configuration"
<< std::endl; << std::endl;

View File

@ -76,7 +76,11 @@ mount(std::vector<const char *> args, std::string data_directory,
config.set_remote_host_name_or_ip(remote_host); config.set_remote_host_name_or_ip(remote_host);
config.set_remote_port(remote_port); config.set_remote_port(remote_port);
config.save(); config.save();
} else if (prov == provider_type::sia &&
config.get_sia_config().bucket.empty()) {
config.set_value_by_name("SiaConfig.Bucket", unique_id);
} }
std::cout << "Generated " << app_config::get_provider_display_name(prov) std::cout << "Generated " << app_config::get_provider_display_name(prov)
<< " Configuration" << std::endl; << " Configuration" << std::endl;
std::cout << config.get_config_file_path() << std::endl; std::cout << config.get_config_file_path() << std::endl;
@ -88,7 +92,7 @@ mount(std::vector<const char *> args, std::string data_directory,
if (utils::cli::has_option(args, utils::cli::options::hidden_option)) { if (utils::cli::has_option(args, utils::cli::options::hidden_option)) {
::ShowWindow(::GetConsoleWindow(), SW_HIDE); ::ShowWindow(::GetConsoleWindow(), SW_HIDE);
} }
#endif #endif // defined(_WIN32)
const auto drive_args = const auto drive_args =
utils::cli::parse_drive_options(args, prov, data_directory); utils::cli::parse_drive_options(args, prov, data_directory);
app_config config(prov, data_directory); app_config config(prov, data_directory);
@ -112,7 +116,7 @@ mount(std::vector<const char *> args, std::string data_directory,
return exit_code::mount_result; return exit_code::mount_result;
} }
#endif #endif // defined(_WIN32)
std::cout << "Initializing " std::cout << "Initializing "
<< app_config::get_provider_display_name(prov) << app_config::get_provider_display_name(prov)
<< (unique_id.empty() ? "" << (unique_id.empty() ? ""
@ -152,6 +156,11 @@ mount(std::vector<const char *> args, std::string data_directory,
ret = exit_code::startup_exception; ret = exit_code::startup_exception;
} }
} else { } else {
if (prov == provider_type::sia &&
config.get_sia_config().bucket.empty()) {
config.set_value_by_name("SiaConfig.Bucket", unique_id);
}
config.set_is_remote_mount(false); config.set_is_remote_mount(false);
try { try {

View File

@ -72,7 +72,8 @@ auto main(int argc, char **argv) -> int {
std::string remote_host; std::string remote_host;
std::uint16_t remote_port{}; std::uint16_t remote_port{};
std::string unique_id; std::string unique_id;
if ((res == exit_code::success) && (prov == provider_type::remote)) { if (res == exit_code::success) {
if (prov == provider_type::remote) {
std::string data; std::string data;
res = utils::cli::parse_string_option( res = utils::cli::parse_string_option(
args, utils::cli::options::remote_mount_option, data); args, utils::cli::options::remote_mount_option, data);
@ -84,33 +85,41 @@ auto main(int argc, char **argv) -> int {
<< std::endl; << std::endl;
res = exit_code::invalid_syntax; res = exit_code::invalid_syntax;
} else { } else {
unique_id = parts[0U] + ':' + parts[1U]; unique_id = parts.at(0U) + ':' + parts.at(1U);
remote_host = parts[0U]; remote_host = parts.at(0U);
try { try {
remote_port = utils::string::to_uint16(parts[1U]); remote_port = utils::string::to_uint16(parts.at(1U));
data_directory = utils::path::combine( data_directory = utils::path::combine(
data_directory.empty() ? app_config::default_data_directory(prov) data_directory.empty()
? app_config::default_data_directory(prov)
: data_directory, : data_directory,
{utils::string::replace_copy(unique_id, ':', '_')}); {utils::string::replace_copy(unique_id, ':', '_')});
} catch (const std::exception &e) { } catch (const std::exception &e) {
std::cerr << (e.what() == nullptr ? "Unable to parse port" : e.what()) std::cerr << (e.what() == nullptr ? "Unable to parse port"
: e.what())
<< std::endl; << std::endl;
res = exit_code::invalid_syntax; res = exit_code::invalid_syntax;
} }
} }
} }
} } else if ((prov == provider_type::s3) || (prov == provider_type::sia)) {
if ((res == exit_code::success) && (prov == provider_type::s3)) {
std::string data; std::string data;
res = utils::cli::parse_string_option( res = utils::cli::parse_string_option(
args, utils::cli::options::name_option, data); args, utils::cli::options::name_option, data);
if (res == exit_code::success) { if (res == exit_code::success) {
unique_id = utils::string::trim(data); unique_id = utils::string::trim(data);
if (unique_id.empty()) { if (unique_id.empty()) {
std::cerr << "Name of S3 instance not provided" << std::endl; std::cerr << "Name of " << app_config::get_provider_name(prov)
<< " instance not provided" << std::endl;
res = exit_code::invalid_syntax; res = exit_code::invalid_syntax;
} else { }
} else if (res == exit_code::option_not_found &&
prov == provider_type::sia) {
unique_id = "default";
res = exit_code::success;
}
if (res == exit_code::success) {
data_directory = data_directory =
data_directory.empty() data_directory.empty()
? utils::path::combine(app_config::default_data_directory(prov), ? utils::path::combine(app_config::default_data_directory(prov),

View File

@ -99,7 +99,7 @@ const auto DEFAULT_SIA_CONFIG = "{\n"
" \"RetryReadCount\": 6,\n" " \"RetryReadCount\": 6,\n"
" \"RingBufferFileSize\": 512,\n" " \"RingBufferFileSize\": 512,\n"
" \"SiaConfig\": {\n" " \"SiaConfig\": {\n"
" \"Bucket\": \"default\"\n" " \"Bucket\": \"\"\n"
" },\n" " },\n"
" \"Version\": " + " \"Version\": " +
std::to_string(REPERTORY_CONFIG_VERSION) + std::to_string(REPERTORY_CONFIG_VERSION) +

View File

@ -40,10 +40,12 @@
#include "utils/time.hpp" #include "utils/time.hpp"
#include "utils/utils.hpp" #include "utils/utils.hpp"
namespace repertory { namespace {
static std::string file_manager_dir = const auto file_manager_dir = repertory::utils::path::combine(
utils::path::combine(test::get_test_output_dir(), {"file_manager_test"}); repertory::test::get_test_output_dir(), {"file_manager_test"});
}
namespace repertory {
auto file_manager::open(std::shared_ptr<i_closeable_open_file> of, auto file_manager::open(std::shared_ptr<i_closeable_open_file> of,
const open_file_data &ofd, std::uint64_t &handle, const open_file_data &ofd, std::uint64_t &handle,
std::shared_ptr<i_open_file> &f) -> api_error { std::shared_ptr<i_open_file> &f) -> api_error {
@ -81,10 +83,11 @@ TEST(file_manager, can_start_and_stop) {
fm.stop(); fm.stop();
ec.wait_for_empty(); ec.wait_for_empty();
}
event_system::instance().stop(); event_system::instance().stop();
// EXPECT_TRUE(utils::file::remove_directory(file_manager_dir, true)); }
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
TEST(file_manager, can_create_and_close_file) { TEST(file_manager, can_create_and_close_file) {
@ -197,10 +200,11 @@ TEST(file_manager, can_create_and_close_file) {
EXPECT_EQ(std::size_t(0u), fm.get_open_file_count()); EXPECT_EQ(std::size_t(0u), fm.get_open_file_count());
fm.stop(); fm.stop();
}
polling::instance().stop(); polling::instance().stop();
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
@ -313,10 +317,11 @@ TEST(file_manager, can_open_and_close_file) {
EXPECT_EQ(std::size_t(0u), fm.get_open_file_count()); EXPECT_EQ(std::size_t(0u), fm.get_open_file_count());
fm.stop(); fm.stop();
}
polling::instance().stop(); polling::instance().stop();
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
@ -386,10 +391,11 @@ TEST(file_manager, can_open_and_close_multiple_handles_for_same_file) {
EXPECT_EQ(std::size_t(0u), fm.get_open_file_count()); EXPECT_EQ(std::size_t(0u), fm.get_open_file_count());
EXPECT_EQ(std::size_t(0u), fm.get_open_handle_count()); EXPECT_EQ(std::size_t(0u), fm.get_open_handle_count());
}
polling::instance().stop(); polling::instance().stop();
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
@ -540,9 +546,10 @@ TEST(file_manager, download_is_stored_after_write_if_partially_downloaded) {
EXPECT_EQ(std::size_t(0u), fm.get_open_handle_count()); EXPECT_EQ(std::size_t(0u), fm.get_open_handle_count());
nf.close(); nf.close();
}
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
@ -656,15 +663,15 @@ TEST(file_manager, upload_occurs_after_write_if_fully_downloaded) {
fm.stop(); fm.stop();
nf.close(); nf.close();
}
polling::instance().stop(); polling::instance().stop();
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
TEST(file_manager, can_evict_file) { TEST(file_manager, can_evict_file) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
console_consumer c; console_consumer c;
event_system::instance().start(); event_system::instance().start();
@ -762,14 +769,14 @@ TEST(file_manager, can_evict_file) {
EXPECT_FALSE(utils::file::file(source_path).exists()); EXPECT_FALSE(utils::file::file(source_path).exists());
fm.stop(); fm.stop();
}
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
TEST(file_manager, evict_file_fails_if_file_is_pinned) { TEST(file_manager, evict_file_fails_if_file_is_pinned) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -788,15 +795,14 @@ TEST(file_manager, evict_file_fails_if_file_is_pinned) {
}); });
EXPECT_FALSE(fm.evict_file("/test_open.txt")); EXPECT_FALSE(fm.evict_file("/test_open.txt"));
}
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
TEST(file_manager, evict_file_fails_if_provider_is_direct_only) { TEST(file_manager, evict_file_fails_if_provider_is_direct_only) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -811,8 +817,6 @@ TEST(file_manager, evict_file_fails_if_provider_is_direct_only) {
} }
TEST(file_manager, evict_file_fails_if_file_is_open) { TEST(file_manager, evict_file_fails_if_file_is_open) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -862,8 +866,6 @@ TEST(file_manager, evict_file_fails_if_file_is_open) {
TEST(file_manager, TEST(file_manager,
evict_file_fails_if_unable_to_get_source_path_from_item_meta) { evict_file_fails_if_unable_to_get_source_path_from_item_meta) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -896,8 +898,6 @@ TEST(file_manager,
} }
TEST(file_manager, evict_file_fails_if_source_path_is_empty) { TEST(file_manager, evict_file_fails_if_source_path_is_empty) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -930,7 +930,6 @@ TEST(file_manager, evict_file_fails_if_source_path_is_empty) {
} }
TEST(file_manager, evict_file_fails_if_file_is_uploading) { TEST(file_manager, evict_file_fails_if_file_is_uploading) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
console_consumer c; console_consumer c;
event_system::instance().start(); event_system::instance().start();
@ -1019,15 +1018,14 @@ TEST(file_manager, evict_file_fails_if_file_is_uploading) {
EXPECT_TRUE(utils::file::file(source_path).exists()); EXPECT_TRUE(utils::file::file(source_path).exists());
fm.stop(); fm.stop();
}
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
TEST(file_manager, evict_file_fails_if_file_is_in_upload_queue) { TEST(file_manager, evict_file_fails_if_file_is_in_upload_queue) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1051,8 +1049,6 @@ TEST(file_manager, evict_file_fails_if_file_is_in_upload_queue) {
} }
TEST(file_manager, evict_file_fails_if_file_is_modified) { TEST(file_manager, evict_file_fails_if_file_is_modified) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1097,8 +1093,6 @@ TEST(file_manager, evict_file_fails_if_file_is_modified) {
} }
TEST(file_manager, evict_file_fails_if_file_is_not_complete) { TEST(file_manager, evict_file_fails_if_file_is_not_complete) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1145,8 +1139,6 @@ TEST(file_manager, evict_file_fails_if_file_is_not_complete) {
} }
TEST(file_manager, can_get_directory_items) { TEST(file_manager, can_get_directory_items) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1179,8 +1171,6 @@ TEST(file_manager, can_get_directory_items) {
} }
TEST(file_manager, file_is_not_opened_if_provider_create_file_fails) { TEST(file_manager, file_is_not_opened_if_provider_create_file_fails) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1215,8 +1205,6 @@ TEST(file_manager, file_is_not_opened_if_provider_create_file_fails) {
} }
TEST(file_manager, create_fails_if_provider_create_is_unsuccessful) { TEST(file_manager, create_fails_if_provider_create_is_unsuccessful) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1246,9 +1234,6 @@ TEST(file_manager, create_fails_if_provider_create_is_unsuccessful) {
} }
TEST(file_manager, get_open_file_fails_if_file_is_not_open) { TEST(file_manager, get_open_file_fails_if_file_is_not_open) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1271,8 +1256,6 @@ TEST(file_manager, get_open_file_fails_if_file_is_not_open) {
TEST(file_manager, TEST(file_manager,
get_open_file_promotes_non_writeable_file_if_writeable_is_specified) { get_open_file_promotes_non_writeable_file_if_writeable_is_specified) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1359,8 +1342,6 @@ TEST(file_manager,
} }
TEST(file_manager, open_file_fails_if_file_is_not_found) { TEST(file_manager, open_file_fails_if_file_is_not_found) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1384,8 +1365,6 @@ TEST(file_manager, open_file_fails_if_file_is_not_found) {
} }
TEST(file_manager, open_file_fails_if_provider_get_filesystem_item_fails) { TEST(file_manager, open_file_fails_if_provider_get_filesystem_item_fails) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1428,8 +1407,6 @@ TEST(file_manager, open_file_fails_if_provider_get_filesystem_item_fails) {
} }
TEST(file_manager, open_file_fails_if_provider_set_item_meta_fails) { TEST(file_manager, open_file_fails_if_provider_set_item_meta_fails) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1479,8 +1456,6 @@ TEST(file_manager, open_file_fails_if_provider_set_item_meta_fails) {
} }
TEST(file_manager, open_file_creates_source_path_if_empty) { TEST(file_manager, open_file_creates_source_path_if_empty) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1542,8 +1517,6 @@ TEST(file_manager, open_file_creates_source_path_if_empty) {
} }
TEST(file_manager, open_file_first_file_handle_is_not_zero) { TEST(file_manager, open_file_first_file_handle_is_not_zero) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1590,8 +1563,6 @@ TEST(file_manager, open_file_first_file_handle_is_not_zero) {
} }
TEST(file_manager, can_remove_file) { TEST(file_manager, can_remove_file) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1631,12 +1602,9 @@ TEST(file_manager, can_remove_file) {
} }
TEST(file_manager, can_queue_and_remove_upload) { TEST(file_manager, can_queue_and_remove_upload) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); {
console_consumer c; console_consumer c;
event_system::instance().start(); event_system::instance().start();
{
event_capture ec({"file_upload_queued", "download_resume_removed"}); event_capture ec({"file_upload_queued", "download_resume_removed"});
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
@ -1659,9 +1627,10 @@ TEST(file_manager, can_queue_and_remove_upload) {
EXPECT_FALSE(fm.is_processing("/test_queue.txt")); EXPECT_FALSE(fm.is_processing("/test_queue.txt"));
ec.wait_for_empty(); ec.wait_for_empty();
}
event_system::instance().stop(); event_system::instance().stop();
}
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
@ -1757,14 +1726,13 @@ TEST(file_manager, file_is_closed_after_download_timeout) {
fm.stop(); fm.stop();
polling::instance().stop(); polling::instance().stop();
event_system::instance().stop();
} }
event_system::instance().stop();
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively()); EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
} }
TEST(file_manager, remove_file_fails_if_file_does_not_exist) { TEST(file_manager, remove_file_fails_if_file_does_not_exist) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);
@ -1789,8 +1757,6 @@ TEST(file_manager, remove_file_fails_if_file_does_not_exist) {
} }
TEST(file_manager, remove_file_fails_if_provider_remove_file_fails) { TEST(file_manager, remove_file_fails_if_provider_remove_file_fails) {
EXPECT_TRUE(utils::file::directory(file_manager_dir).remove_recursively());
{ {
app_config cfg(provider_type::sia, file_manager_dir); app_config cfg(provider_type::sia, file_manager_dir);
cfg.set_enable_chunk_downloader_timeout(false); cfg.set_enable_chunk_downloader_timeout(false);

View File

@ -19,6 +19,7 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#if 0
#if !defined(_WIN32) #if !defined(_WIN32)
#include "fixtures/fuse_fixture.hpp" #include "fixtures/fuse_fixture.hpp"
@ -560,3 +561,4 @@ TYPED_TEST(fuse_test, chown) {
} // namespace repertory } // namespace repertory
#endif // !defined(_WIN32) #endif // !defined(_WIN32)
#endif // 0

View File

@ -19,6 +19,8 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#if 0
#include "test_common.hpp" #include "test_common.hpp"
#include "comm/curl/curl_comm.hpp" #include "comm/curl/curl_comm.hpp"
@ -42,7 +44,7 @@ using gid_t = std::uint32_t;
using uid_t = std::uint32_t; using uid_t = std::uint32_t;
static constexpr auto getgid() -> gid_t { return 0U; } static constexpr auto getgid() -> gid_t { return 0U; }
static constexpr auto getuid() -> uid_t { return 0U; } static constexpr auto getuid() -> uid_t { return 0U; }
#endif #endif // defined(_WIN32)
const auto check_forced_dirs = [](const repertory::directory_item_list &list) { const auto check_forced_dirs = [](const repertory::directory_item_list &list) {
static auto forced_dirs = std::array<std::string, 2>{".", ".."}; static auto forced_dirs = std::array<std::string, 2>{".", ".."};
@ -747,3 +749,5 @@ TEST(providers, sia_provider) {
event_system::instance().stop(); event_system::instance().stop();
} }
} // namespace repertory } // namespace repertory
#endif // 0

View File

@ -19,6 +19,7 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#if 0
#if defined(_WIN32) #if defined(_WIN32)
#include "test_common.hpp" #include "test_common.hpp"
@ -380,4 +381,5 @@ TEST_F(winfsp_test, all_tests) {
} }
} // namespace repertory } // namespace repertory
#endif #endif // defined(_WIN32)
#endif // 0

View File

@ -18,6 +18,10 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_STATIC_LINK}" == "OFF" ]; th
/mingw64/bin/zlib1.dll /mingw64/bin/zlib1.dll
) )
if [ "${PROJECT_ENABLE_BACKWARD_CPP}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/msvcr90.dll)
fi
if [ "${PROJECT_ENABLE_BOOST}" == "ON" ]; then if [ "${PROJECT_ENABLE_BOOST}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libboost*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libboost*.dll)
fi fi
@ -26,10 +30,18 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_STATIC_LINK}" == "OFF" ]; th
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libcli11*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libcli11*.dll)
fi fi
if [ "${PROJECT_ENABLE_CURL}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libcurl*.dll)
fi
if [ "${PROJECT_ENABLE_FLAC}" == "ON" ]; then if [ "${PROJECT_ENABLE_FLAC}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libFLAC*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libFLAC*.dll)
fi fi
if [ "${PROJECT_ENABLE_FMT}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libfmt*.dll)
fi
if [ "${PROJECT_ENABLE_FONTCONFIG}" == "ON" ]; then if [ "${PROJECT_ENABLE_FONTCONFIG}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=( PROJECT_MINGW64_COPY_DEPENDENCIES+=(
/mingw64/bin/libexpat*.dll /mingw64/bin/libexpat*.dll
@ -93,14 +105,26 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_STATIC_LINK}" == "OFF" ]; th
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libpugi*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libpugi*.dll)
fi fi
if [ "${PROJECT_ENABLE_ROCKSDB}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/librocksdb*.dll)
fi
if [ "${PROJECT_ENABLE_SDL}" == "ON" ]; then if [ "${PROJECT_ENABLE_SDL}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/SDL2*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/SDL2*.dll)
fi fi
if [ "${PROJECT_ENABLE_SECP256K1}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsecp256k1*.dll)
fi
if [ "${PROJECT_ENABLE_SFML}" == "ON" ]; then if [ "${PROJECT_ENABLE_SFML}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsfml*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsfml*.dll)
fi fi
if [ "${PROJECT_ENABLE_SPDLOG}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libspdlog*.dll)
fi
if [ "${PROJECT_ENABLE_SQLITE}" == "ON" ]; then if [ "${PROJECT_ENABLE_SQLITE}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsqlite3-*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsqlite3-*.dll)
fi fi
@ -116,14 +140,32 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_STATIC_LINK}" == "OFF" ]; th
) )
fi fi
if [ "${PROJECT_ENABLE_TPL}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libtiny-process*.dll)
fi
if [ "${PROJECT_ENABLE_VORBIS}" == "ON" ]; then if [ "${PROJECT_ENABLE_VORBIS}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libvorbis*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libvorbis*.dll)
fi fi
if [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ]; then if [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libLerc.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsharpyuv-*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libdeflate.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libglib-2*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libgraphite2.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libharfbuzz-*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libjbig-*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libpcre2-*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libtiff-*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libwebp-*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libwxbase*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libwxm*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libwxm*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/wxbase*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/wxm*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/wxm*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/libwxbase*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/libwxm*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/libwxm*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/wxbase*.dll)
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/wxm*.dll) PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/wxm*.dll)
fi fi
@ -132,42 +174,13 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_STATIC_LINK}" == "OFF" ]; th
PROJECT_MINGW64_COPY_DEPENDENCIES+=( PROJECT_MINGW64_COPY_DEPENDENCIES+=(
/mingw64/bin/libOpenCL*.dll /mingw64/bin/libOpenCL*.dll
/mingw64/bin/libopencl*.dll /mingw64/bin/libopencl*.dll
/mingw64/bin/libgallium_wgl.dll
/mingw64/bin/libva*.dll /mingw64/bin/libva*.dll
/mingw64/bin/opengl*.dll /mingw64/bin/opengl*.dll
/mingw64/bin/vulkan*.dll /mingw64/bin/vulkan*.dll
) )
fi fi
if [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then
if [ "${PROJECT_ENABLE_BACKWARD_CPP}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/msvcr90.dll)
fi
if [ "${PROJECT_ENABLE_FMT}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libfmt*.dll)
fi
if [ "${PROJECT_ENABLE_CURL}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libcurl*.dll)
fi
if [ "${PROJECT_ENABLE_ROCKSDB}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/librocksdb*.dll)
fi
if [ "${PROJECT_ENABLE_SECP256K1}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsecp256k1*.dll)
fi
if [ "${PROJECT_ENABLE_SPDLOG}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libspdlog*.dll)
fi
if [ "${PROJECT_ENABLE_TPL}" == "ON" ]; then
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libtiny-process*.dll)
fi
fi
rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/bin/*.dll "${PROJECT_DIST_DIR}/" rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/bin/*.dll "${PROJECT_DIST_DIR}/"
rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/lib/*.dll "${PROJECT_DIST_DIR}/" rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/lib/*.dll "${PROJECT_DIST_DIR}/"
if [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ]; then if [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ]; then
@ -175,7 +188,7 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_STATIC_LINK}" == "OFF" ]; th
fi fi
fi fi
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_ENABLE_WINFSP}" == "ON" ]; then if [ "${PROJECT_ENABLE_WINFSP}" == "ON" ]; then
if [ "${PROJECT_BUILD_ARCH}" == "x86_64" ]; then if [ "${PROJECT_BUILD_ARCH}" == "x86_64" ]; then
WINFSP_DLL_PART=x64 WINFSP_DLL_PART=x64
fi fi
@ -185,7 +198,7 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_ENABLE_WINFSP}" == "ON" ]; t
fi fi
fi fi
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_ENABLE_VLC}" == "ON" ]; then if [ "${PROJECT_ENABLE_VLC}" == "ON" ]; then
rsync -av --progress ${PROJECT_3RD_PARTY_DIR}/vlc/ "${PROJECT_DIST_DIR}/vlc/" rsync -av --progress ${PROJECT_3RD_PARTY_DIR}/vlc/ "${PROJECT_DIST_DIR}/vlc/"
fi fi

View File

@ -121,6 +121,7 @@ if [ "${PROJECT_ENABLE_VORBIS}" == "ON" ]; then
fi fi
if [ "${PROJECT_ENABLE_FLAC}" == "ON" ]; then if [ "${PROJECT_ENABLE_FLAC}" == "ON" ]; then
PROJECT_ENABLE_LIBICONV=ON
PROJECT_ENABLE_OGG=ON PROJECT_ENABLE_OGG=ON
PROJECT_ENABLE_VORBIS=ON PROJECT_ENABLE_VORBIS=ON
fi fi

View File

@ -73,11 +73,9 @@ inline auto includes(const col_t &collection,
template <typename val_t> template <typename val_t>
[[nodiscard]] inline auto from_hex_string_t(std::string_view str, [[nodiscard]] inline auto from_hex_string_t(std::string_view str,
val_t &val) -> bool { val_t &val) -> bool {
static constexpr const auto base16{16}; REPERTORY_USES_FUNCTION_NAME();
static constexpr const std::string_view function_name{ static constexpr const auto base16{16};
static_cast<const char *>(__FUNCTION__),
};
try { try {
val.clear(); val.clear();

View File

@ -26,20 +26,27 @@
#include "utils/config.hpp" #include "utils/config.hpp"
namespace repertory::utils { namespace repertory::utils {
class com_init_wrapper { struct com_init_wrapper final {
public:
com_init_wrapper() com_init_wrapper()
: uninit_( : initialized_(
SUCCEEDED(::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED))) {} SUCCEEDED(::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED))) {}
com_init_wrapper(const com_init_wrapper &) = delete;
com_init_wrapper(com_init_wrapper &&) = delete;
~com_init_wrapper() { ~com_init_wrapper() {
if (uninit_) { if (initialized_) {
::CoUninitialize(); ::CoUninitialize();
} }
} }
auto operator=(const com_init_wrapper &) -> com_init_wrapper & = delete;
auto operator=(com_init_wrapper &&) -> com_init_wrapper & = delete;
[[nodiscard]] auto is_initialized() const -> bool { return initialized_; }
private: private:
BOOL uninit_; BOOL initialized_;
}; };
} // namespace repertory::utils } // namespace repertory::utils

View File

@ -38,7 +38,9 @@
#endif // defined(PROJECT_ENABLE_WINFSP) #endif // defined(PROJECT_ENABLE_WINFSP)
#include <direct.h> #include <direct.h>
#if !defined(__cplusplus)
#include <errno.h> #include <errno.h>
#endif // !defined(__cplusplus)
#include <fcntl.h> #include <fcntl.h>
#include <io.h> #include <io.h>
#include <iphlpapi.h> #include <iphlpapi.h>
@ -49,10 +51,14 @@
#include <shellapi.h> #include <shellapi.h>
#include <shlobj.h> #include <shlobj.h>
#include <shlwapi.h> #include <shlwapi.h>
#if !defined(__cplusplus)
#include <stdio.h> #include <stdio.h>
#endif // !defined(__cplusplus)
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
#if !defined(__cplusplus)
#include <time.h> #include <time.h>
#endif // !defined(__cplusplus)
#else // !defined(_WIN32) #else // !defined(_WIN32)
#include <arpa/inet.h> #include <arpa/inet.h>
#include <dirent.h> #include <dirent.h>
@ -65,9 +71,9 @@
#include <sys/socket.h> #include <sys/socket.h>
#if defined(__LFS64__) #if defined(__LFS64__)
#include <sys/stat64.h> #include <sys/stat64.h>
#else #else // !defined(__LFS64__)
#include <sys/stat.h> #include <sys/stat.h>
#endif #endif // defined(__LFS64__)
#if defined(__linux__) #if defined(__linux__)
#include <sys/statfs.h> #include <sys/statfs.h>
@ -98,6 +104,7 @@
#include <array> #include <array>
#include <atomic> #include <atomic>
#include <bit> #include <bit>
#include <cerrno>
#include <chrono> #include <chrono>
#include <ciso646> #include <ciso646>
#include <climits> #include <climits>
@ -105,9 +112,11 @@
#include <condition_variable> #include <condition_variable>
#include <csignal> #include <csignal>
#include <cstdint> #include <cstdint>
#include <cstdio>
#include <cstdlib> #include <cstdlib>
#include <cstring> #include <cstring>
#include <ctime> #include <ctime>
#include <ctime>
#include <deque> #include <deque>
#include <filesystem> #include <filesystem>
#include <fstream> #include <fstream>
@ -466,4 +475,9 @@ using http_ranges = std::vector<http_range>;
} // namespace repertory } // namespace repertory
#endif // defined(__cplusplus) #endif // defined(__cplusplus)
#define REPERTORY_USES_FUNCTION_NAME() \
static constexpr const std::string_view function_name{ \
static_cast<const char *>(__FUNCTION__), \
}
#endif // REPERTORY_INCLUDE_UTILS_CONFIG_HPP_ #endif // REPERTORY_INCLUDE_UTILS_CONFIG_HPP_

View File

@ -31,7 +31,11 @@ using db_types_t = std::variant<std::int64_t, std::string>;
struct sqlite3_deleter { struct sqlite3_deleter {
void operator()(sqlite3 *db3) const { void operator()(sqlite3 *db3) const {
if (db3 != nullptr) { if (db3 != nullptr) {
#if defined(_WIN32)
sqlite3_close(db3);
#else // !defined(_WIN32)
sqlite3_close_v2(db3); sqlite3_close_v2(db3);
#endif // defined(_WIN32)
} }
} }
}; };
@ -183,8 +187,6 @@ template <typename ctx_t> struct db_result final {
} }
} }
~db_result() { context_->clear(); }
private: private:
std::shared_ptr<ctx_t> context_; std::shared_ptr<ctx_t> context_;
mutable std::int32_t res_; mutable std::int32_t res_;

View File

@ -43,12 +43,9 @@ public:
: db_context_t(db3_, table_name_) {} : db_context_t(db3_, table_name_) {}
using w_t = db_where_t<context, db_delete_op_t>; using w_t = db_where_t<context, db_delete_op_t>;
using wd_t = where_data_t<w_t>;
std::optional<w_t> where; std::unique_ptr<wd_t> where_data;
std::map<std::size_t, std::vector<w_t::action_t>> where_actions;
std::vector<db_types_t> where_values;
void clear();
}; };
using row = db_row<context>; using row = db_row<context>;
@ -67,8 +64,8 @@ public:
[[nodiscard]] auto go() const -> db_result<context>; [[nodiscard]] auto go() const -> db_result<context>;
[[nodiscard]] auto [[nodiscard]] auto group(context::w_t::group_func_t func)
group(context::w_t::group_func_t func) -> context::w_t::wn_t; -> context::w_t::wn_t;
[[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t; [[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t;
}; };

View File

@ -34,8 +34,6 @@ public:
bool or_replace{false}; bool or_replace{false};
std::map<std::string, db_types_t> values; std::map<std::string, db_types_t> values;
void clear() { values.clear(); }
}; };
using row = db_row<context>; using row = db_row<context>;

View File

@ -44,14 +44,15 @@ public:
[[nodiscard]] auto offset(std::int32_t value) -> db_select_op_t; [[nodiscard]] auto offset(std::int32_t value) -> db_select_op_t;
[[nodiscard]] auto order_by(std::string column_name, [[nodiscard]] auto order_by(std::string column_name, bool ascending)
bool ascending) -> db_select_op_t; -> db_select_op_t;
}; };
context(sqlite3 *db3_, std::string table_name_) context(sqlite3 *db3_, std::string table_name_)
: db_context_t(db3_, table_name_) {} : db_context_t(db3_, table_name_) {}
using w_t = db_where_t<context, db_select_op_t>; using w_t = db_where_t<context, db_select_op_t>;
using wd_t = where_data_t<w_t>;
std::vector<std::string> columns; std::vector<std::string> columns;
std::map<std::string, std::string> count_columns; std::map<std::string, std::string> count_columns;
@ -60,11 +61,8 @@ public:
std::optional<std::int32_t> limit; std::optional<std::int32_t> limit;
std::optional<std::int32_t> offset; std::optional<std::int32_t> offset;
std::optional<std::pair<std::string, bool>> order_by; std::optional<std::pair<std::string, bool>> order_by;
std::optional<w_t> where;
std::map<std::size_t, std::vector<w_t::action_t>> where_actions;
std::vector<db_types_t> where_values;
void clear(); std::unique_ptr<wd_t> where_data;
}; };
using row = db_row<context>; using row = db_row<context>;
@ -81,8 +79,8 @@ private:
public: public:
[[nodiscard]] auto column(std::string column_name) -> db_select &; [[nodiscard]] auto column(std::string column_name) -> db_select &;
[[nodiscard]] auto count(std::string column_name, [[nodiscard]] auto count(std::string column_name, std::string as_column_name)
std::string as_column_name) -> db_select &; -> db_select &;
[[nodiscard]] auto dump() const -> std::string; [[nodiscard]] auto dump() const -> std::string;
@ -90,15 +88,15 @@ public:
[[nodiscard]] auto group_by(std::string column_name) -> db_select &; [[nodiscard]] auto group_by(std::string column_name) -> db_select &;
[[nodiscard]] auto [[nodiscard]] auto group(context::w_t::group_func_t func)
group(context::w_t::group_func_t func) -> context::w_t::wn_t; -> context::w_t::wn_t;
[[nodiscard]] auto limit(std::int32_t value) -> db_select &; [[nodiscard]] auto limit(std::int32_t value) -> db_select &;
[[nodiscard]] auto offset(std::int32_t value) -> db_select &; [[nodiscard]] auto offset(std::int32_t value) -> db_select &;
[[nodiscard]] auto order_by(std::string column_name, [[nodiscard]] auto order_by(std::string column_name, bool ascending)
bool ascending) -> db_select &; -> db_select &;
[[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t; [[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t;
}; };

View File

@ -43,20 +43,18 @@ public:
[[nodiscard]] auto limit(std::int32_t value) -> db_update_op_t; [[nodiscard]] auto limit(std::int32_t value) -> db_update_op_t;
[[nodiscard]] auto order_by(std::string column_name, [[nodiscard]] auto order_by(std::string column_name, bool ascending)
bool ascending) -> db_update_op_t; -> db_update_op_t;
}; };
using w_t = db_where_t<context, db_update_op_t>; using w_t = db_where_t<context, db_update_op_t>;
using wd_t = where_data_t<w_t>;
std::map<std::string, db_types_t> column_values; std::map<std::string, db_types_t> column_values;
std::optional<std::int32_t> limit; std::optional<std::int32_t> limit;
std::optional<std::pair<std::string, bool>> order_by; std::optional<std::pair<std::string, bool>> order_by;
std::optional<w_t> where;
std::map<std::size_t, std::vector<w_t::action_t>> where_actions;
std::vector<db_types_t> where_values;
void clear(); std::unique_ptr<wd_t> where_data;
}; };
using row = db_row<context>; using row = db_row<context>;
@ -71,20 +69,20 @@ private:
std::shared_ptr<context> context_; std::shared_ptr<context> context_;
public: public:
[[nodiscard]] auto column_value(std::string column_name, [[nodiscard]] auto column_value(std::string column_name, db_types_t value)
db_types_t value) -> db_update &; -> db_update &;
[[nodiscard]] auto dump() const -> std::string; [[nodiscard]] auto dump() const -> std::string;
[[nodiscard]] auto go() const -> db_result<context>; [[nodiscard]] auto go() const -> db_result<context>;
[[nodiscard]] auto [[nodiscard]] auto group(context::w_t::group_func_t func)
group(context::w_t::group_func_t func) -> context::w_t::wn_t; -> context::w_t::wn_t;
[[nodiscard]] auto limit(std::int32_t value) -> db_update &; [[nodiscard]] auto limit(std::int32_t value) -> db_update &;
[[nodiscard]] auto order_by(std::string column_name, [[nodiscard]] auto order_by(std::string column_name, bool ascending)
bool ascending) -> db_update &; -> db_update &;
[[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t; [[nodiscard]] auto where(std::string column_name) const -> context::w_t::cn_t;
}; };

View File

@ -26,6 +26,12 @@
#include "utils/db/sqlite/db_common.hpp" #include "utils/db/sqlite/db_common.hpp"
namespace repertory::utils::db::sqlite { namespace repertory::utils::db::sqlite {
template <typename w_t> struct where_data_t final {
w_t base;
std::map<std::size_t, std::vector<typename w_t::action_t>> actions;
std::vector<db_types_t> values;
};
template <typename cn_t, typename ctx_t, typename op_t, typename w_t, template <typename cn_t, typename ctx_t, typename op_t, typename w_t,
typename wn_t> typename wn_t>
struct db_next_t final { struct db_next_t final {
@ -42,7 +48,7 @@ struct db_next_t final {
[[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); } [[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); }
[[nodiscard]] auto dump(std::int32_t &idx) const -> std::string { [[nodiscard]] auto dump(std::int32_t &idx) const -> std::string {
return ctx->where->dump(idx); return ctx->where_data->base.dump(idx);
} }
[[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); } [[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); }
@ -72,14 +78,14 @@ struct db_where_next_t final {
"AND", "AND",
}; };
ctx->where_actions[action_idx].emplace_back(next); ctx->where_data->actions[action_idx].emplace_back(next);
return next; return next;
} }
[[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); } [[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); }
[[nodiscard]] auto dump(std::int32_t &idx) const -> std::string { [[nodiscard]] auto dump(std::int32_t &idx) const -> std::string {
return ctx->where->dump(idx); return ctx->where_data->base.dump(idx);
} }
[[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); } [[nodiscard]] auto go() const -> auto { return op_t{ctx}.go(); }
@ -97,7 +103,7 @@ struct db_where_next_t final {
"OR", "OR",
}; };
ctx->where_actions[action_idx].emplace_back(next); ctx->where_data->actions[action_idx].emplace_back(next);
return next; return next;
} }
}; };
@ -111,12 +117,12 @@ struct db_comp_next_t final {
using wn_t = db_where_next_t<db_comp_next_t, ctx_t, op_t, w_t>; using wn_t = db_where_next_t<db_comp_next_t, ctx_t, op_t, w_t>;
[[nodiscard]] auto create(std::string operation, db_types_t value) { [[nodiscard]] auto create(std::string operation, db_types_t value) {
ctx->where_actions[action_idx].emplace_back(db_comp_data_t{ ctx->where_data->actions[action_idx].emplace_back(db_comp_data_t{
column_name, column_name,
operation, operation,
}); });
ctx->where_values.push_back(value); ctx->where_data->values.push_back(value);
return wn_t{ return wn_t{
action_idx, action_idx,
@ -151,8 +157,8 @@ template <typename ctx_t, typename op_t> struct db_where_t final {
using action_t = std::variant<db_comp_data_t, n_t, db_where_t>; using action_t = std::variant<db_comp_data_t, n_t, db_where_t>;
[[nodiscard]] static auto dump(std::int32_t &idx, [[nodiscard]] static auto dump(std::int32_t &idx, auto &&actions)
auto &&actions) -> std::string { -> std::string {
std::stringstream stream; std::stringstream stream;
for (auto &&action : actions) { for (auto &&action : actions) {
@ -177,24 +183,24 @@ template <typename ctx_t, typename op_t> struct db_where_t final {
[[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); } [[nodiscard]] auto dump() const -> std::string { return op_t{ctx}.dump(); }
[[nodiscard]] auto dump(std::int32_t &idx) const -> std::string { [[nodiscard]] auto dump(std::int32_t &idx) const -> std::string {
return dump(idx, ctx->where_actions[action_idx]); return dump(idx, ctx->where_data->actions[action_idx]);
} }
[[nodiscard]] auto get_actions() -> auto & { [[nodiscard]] auto get_actions() -> auto & {
return ctx->where_actions[action_idx]; return ctx->where_data->actions[action_idx];
} }
[[nodiscard]] auto get_actions() const -> const auto & { [[nodiscard]] auto get_actions() const -> const auto & {
return ctx->where_actions[action_idx]; return ctx->where_data->actions[action_idx];
} }
[[nodiscard]] auto group(group_func_t func) -> wn_t { [[nodiscard]] auto group(group_func_t func) -> wn_t {
ctx->where_actions[action_idx]; ctx->where_data->actions[action_idx];
db_where_t where{ctx->where_actions.size(), ctx}; db_where_t where{ctx->where_data->actions.size(), ctx};
func(where); func(where);
ctx->where_actions[action_idx].emplace_back(where); ctx->where_data->actions[action_idx].emplace_back(where);
return wn_t{ return wn_t{
action_idx, action_idx,
@ -203,7 +209,7 @@ template <typename ctx_t, typename op_t> struct db_where_t final {
} }
[[nodiscard]] auto where(std::string column_name) -> cn_t { [[nodiscard]] auto where(std::string column_name) -> cn_t {
ctx->where_actions[action_idx]; ctx->where_data->actions[action_idx];
return cn_t{ return cn_t{
action_idx, action_idx,

View File

@ -33,6 +33,9 @@ struct i_exception_handler {
auto operator=(const i_exception_handler &) noexcept = delete; auto operator=(const i_exception_handler &) noexcept = delete;
auto operator=(i_exception_handler &&) noexcept = delete; auto operator=(i_exception_handler &&) noexcept = delete;
virtual void handle_error(std::string_view function_name,
std::string_view msg) const = 0;
virtual void handle_exception(std::string_view function_name) const = 0; virtual void handle_exception(std::string_view function_name) const = 0;
virtual void handle_exception(std::string_view function_name, virtual void handle_exception(std::string_view function_name,
@ -43,6 +46,11 @@ protected:
}; };
struct iostream_exception_handler final : i_exception_handler { struct iostream_exception_handler final : i_exception_handler {
void handle_error(std::string_view function_name,
std::string_view msg) const override {
std::cerr << function_name << '|' << msg;
}
void handle_exception(std::string_view function_name) const override { void handle_exception(std::string_view function_name) const override {
std::cerr << function_name << "|exception|unknown" << std::endl; std::cerr << function_name << "|exception|unknown" << std::endl;
} }
@ -58,12 +66,18 @@ inline const iostream_exception_handler default_exception_handler{};
extern std::atomic<const i_exception_handler *> exception_handler; extern std::atomic<const i_exception_handler *> exception_handler;
#if defined(PROJECT_ENABLE_TESTING) #if defined(PROJECT_ENABLE_TESTING)
[[nodiscard]] inline auto [[nodiscard]] inline auto get_exception_handler()
get_exception_handler() -> const i_exception_handler * { -> const i_exception_handler * {
return exception_handler; return exception_handler;
} }
#endif // defined(PROJECT_ENABLE_TESTING) #endif // defined(PROJECT_ENABLE_TESTING)
[[nodiscard]] auto create_error_message(std::string_view function_name,
std::vector<std::string_view> items)
-> std::string;
void handle_error(std::string_view function_name, std::string_view msg);
void handle_exception(std::string_view function_name); void handle_exception(std::string_view function_name);
void handle_exception(std::string_view function_name, const std::exception &ex); void handle_exception(std::string_view function_name, const std::exception &ex);

View File

@ -26,6 +26,10 @@
#include "utils/config.hpp" #include "utils/config.hpp"
namespace repertory::utils { namespace repertory::utils {
void create_console();
void free_console();
[[nodiscard]] auto get_local_app_data_directory() -> const std::string &; [[nodiscard]] auto get_local_app_data_directory() -> const std::string &;
[[nodiscard]] auto get_last_error_code() -> DWORD; [[nodiscard]] auto get_last_error_code() -> DWORD;

View File

@ -153,9 +153,7 @@ auto get_next_available_port(std::uint16_t first_port,
auto retry_action(retryable_action_t action, std::size_t retry_count, auto retry_action(retryable_action_t action, std::size_t retry_count,
std::chrono::milliseconds retry_wait) -> bool { std::chrono::milliseconds retry_wait) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
for (std::size_t idx = 0U; idx < retry_count; ++idx) { for (std::size_t idx = 0U; idx < retry_count; ++idx) {

View File

@ -24,11 +24,6 @@
#if defined(PROJECT_ENABLE_SQLITE) #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite { namespace repertory::utils::db::sqlite {
void db_delete::context::clear() {
where.reset();
where_values.clear();
}
auto db_delete::context::db_delete_op_t::dump() const -> std::string { auto db_delete::context::db_delete_op_t::dump() const -> std::string {
return db_delete{ctx}.dump(); return db_delete{ctx}.dump();
} }
@ -41,9 +36,9 @@ auto db_delete::dump() const -> std::string {
std::stringstream query; std::stringstream query;
query << "DELETE FROM \"" << context_->table_name << "\""; query << "DELETE FROM \"" << context_->table_name << "\"";
if (context_->where.has_value()) { if (context_->where_data) {
std::int32_t idx{}; std::int32_t idx{};
query << " WHERE " << context_->where->dump(idx); query << " WHERE " << context_->where_data->base.dump(idx);
} }
query << ';'; query << ';';
@ -65,8 +60,13 @@ auto db_delete::go() const -> db_result<context> {
return {context_, res}; return {context_, res};
} }
if (not context_->where_data) {
return {context_, res};
}
for (std::int32_t idx = 0; for (std::int32_t idx = 0;
idx < static_cast<std::int32_t>(context_->where_values.size()); idx++) { idx < static_cast<std::int32_t>(context_->where_data->values.size());
idx++) {
res = std::visit( res = std::visit(
overloaded{ overloaded{
[this, &idx](std::int64_t data) -> std::int32_t { [this, &idx](std::int64_t data) -> std::int32_t {
@ -77,7 +77,7 @@ auto db_delete::go() const -> db_result<context> {
data.c_str(), -1, nullptr); data.c_str(), -1, nullptr);
}, },
}, },
context_->where_values.at(static_cast<std::size_t>(idx))); context_->where_data->values.at(static_cast<std::size_t>(idx)));
if (res != SQLITE_OK) { if (res != SQLITE_OK) {
return {context_, res}; return {context_, res};
} }
@ -87,19 +87,23 @@ auto db_delete::go() const -> db_result<context> {
} }
auto db_delete::group(context::w_t::group_func_t func) -> context::w_t::wn_t { auto db_delete::group(context::w_t::group_func_t func) -> context::w_t::wn_t {
if (not context_->where.has_value()) { if (not context_->where_data) {
context_->where = context::w_t{0U, context_}; context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
context::w_t{0U, context_},
});
} }
return context_->where->group(std::move(func)); return context_->where_data->base.group(std::move(func));
} }
auto db_delete::where(std::string column_name) const -> context::w_t::cn_t { auto db_delete::where(std::string column_name) const -> context::w_t::cn_t {
if (not context_->where.has_value()) { if (not context_->where_data) {
context_->where = context::w_t{0U, context_}; context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
context::w_t{0U, context_},
});
} }
return context_->where->where(column_name); return context_->where_data->base.where(column_name);
} }
} // namespace repertory::utils::db::sqlite } // namespace repertory::utils::db::sqlite

View File

@ -24,16 +24,6 @@
#if defined(PROJECT_ENABLE_SQLITE) #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite { namespace repertory::utils::db::sqlite {
void db_select::context::clear() {
columns.clear();
count_columns.clear();
limit.reset();
offset.reset();
order_by.reset();
where.reset();
where_values.clear();
}
auto db_select::context::db_select_op_t::dump() const -> std::string { auto db_select::context::db_select_op_t::dump() const -> std::string {
return db_select{ctx}.dump(); return db_select{ctx}.dump();
} }
@ -72,8 +62,8 @@ auto db_select::column(std::string column_name) -> db_select & {
return *this; return *this;
} }
auto db_select::count(std::string column_name, auto db_select::count(std::string column_name, std::string as_column_name)
std::string as_column_name) -> db_select & { -> db_select & {
context_->count_columns[column_name] = as_column_name; context_->count_columns[column_name] = as_column_name;
return *this; return *this;
} }
@ -108,9 +98,9 @@ auto db_select::dump() const -> std::string {
} }
query << " FROM \"" << context_->table_name << "\""; query << " FROM \"" << context_->table_name << "\"";
if (context_->where.has_value()) { if (context_->where_data) {
std::int32_t idx{}; std::int32_t idx{};
query << " WHERE " << context_->where->dump(idx); query << " WHERE " << context_->where_data->base.dump(idx);
} }
if (not context_->group_by.empty()) { if (not context_->group_by.empty()) {
@ -156,8 +146,13 @@ auto db_select::go() const -> db_result<context> {
return {context_, res}; return {context_, res};
} }
if (not context_->where_data) {
return {context_, res};
}
for (std::int32_t idx = 0; for (std::int32_t idx = 0;
idx < static_cast<std::int32_t>(context_->where_values.size()); idx++) { idx < static_cast<std::int32_t>(context_->where_data->values.size());
idx++) {
res = std::visit( res = std::visit(
overloaded{ overloaded{
[this, &idx](std::int64_t data) -> std::int32_t { [this, &idx](std::int64_t data) -> std::int32_t {
@ -168,7 +163,7 @@ auto db_select::go() const -> db_result<context> {
data.c_str(), -1, nullptr); data.c_str(), -1, nullptr);
}, },
}, },
context_->where_values.at(static_cast<std::size_t>(idx))); context_->where_data->values.at(static_cast<std::size_t>(idx)));
if (res != SQLITE_OK) { if (res != SQLITE_OK) {
return {context_, res}; return {context_, res};
} }
@ -178,11 +173,13 @@ auto db_select::go() const -> db_result<context> {
} }
auto db_select::group(context::w_t::group_func_t func) -> context::w_t::wn_t { auto db_select::group(context::w_t::group_func_t func) -> context::w_t::wn_t {
if (not context_->where.has_value()) { if (not context_->where_data) {
context_->where = context::w_t{0U, context_}; context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
context::w_t{0U, context_},
});
} }
return context_->where->group(std::move(func)); return context_->where_data->base.group(std::move(func));
} }
auto db_select::group_by(std::string column_name) -> db_select & { auto db_select::group_by(std::string column_name) -> db_select & {
@ -200,18 +197,20 @@ auto db_select::offset(std::int32_t value) -> db_select & {
return *this; return *this;
} }
auto db_select::order_by(std::string column_name, auto db_select::order_by(std::string column_name, bool ascending)
bool ascending) -> db_select & { -> db_select & {
context_->order_by = {column_name, ascending}; context_->order_by = {column_name, ascending};
return *this; return *this;
} }
auto db_select::where(std::string column_name) const -> context::w_t::cn_t { auto db_select::where(std::string column_name) const -> context::w_t::cn_t {
if (not context_->where.has_value()) { if (not context_->where_data) {
context_->where = context::w_t{0U, context_}; context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
context::w_t{0U, context_},
});
} }
return context_->where->where(column_name); return context_->where_data->base.where(column_name);
} }
} // namespace repertory::utils::db::sqlite } // namespace repertory::utils::db::sqlite

View File

@ -24,14 +24,6 @@
#if defined(PROJECT_ENABLE_SQLITE) #if defined(PROJECT_ENABLE_SQLITE)
namespace repertory::utils::db::sqlite { namespace repertory::utils::db::sqlite {
void db_update::context::clear() {
column_values.clear();
limit.reset();
order_by.reset();
where.reset();
where_values.clear();
}
auto db_update::context::db_update_op_t::dump() const -> std::string { auto db_update::context::db_update_op_t::dump() const -> std::string {
return db_update{ctx}.dump(); return db_update{ctx}.dump();
} }
@ -53,8 +45,8 @@ auto db_update::context::db_update_op_t::order_by(std::string column_name,
return *this; return *this;
} }
auto db_update::column_value(std::string column_name, auto db_update::column_value(std::string column_name, db_types_t value)
db_types_t value) -> db_update & { -> db_update & {
context_->column_values[column_name] = value; context_->column_values[column_name] = value;
return *this; return *this;
} }
@ -73,9 +65,9 @@ auto db_update::dump() const -> std::string {
query << '"' << column->first << "\"=?" + std::to_string(idx + 1); query << '"' << column->first << "\"=?" + std::to_string(idx + 1);
} }
if (context_->where.has_value()) { if (context_->where_data) {
auto idx{static_cast<std::int32_t>(context_->column_values.size())}; auto idx{static_cast<std::int32_t>(context_->column_values.size())};
query << " WHERE " << context_->where->dump(idx); query << " WHERE " << context_->where_data->base.dump(idx);
} }
if (context_->order_by.has_value()) { if (context_->order_by.has_value()) {
@ -124,9 +116,15 @@ auto db_update::go() const -> db_result<context> {
} }
} }
if (not context_->where_data) {
return {context_, res};
}
for (std::int32_t idx = 0; for (std::int32_t idx = 0;
idx < static_cast<std::int32_t>(context_->where_values.size()); idx++) { idx < static_cast<std::int32_t>(context_->where_data->values.size());
res = std::visit(overloaded{ idx++) {
res = std::visit(
overloaded{
[this, &idx](std::int64_t data) -> std::int32_t { [this, &idx](std::int64_t data) -> std::int32_t {
return sqlite3_bind_int64( return sqlite3_bind_int64(
context_->stmt.get(), context_->stmt.get(),
@ -137,8 +135,7 @@ auto db_update::go() const -> db_result<context> {
data); data);
}, },
[this, &idx](const std::string &data) -> std::int32_t { [this, &idx](const std::string &data) -> std::int32_t {
return sqlite3_bind_text( return sqlite3_bind_text(context_->stmt.get(),
context_->stmt.get(),
idx + idx +
static_cast<std::int32_t>( static_cast<std::int32_t>(
context_->column_values.size()) + context_->column_values.size()) +
@ -146,7 +143,7 @@ auto db_update::go() const -> db_result<context> {
data.c_str(), -1, nullptr); data.c_str(), -1, nullptr);
}, },
}, },
context_->where_values.at(static_cast<std::size_t>(idx))); context_->where_data->values.at(static_cast<std::size_t>(idx)));
if (res != SQLITE_OK) { if (res != SQLITE_OK) {
return {context_, res}; return {context_, res};
} }
@ -156,11 +153,13 @@ auto db_update::go() const -> db_result<context> {
} }
auto db_update::group(context::w_t::group_func_t func) -> context::w_t::wn_t { auto db_update::group(context::w_t::group_func_t func) -> context::w_t::wn_t {
if (not context_->where.has_value()) { if (not context_->where_data) {
context_->where = context::w_t{0U, context_}; context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
context::w_t{0U, context_},
});
} }
return context_->where->group(std::move(func)); return context_->where_data->base.group(std::move(func));
} }
auto db_update::limit(std::int32_t value) -> db_update & { auto db_update::limit(std::int32_t value) -> db_update & {
@ -168,18 +167,20 @@ auto db_update::limit(std::int32_t value) -> db_update & {
return *this; return *this;
} }
auto db_update::order_by(std::string column_name, auto db_update::order_by(std::string column_name, bool ascending)
bool ascending) -> db_update & { -> db_update & {
context_->order_by = {column_name, ascending}; context_->order_by = {column_name, ascending};
return *this; return *this;
} }
auto db_update::where(std::string column_name) const -> context::w_t::cn_t { auto db_update::where(std::string column_name) const -> context::w_t::cn_t {
if (not context_->where.has_value()) { if (not context_->where_data) {
context_->where = context::w_t{0U, context_}; context_->where_data = std::make_unique<context::wd_t>(context::wd_t{
context::w_t{0U, context_},
});
} }
return context_->where->where(column_name); return context_->where_data->base.where(column_name);
} }
} // namespace repertory::utils::db::sqlite } // namespace repertory::utils::db::sqlite

View File

@ -352,9 +352,7 @@ auto encrypting_reader::create_iostream() const
auto encrypting_reader::reader_function(char *buffer, size_t size, auto encrypting_reader::reader_function(char *buffer, size_t size,
size_t nitems) -> size_t { size_t nitems) -> size_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
const auto read_size = static_cast<std::size_t>(std::min( const auto read_size = static_cast<std::size_t>(std::min(
static_cast<std::uint64_t>(size * nitems), total_size_ - read_offset_)); static_cast<std::uint64_t>(size * nitems), total_size_ - read_offset_));

View File

@ -25,6 +25,27 @@ namespace repertory::utils::error {
std::atomic<const i_exception_handler *> exception_handler{ std::atomic<const i_exception_handler *> exception_handler{
&default_exception_handler}; &default_exception_handler};
auto create_error_message(std::string_view function_name,
std::vector<std::string_view> items) -> std::string {
std::stringstream stream{};
stream << function_name;
for (auto &&item : items) {
stream << '|' << item;
}
return stream.str();
}
void handle_error(std::string_view function_name, std::string_view msg) {
const i_exception_handler *handler{exception_handler};
if (handler != nullptr) {
handler->handle_error(function_name, msg);
return;
}
default_exception_handler.handle_error(function_name, msg);
}
void handle_exception(std::string_view function_name) { void handle_exception(std::string_view function_name) {
const i_exception_handler *handler{exception_handler}; const i_exception_handler *handler{exception_handler};
if (handler != nullptr) { if (handler != nullptr) {

View File

@ -32,9 +32,7 @@
namespace repertory::utils::file { namespace repertory::utils::file {
auto change_to_process_directory() -> bool { auto change_to_process_directory() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
#if defined(_WIN32) #if defined(_WIN32)
@ -100,9 +98,7 @@ auto create_temp_name(std::wstring_view file_part) -> std::wstring {
auto get_free_drive_space(std::string_view path) auto get_free_drive_space(std::string_view path)
-> std::optional<std::uint64_t> { -> std::optional<std::uint64_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
#if defined(_WIN32) #if defined(_WIN32)
@ -168,9 +164,7 @@ auto get_time(std::wstring_view path,
} }
auto get_times(std::string_view path) -> std::optional<file_times> { auto get_times(std::string_view path) -> std::optional<file_times> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
file_times ret{}; file_times ret{};
@ -244,9 +238,7 @@ auto get_times(std::wstring_view path) -> std::optional<file_times> {
auto get_total_drive_space(std::string_view path) auto get_total_drive_space(std::string_view path)
-> std::optional<std::uint64_t> { -> std::optional<std::uint64_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
#if defined(_WIN32) #if defined(_WIN32)
@ -337,9 +329,7 @@ auto read_json_file(std::string_view path, nlohmann::json &data,
#else // !defined(PROJECT_ENABLE_LIBSODIUM) && defined(PROJECT_ENABLE_BOOST) #else // !defined(PROJECT_ENABLE_LIBSODIUM) && defined(PROJECT_ENABLE_BOOST)
auto read_json_file(std::string_view path, nlohmann::json &data) -> bool { auto read_json_file(std::string_view path, nlohmann::json &data) -> bool {
#endif // defined(PROJECT_ENABLE_LIBSODIUM) && defined(PROJECT_ENABLE_BOOST) #endif // defined(PROJECT_ENABLE_LIBSODIUM) && defined(PROJECT_ENABLE_BOOST)
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto abs_path = utils::path::absolute(path); auto abs_path = utils::path::absolute(path);
@ -395,9 +385,7 @@ auto write_json_file(std::string_view path, const nlohmann::json &data,
auto write_json_file(std::string_view path, auto write_json_file(std::string_view path,
const nlohmann::json &data) -> bool { const nlohmann::json &data) -> bool {
#endif // defined(PROJECT_ENABLE_LIBSODIUM) && defined(PROJECT_ENABLE_BOOST) #endif // defined(PROJECT_ENABLE_LIBSODIUM) && defined(PROJECT_ENABLE_BOOST)
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto file = file::open_or_create_file(path); auto file = file::open_or_create_file(path);

View File

@ -35,7 +35,7 @@ auto traverse_directory(
auto res{true}; auto res{true};
const auto is_stop_requested = [&stop_requested]() -> bool { const auto is_stop_requested = [&stop_requested]() -> bool {
return (stop_requested != nullptr && !*stop_requested); return (stop_requested != nullptr && *stop_requested);
}; };
#if defined(_WIN32) #if defined(_WIN32)
@ -94,11 +94,9 @@ auto traverse_directory(
} // namespace } // namespace
namespace repertory::utils::file { namespace repertory::utils::file {
auto directory::copy_to(std::string_view new_path, auto directory::copy_to(std::string_view new_path, bool overwrite) const
bool overwrite) const -> bool { -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
throw std::runtime_error("failed to copy directory|" + path_ + '|' + throw std::runtime_error("failed to copy directory|" + path_ + '|' +
@ -114,9 +112,7 @@ auto directory::copy_to(std::string_view new_path,
} }
auto directory::count(bool recursive) const -> std::uint64_t { auto directory::count(bool recursive) const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
std::uint64_t ret{0U}; std::uint64_t ret{0U};
@ -149,9 +145,7 @@ auto directory::count(bool recursive) const -> std::uint64_t {
auto directory::create_directory(std::string_view path) const auto directory::create_directory(std::string_view path) const
-> fs_directory_t { -> fs_directory_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto abs_path = utils::path::combine(path_, {path}); auto abs_path = utils::path::combine(path_, {path});
@ -184,7 +178,7 @@ auto directory::create_directory(std::string_view path) const
auto status = mkdir(current_path.c_str(), S_IRWXU); auto status = mkdir(current_path.c_str(), S_IRWXU);
ret = ((status == 0) || (errno == EEXIST)); ret = ((status == 0) || (errno == EEXIST));
} }
#endif #endif // defined(_WIN32)
return std::make_unique<directory>(abs_path); return std::make_unique<directory>(abs_path);
} catch (const std::exception &e) { } catch (const std::exception &e) {
@ -208,9 +202,7 @@ auto directory::exists() const -> bool {
} }
auto directory::get_directory(std::string_view path) const -> fs_directory_t { auto directory::get_directory(std::string_view path) const -> fs_directory_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto dir_path = utils::path::combine(path_, {path}); auto dir_path = utils::path::combine(path_, {path});
@ -229,9 +221,7 @@ auto directory::get_directory(std::string_view path) const -> fs_directory_t {
} }
auto directory::get_directories() const -> std::vector<fs_directory_t> { auto directory::get_directories() const -> std::vector<fs_directory_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
std::vector<fs_directory_t> ret{}; std::vector<fs_directory_t> ret{};
@ -257,11 +247,9 @@ auto directory::get_directories() const -> std::vector<fs_directory_t> {
return {}; return {};
} }
auto directory::create_file(std::string_view file_name, auto directory::create_file(std::string_view file_name, bool read_only) const
bool read_only) const -> fs_file_t { -> fs_file_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto file_path = utils::path::combine(path_, {file_name}); auto file_path = utils::path::combine(path_, {file_name});
@ -276,9 +264,7 @@ auto directory::create_file(std::string_view file_name,
} }
auto directory::get_file(std::string_view path) const -> fs_file_t { auto directory::get_file(std::string_view path) const -> fs_file_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto file_path = utils::path::combine(path_, {path}); auto file_path = utils::path::combine(path_, {path});
@ -295,9 +281,7 @@ auto directory::get_file(std::string_view path) const -> fs_file_t {
} }
auto directory::get_files() const -> std::vector<fs_file_t> { auto directory::get_files() const -> std::vector<fs_file_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
std::vector<fs_file_t> ret{}; std::vector<fs_file_t> ret{};
@ -323,9 +307,7 @@ auto directory::get_files() const -> std::vector<fs_file_t> {
} }
auto directory::get_items() const -> std::vector<fs_item_t> { auto directory::get_items() const -> std::vector<fs_item_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
std::vector<fs_item_t> ret{}; std::vector<fs_item_t> ret{};
@ -361,9 +343,7 @@ auto directory::is_stop_requested() const -> bool {
} }
auto directory::is_symlink() const -> bool { auto directory::is_symlink() const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
return std::filesystem::is_symlink(path_); return std::filesystem::is_symlink(path_);
@ -377,9 +357,7 @@ auto directory::is_symlink() const -> bool {
} }
auto directory::move_to(std::string_view new_path) -> bool { auto directory::move_to(std::string_view new_path) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
throw std::runtime_error("failed to move directory|" + path_ + '|' + throw std::runtime_error("failed to move directory|" + path_ + '|' +
@ -394,20 +372,14 @@ auto directory::move_to(std::string_view new_path) -> bool {
} }
auto directory::remove() -> bool { auto directory::remove() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (not exists()) {
return true;
}
return utils::retry_action([this]() -> bool { return utils::retry_action([this]() -> bool {
try { try {
#if defined(_WIN32) #if defined(_WIN32)
return ::RemoveDirectoryA(path_.c_str()); return not exists() || (::RemoveDirectoryA(path_.c_str()) != 0);
#else // !defined(_WIN32) #else // !defined(_WIN32)
return (rmdir(path_.c_str()) == 0); return not exists() || (rmdir(path_.c_str()) == 0);
#endif // defined(_WIN32) #endif // defined(_WIN32)
} catch (const std::exception &e) { } catch (const std::exception &e) {
utils::error::handle_exception(function_name, e); utils::error::handle_exception(function_name, e);
@ -420,9 +392,7 @@ auto directory::remove() -> bool {
} }
auto directory::remove_recursively() -> bool { auto directory::remove_recursively() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not exists()) { if (not exists()) {
@ -448,9 +418,7 @@ auto directory::remove_recursively() -> bool {
} }
auto directory::size(bool recursive) const -> std::uint64_t { auto directory::size(bool recursive) const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
std::uint64_t ret{0U}; std::uint64_t ret{0U};

View File

@ -52,8 +52,8 @@ namespace {
auto abs_path = repertory::utils::path::absolute(path); auto abs_path = repertory::utils::path::absolute(path);
#if defined(_WIN32) #if defined(_WIN32)
return (::PathFileExistsA(abs_path.c_str()) && return ((::PathFileExistsA(abs_path.c_str()) != 0) &&
not ::PathIsDirectoryA(abs_path.c_str())); (::PathIsDirectoryA(abs_path.c_str()) == 0));
#else // !defined(_WIN32) #else // !defined(_WIN32)
struct stat64 st{}; struct stat64 st{};
return (stat64(abs_path.c_str(), &st) == 0 && not S_ISDIR(st.st_mode)); return (stat64(abs_path.c_str(), &st) == 0 && not S_ISDIR(st.st_mode));
@ -64,9 +64,7 @@ namespace {
namespace repertory::utils::file { namespace repertory::utils::file {
// auto file::attach_file(native_handle handle, // auto file::attach_file(native_handle handle,
// bool read_only) -> fs_file_t { // bool read_only) -> fs_file_t {
// static constexpr const std::string_view function_name{ // REPERTORY_USES_FUNCTION_NAME();
// static_cast<const char *>(__FUNCTION__),
// };
// //
// try { // try {
// std::string path; // std::string path;
@ -119,18 +117,20 @@ void file::open() {
} }
#if defined(_WIN32) #if defined(_WIN32)
file_ = file_t(_fsopen(path_.c_str(), read_only_ ? "rb" : "rb+", _SH_DENYNO), file_ = file_t{
file_deleter()); _fsopen(path_.c_str(), read_only_ ? "rb" : "rb+", _SH_DENYNO),
file_deleter(),
};
#else // !defined(_WIN32) #else // !defined(_WIN32)
file_ = file_ = file_t{
file_t(fopen(path_.c_str(), read_only_ ? "rb" : "rb+"), file_deleter()); fopen(path_.c_str(), read_only_ ? "rb" : "rb+"),
file_deleter(),
};
#endif // defined(_WIN32) #endif // defined(_WIN32)
} }
auto file::open_file(std::string_view path, bool read_only) -> fs_file_t { auto file::open_file(std::string_view path, bool read_only) -> fs_file_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto *ptr = new file{ auto *ptr = new file{
nullptr, nullptr,
@ -150,8 +150,8 @@ auto file::open_file(std::string_view path, bool read_only) -> fs_file_t {
return new_file; return new_file;
} }
auto file::open_or_create_file(std::string_view path, auto file::open_or_create_file(std::string_view path, bool read_only)
bool read_only) -> fs_file_t { -> fs_file_t {
auto abs_path = utils::path::absolute(path); auto abs_path = utils::path::absolute(path);
if (not is_file(abs_path)) { if (not is_file(abs_path)) {
#if defined(_WIN32) #if defined(_WIN32)
@ -184,9 +184,7 @@ auto file::open_or_create_file(std::string_view path,
void file::close() { file_.reset(); } void file::close() { file_.reset(); }
auto file::copy_to(std::string_view new_path, bool overwrite) const -> bool { auto file::copy_to(std::string_view new_path, bool overwrite) const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
auto to_path = utils::path::absolute(new_path); auto to_path = utils::path::absolute(new_path);
@ -196,7 +194,7 @@ auto file::copy_to(std::string_view new_path, bool overwrite) const -> bool {
#if defined(_WIN32) #if defined(_WIN32)
return ::CopyFileA(path_.c_str(), to_path.c_str(), return ::CopyFileA(path_.c_str(), to_path.c_str(),
overwrite ? TRUE : FALSE); overwrite ? TRUE : FALSE) != 0;
#else // !defined(_WIN32) #else // !defined(_WIN32)
return std::filesystem::copy_file( return std::filesystem::copy_file(
path_, to_path, path_, to_path,
@ -234,9 +232,7 @@ auto file::get_handle() const -> native_handle {
} }
auto file::is_symlink() const -> bool { auto file::is_symlink() const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
return std::filesystem::is_symlink(path_); return std::filesystem::is_symlink(path_);
@ -250,9 +246,7 @@ auto file::is_symlink() const -> bool {
} }
auto file::move_to(std::string_view path) -> bool { auto file::move_to(std::string_view path) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto abs_path = utils::path::absolute(path); auto abs_path = utils::path::absolute(path);
@ -264,8 +258,8 @@ auto file::move_to(std::string_view path) -> bool {
auto success{false}; auto success{false};
#if defined(_WIN32) #if defined(_WIN32)
success = !!::MoveFileExA(path_.c_str(), abs_path.c_str(), success = ::MoveFileExA(path_.c_str(), abs_path.c_str(),
MOVEFILE_REPLACE_EXISTING); MOVEFILE_REPLACE_EXISTING) != 0;
#else // !// defined(_WIN32) #else // !// defined(_WIN32)
std::error_code ec{}; std::error_code ec{};
std::filesystem::rename(path_, abs_path, ec); std::filesystem::rename(path_, abs_path, ec);
@ -292,9 +286,7 @@ auto file::move_to(std::string_view path) -> bool {
auto file::read(unsigned char *data, std::size_t to_read, std::uint64_t offset, auto file::read(unsigned char *data, std::size_t to_read, std::uint64_t offset,
std::size_t *total_read) -> bool { std::size_t *total_read) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (total_read != nullptr) { if (total_read != nullptr) {
(*total_read) = 0U; (*total_read) = 0U;
@ -341,9 +333,7 @@ auto file::read(unsigned char *data, std::size_t to_read, std::uint64_t offset,
#if defined(PROJECT_ENABLE_LIBSODIUM) #if defined(PROJECT_ENABLE_LIBSODIUM)
auto file::sha256() -> std::optional<std::string> { auto file::sha256() -> std::optional<std::string> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto should_close{false}; auto should_close{false};
auto read_only{read_only_}; auto read_only{read_only_};
@ -407,26 +397,20 @@ auto file::sha256() -> std::optional<std::string> {
#endif // defined(PROJECT_ENABLE_LIBSODIUM) #endif // defined(PROJECT_ENABLE_LIBSODIUM)
auto file::remove() -> bool { auto file::remove() -> bool {
if (not exists()) {
return true;
}
close(); close();
return utils::retry_action([this]() -> bool { return utils::retry_action([this]() -> bool {
#if defined(_WIN32) #if defined(_WIN32)
return ::DeleteFileA(path_.c_str()); return not exists() || (::DeleteFileA(path_.c_str()) != 0);
#else // !defined(_WIN32) #else // !defined(_WIN32)
std::error_code ec{}; std::error_code ec{};
return std::filesystem::remove(path_, ec); return not exists() || std::filesystem::remove(path_, ec);
#endif // defined(_WIN32) #endif // defined(_WIN32)
}); });
} }
auto file::truncate(std::size_t size) -> bool { auto file::truncate(std::size_t size) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
auto reopen{false}; auto reopen{false};
if (file_) { if (file_) {
@ -456,9 +440,7 @@ auto file::truncate(std::size_t size) -> bool {
auto file::write(const unsigned char *data, std::size_t to_write, auto file::write(const unsigned char *data, std::size_t to_write,
std::size_t offset, std::size_t *total_written) -> bool { std::size_t offset, std::size_t *total_written) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
if (total_written != nullptr) { if (total_written != nullptr) {
(*total_written) = 0U; (*total_written) = 0U;
@ -506,9 +488,7 @@ auto file::write(const unsigned char *data, std::size_t to_write,
} }
auto file::size() const -> std::optional<std::uint64_t> { auto file::size() const -> std::optional<std::uint64_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (file_) { if (file_) {

View File

@ -30,9 +30,7 @@ namespace repertory::utils::file {
auto smb_directory::open(std::string_view host, std::string_view user, auto smb_directory::open(std::string_view host, std::string_view user,
std::string_view password, std::string_view path, std::string_view password, std::string_view path,
stop_type *stop_requested) -> smb_directory_t { stop_type *stop_requested) -> smb_directory_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
smb_session_t session{ smb_session_t session{
@ -113,9 +111,7 @@ auto smb_directory::open(std::wstring_view host, std::wstring_view user,
auto smb_directory::copy_to(std::string_view new_path, auto smb_directory::copy_to(std::string_view new_path,
bool overwrite) const -> bool { bool overwrite) const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -136,9 +132,7 @@ auto smb_directory::copy_to(std::string_view new_path,
} }
auto smb_directory::count(bool recursive) const -> std::uint64_t { auto smb_directory::count(bool recursive) const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -168,9 +162,7 @@ auto smb_directory::count(bool recursive) const -> std::uint64_t {
auto smb_directory::create_directory(std::string_view path) const auto smb_directory::create_directory(std::string_view path) const
-> fs_directory_t { -> fs_directory_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -202,9 +194,7 @@ auto smb_directory::create_directory(std::string_view path) const
auto smb_directory::create_file(std::string_view file_name, auto smb_directory::create_file(std::string_view file_name,
bool read_only) const -> fs_file_t { bool read_only) const -> fs_file_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -249,9 +239,7 @@ auto smb_directory::create_file(std::string_view file_name,
return nullptr; return nullptr;
} }
auto smb_directory::exists() const -> bool { auto smb_directory::exists() const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -279,9 +267,7 @@ auto smb_directory::exists() const -> bool {
auto smb_directory::get_directory(std::string_view path) const auto smb_directory::get_directory(std::string_view path) const
-> fs_directory_t { -> fs_directory_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -321,9 +307,7 @@ auto smb_directory::get_directory(std::string_view path) const
} }
auto smb_directory::get_directories() const -> std::vector<fs_directory_t> { auto smb_directory::get_directories() const -> std::vector<fs_directory_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -382,9 +366,7 @@ auto smb_directory::get_directories() const -> std::vector<fs_directory_t> {
} }
auto smb_directory::get_file(std::string_view path) const -> fs_file_t { auto smb_directory::get_file(std::string_view path) const -> fs_file_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -418,9 +400,7 @@ auto smb_directory::get_file(std::string_view path) const -> fs_file_t {
} }
auto smb_directory::get_files() const -> std::vector<fs_file_t> { auto smb_directory::get_files() const -> std::vector<fs_file_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -469,9 +449,7 @@ auto smb_directory::get_files() const -> std::vector<fs_file_t> {
} }
auto smb_directory::get_items() const -> std::vector<fs_item_t> { auto smb_directory::get_items() const -> std::vector<fs_item_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -548,9 +526,7 @@ auto smb_directory::is_stop_requested() const -> bool {
} }
auto smb_directory::is_symlink() const -> bool { auto smb_directory::is_symlink() const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -567,9 +543,7 @@ auto smb_directory::is_symlink() const -> bool {
} }
auto smb_directory::move_to(std::string_view new_path) -> bool { auto smb_directory::move_to(std::string_view new_path) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -588,20 +562,18 @@ auto smb_directory::move_to(std::string_view new_path) -> bool {
} }
auto smb_directory::remove() -> bool { auto smb_directory::remove() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
throw std::runtime_error("session not found|" + path_); throw std::runtime_error("session not found|" + path_);
} }
return utils::retry_action([this]() -> bool {
if (not exists()) { if (not exists()) {
return true; return true;
} }
return utils::retry_action([this]() -> bool {
try { try {
auto res = smb_directory_rm(session_.get(), tid_, auto res = smb_directory_rm(session_.get(), tid_,
smb_create_relative_path(path_).c_str()); smb_create_relative_path(path_).c_str());
@ -629,9 +601,7 @@ auto smb_directory::remove() -> bool {
} }
auto smb_directory::remove_recursively() -> bool { auto smb_directory::remove_recursively() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -654,9 +624,7 @@ auto smb_directory::remove_recursively() -> bool {
} }
auto smb_directory::size(bool /* recursive */) const -> std::uint64_t { auto smb_directory::size(bool /* recursive */) const -> std::uint64_t {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {

View File

@ -37,9 +37,7 @@ void smb_file::close() {
auto smb_file::copy_to(std::string_view new_path, auto smb_file::copy_to(std::string_view new_path,
bool overwrite) const -> bool { bool overwrite) const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -61,9 +59,7 @@ auto smb_file::copy_to(std::string_view new_path,
} }
auto smb_file::exists() const -> bool { auto smb_file::exists() const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -90,9 +86,7 @@ auto smb_file::exists() const -> bool {
} }
void smb_file::flush() const { void smb_file::flush() const {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
throw std::runtime_error("failed to flush file|" + path_ + throw std::runtime_error("failed to flush file|" + path_ +
@ -106,9 +100,7 @@ void smb_file::flush() const {
auto smb_file::get_time(smb_session *session, smb_tid tid, std::string path, auto smb_file::get_time(smb_session *session, smb_tid tid, std::string path,
time_type type) -> std::optional<std::uint64_t> { time_type type) -> std::optional<std::uint64_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (session == nullptr) { if (session == nullptr) {
@ -147,9 +139,7 @@ auto smb_file::get_time(smb_session *session, smb_tid tid, std::string path,
} }
auto smb_file::is_symlink() const -> bool { auto smb_file::is_symlink() const -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -166,9 +156,7 @@ auto smb_file::is_symlink() const -> bool {
} }
auto smb_file::move_to(std::string_view new_path) -> bool { auto smb_file::move_to(std::string_view new_path) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (utils::string::begins_with(new_path, "//")) { if (utils::string::begins_with(new_path, "//")) {
@ -218,9 +206,7 @@ auto smb_file::move_to(std::string_view new_path) -> bool {
} }
auto smb_file::open(bool read_only) -> bool { auto smb_file::open(bool read_only) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (fd_.has_value()) { if (fd_.has_value()) {
@ -263,9 +249,7 @@ auto smb_file::open(bool read_only) -> bool {
auto smb_file::read(unsigned char *data, std::size_t to_read, auto smb_file::read(unsigned char *data, std::size_t to_read,
std::uint64_t offset, std::size_t *total_read) -> bool { std::uint64_t offset, std::size_t *total_read) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (total_read != nullptr) { if (total_read != nullptr) {
@ -317,18 +301,16 @@ auto smb_file::read(unsigned char *data, std::size_t to_read,
} }
auto smb_file::remove() -> bool { auto smb_file::remove() -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
close();
return utils::retry_action([this]() -> bool {
if (not exists()) { if (not exists()) {
return true; return true;
} }
close();
return utils::retry_action([this]() -> bool {
try { try {
auto res = smb_tree_connect(session_.get(), share_name_.c_str(), &tid_); auto res = smb_tree_connect(session_.get(), share_name_.c_str(), &tid_);
if (res != DSM_SUCCESS) { if (res != DSM_SUCCESS) {
@ -364,9 +346,7 @@ auto smb_file::remove() -> bool {
} }
auto smb_file::size() const -> std::optional<std::uint64_t> { auto smb_file::size() const -> std::optional<std::uint64_t> {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (not session_) { if (not session_) {
@ -393,9 +373,7 @@ auto smb_file::size() const -> std::optional<std::uint64_t> {
} }
auto smb_file::truncate(std::size_t size) -> bool { auto smb_file::truncate(std::size_t size) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
throw std::runtime_error("failed to truncate file|" + path_ + '|' + throw std::runtime_error("failed to truncate file|" + path_ + '|' +
@ -411,9 +389,7 @@ auto smb_file::truncate(std::size_t size) -> bool {
auto smb_file::write(const unsigned char *data, std::size_t to_write, auto smb_file::write(const unsigned char *data, std::size_t to_write,
std::size_t offset, std::size_t *total_written) -> bool { std::size_t offset, std::size_t *total_written) -> bool {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
try { try {
if (total_written != nullptr) { if (total_written != nullptr) {

View File

@ -56,9 +56,7 @@ auto is_uid_member_of_group(const uid_t &uid, const gid_t &gid) -> bool {
} }
auto use_getpwuid(uid_t uid, passwd_callback_t callback) -> result { auto use_getpwuid(uid_t uid, passwd_callback_t callback) -> result {
static constexpr const std::string_view function_name{ REPERTORY_USES_FUNCTION_NAME();
static_cast<const char *>(__FUNCTION__),
};
static std::mutex mtx{}; static std::mutex mtx{};
mutex_lock lock{mtx}; mutex_lock lock{mtx};

View File

@ -26,6 +26,39 @@
#include "utils/string.hpp" #include "utils/string.hpp"
namespace repertory::utils { namespace repertory::utils {
void create_console() {
if (AllocConsole() == 0) {
return;
}
FILE *dummy{nullptr};
freopen_s(&dummy, "CONOUT$", "w", stdout);
freopen_s(&dummy, "CONOUT$", "w", stderr);
freopen_s(&dummy, "CONIN$", "r", stdin);
std::cout.clear();
std::clog.clear();
std::cerr.clear();
std::cin.clear();
auto *out_w = CreateFileW(L"CONOUT$", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
auto *in_w = CreateFileW(L"CONIN$", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
SetStdHandle(STD_OUTPUT_HANDLE, out_w);
SetStdHandle(STD_ERROR_HANDLE, out_w);
SetStdHandle(STD_INPUT_HANDLE, in_w);
std::wcout.clear();
std::wclog.clear();
std::wcerr.clear();
std::wcin.clear();
}
void free_console() {
FreeConsole();
}
auto get_last_error_code() -> DWORD { return ::GetLastError(); } auto get_last_error_code() -> DWORD { return ::GetLastError(); }
auto get_local_app_data_directory() -> const std::string & { auto get_local_app_data_directory() -> const std::string & {

View File

@ -29,19 +29,16 @@ static std::vector<std::unique_ptr<repertory::utils::file::i_fs_item>>
static void delete_generated_files() { static void delete_generated_files() {
repertory::recur_mutex_lock lock{file_mtx}; repertory::recur_mutex_lock lock{file_mtx};
std::optional<std::string> parent_path; std::map<std::string, bool> parent_paths;
for (auto &&path : generated_files) { for (auto &&path : generated_files) {
if (parent_path->empty()) { parent_paths[repertory::utils::path::get_parent_path(path->get_path())] =
parent_path = repertory::utils::path::get_parent_path(path->get_path()); true;
}
[[maybe_unused]] auto removed = path->remove();
} }
generated_files.clear(); generated_files.clear();
if (parent_path.has_value()) { for (auto &&entry : parent_paths) {
EXPECT_TRUE( EXPECT_TRUE(
repertory::utils::file::directory(*parent_path).remove_recursively()); repertory::utils::file::directory(entry.first).remove_recursively());
} }
} }
@ -49,7 +46,9 @@ struct file_deleter final {
~file_deleter() { delete_generated_files(); } ~file_deleter() { delete_generated_files(); }
}; };
static auto deleter{std::make_unique<file_deleter>()}; static auto deleter{
std::make_unique<file_deleter>(),
};
} // namespace } // namespace
namespace repertory::test { namespace repertory::test {

View File

@ -37,7 +37,11 @@ TEST(utils_error, check_default_exception_handler) {
} }
TEST(utils_error, can_override_exception_handler) { TEST(utils_error, can_override_exception_handler) {
struct my_exc_handler : public utils::error::i_exception_handler { struct my_exc_handler final : public utils::error::i_exception_handler {
MOCK_METHOD(void, handle_error,
(std::string_view function_name, std::string_view msg),
(const, override));
MOCK_METHOD(void, handle_exception, (std::string_view function_name), MOCK_METHOD(void, handle_exception, (std::string_view function_name),
(const, override)); (const, override));
@ -49,6 +53,9 @@ TEST(utils_error, can_override_exception_handler) {
my_exc_handler handler{}; my_exc_handler handler{};
utils::error::set_exception_handler(&handler); utils::error::set_exception_handler(&handler);
EXPECT_CALL(handler, handle_error("test_func", "error")).WillOnce(Return());
utils::error::handle_error("test_func", "error");
EXPECT_CALL(handler, handle_exception("test_func")).WillOnce(Return()); EXPECT_CALL(handler, handle_exception("test_func")).WillOnce(Return());
utils::error::handle_exception("test_func"); utils::error::handle_exception("test_func");

View File

@ -26,7 +26,7 @@ static constexpr const auto file_type_count{1U};
} }
namespace repertory { namespace repertory {
TEST(utils_file, can_create_file) { TEST(utils_file, can_create_and_remove_file) {
for (auto idx = 0U; idx < file_type_count; ++idx) { for (auto idx = 0U; idx < file_type_count; ++idx) {
auto path = test::generate_test_file_name("utils_file"); auto path = test::generate_test_file_name("utils_file");
EXPECT_FALSE(utils::file::file(path).exists() || EXPECT_FALSE(utils::file::file(path).exists() ||
@ -37,6 +37,12 @@ TEST(utils_file, can_create_file) {
EXPECT_TRUE(*file); EXPECT_TRUE(*file);
EXPECT_TRUE(utils::file::file(path).exists()); EXPECT_TRUE(utils::file::file(path).exists());
EXPECT_TRUE(file->exists());
EXPECT_TRUE(file->remove());
EXPECT_FALSE(utils::file::file(path).exists());
EXPECT_FALSE(file->exists());
} }
} }

View File

@ -391,21 +391,12 @@ TEST(utils_path, absolute) {
} }
TEST(utils_path, absolute_can_resolve_path_variables) { TEST(utils_path, absolute_can_resolve_path_variables) {
std::string home{};
#if defined(_WIN32) #if defined(_WIN32)
home.resize(repertory::max_path_length + 1U); auto home =
auto size = ::GetEnvironmentVariableA("USERPROFILE", home.data(), 0U); utils::path::absolute(utils::get_environment_variable("USERPROFILE"));
home.resize(size);
::GetEnvironmentVariableA("USERPROFILE", home.data(),
static_cast<DWORD>(home.size()));
home = utils::path::absolute(home);
EXPECT_STREQ(home.c_str(), utils::path::absolute("%USERPROFILE%").c_str()); EXPECT_STREQ(home.c_str(), utils::path::absolute("%USERPROFILE%").c_str());
#else // !defined(_WIN32) #else // !defined(_WIN32)
home = std::getenv("HOME"); auto home = utils::path::absolute(utils::get_environment_variable("HOME"));
home = utils::path::absolute(home);
#endif // defined(_WIN32) #endif // defined(_WIN32)
auto expanded_str = utils::path::absolute("~\\"); auto expanded_str = utils::path::absolute("~\\");