refactor
This commit is contained in:
@ -42,9 +42,9 @@ private:
|
|||||||
private:
|
private:
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#define to_handle(x) (x)
|
#define to_handle(x) (x)
|
||||||
#else
|
#else // !defined(_WIN32)
|
||||||
static auto to_handle(PVOID file_desc) -> native_handle;
|
static auto to_handle(PVOID file_desc) -> native_handle;
|
||||||
#endif
|
#endif // defined(_WIN32)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
auto json_create_directory_snapshot(const std::string &path, json &json_data)
|
auto json_create_directory_snapshot(const std::string &path, json &json_data)
|
||||||
|
@ -65,7 +65,10 @@ auto remote_client::winfsp_can_delete(PVOID file_desc,
|
|||||||
request.encode(file_name);
|
request.encode(file_name);
|
||||||
|
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
const auto ret = packet_client_.send(function_name, request, service_flags);
|
auto ret{
|
||||||
|
packet_client_.send(function_name, request, service_flags),
|
||||||
|
};
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
||||||
function_name,
|
function_name,
|
||||||
utils::path::create_api_path(utils::string::to_utf8(file_name)), ret);
|
utils::path::create_api_path(utils::string::to_utf8(file_name)), ret);
|
||||||
@ -83,8 +86,9 @@ auto remote_client::json_create_directory_snapshot(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ret = packet::decode_json(response, json_data);
|
ret = packet::decode_json(response, json_data);
|
||||||
}
|
}
|
||||||
@ -107,8 +111,9 @@ auto remote_client::json_read_directory_snapshot(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ret = packet::decode_json(response, json_data);
|
ret = packet::decode_json(response, json_data);
|
||||||
}
|
}
|
||||||
@ -129,7 +134,9 @@ auto remote_client::json_release_directory_snapshot(
|
|||||||
request.encode(handle);
|
request.encode(handle);
|
||||||
|
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
const auto ret = packet_client_.send(function_name, request, service_flags);
|
auto ret{
|
||||||
|
packet_client_.send(function_name, request, service_flags),
|
||||||
|
};
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(function_name, path, ret);
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(function_name, path, ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -142,8 +149,14 @@ auto remote_client::winfsp_cleanup(PVOID file_desc, PWSTR file_name,
|
|||||||
static_cast<const char *>(__FUNCTION__),
|
static_cast<const char *>(__FUNCTION__),
|
||||||
};
|
};
|
||||||
|
|
||||||
auto handle = to_handle(file_desc);
|
auto handle{
|
||||||
const auto file_path = get_open_file_path(handle);
|
to_handle(file_desc),
|
||||||
|
};
|
||||||
|
|
||||||
|
auto file_path{
|
||||||
|
get_open_file_path(handle),
|
||||||
|
};
|
||||||
|
|
||||||
was_closed = 0;
|
was_closed = 0;
|
||||||
|
|
||||||
packet request;
|
packet request;
|
||||||
@ -153,8 +166,9 @@ auto remote_client::winfsp_cleanup(PVOID file_desc, PWSTR file_name,
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, was_closed);
|
DECODE_OR_IGNORE(&response, was_closed);
|
||||||
if (was_closed != 0U) {
|
if (was_closed != 0U) {
|
||||||
remove_all(file_path);
|
remove_all(file_path);
|
||||||
@ -168,15 +182,21 @@ auto remote_client::winfsp_close(PVOID file_desc) -> packet::error_type {
|
|||||||
static_cast<const char *>(__FUNCTION__),
|
static_cast<const char *>(__FUNCTION__),
|
||||||
};
|
};
|
||||||
|
|
||||||
auto handle = to_handle(file_desc);
|
auto handle{
|
||||||
|
to_handle(file_desc),
|
||||||
|
};
|
||||||
if (has_open_info(handle, STATUS_INVALID_HANDLE) == STATUS_SUCCESS) {
|
if (has_open_info(handle, STATUS_INVALID_HANDLE) == STATUS_SUCCESS) {
|
||||||
const auto file_path = get_open_file_path(handle);
|
auto file_path{
|
||||||
|
get_open_file_path(handle),
|
||||||
|
};
|
||||||
|
|
||||||
packet request;
|
packet request;
|
||||||
request.encode(file_desc);
|
request.encode(file_desc);
|
||||||
|
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
const auto ret = packet_client_.send(function_name, request, service_flags);
|
auto ret{
|
||||||
|
packet_client_.send(function_name, request, service_flags),
|
||||||
|
};
|
||||||
if ((ret == STATUS_SUCCESS) ||
|
if ((ret == STATUS_SUCCESS) ||
|
||||||
(ret == static_cast<packet::error_type>(STATUS_INVALID_HANDLE))) {
|
(ret == static_cast<packet::error_type>(STATUS_INVALID_HANDLE))) {
|
||||||
remove_open_info(handle);
|
remove_open_info(handle);
|
||||||
@ -206,8 +226,9 @@ auto remote_client::winfsp_create(PWSTR file_name, UINT32 create_options,
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
if (ret == STATUS_SUCCESS) {
|
if (ret == STATUS_SUCCESS) {
|
||||||
HANDLE handle{};
|
HANDLE handle{};
|
||||||
DECODE_OR_IGNORE(&response, handle);
|
DECODE_OR_IGNORE(&response, handle);
|
||||||
@ -243,8 +264,9 @@ auto remote_client::winfsp_flush(PVOID file_desc, remote::file_info *file_info)
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, *file_info);
|
DECODE_OR_IGNORE(&response, *file_info);
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
||||||
@ -274,8 +296,9 @@ auto remote_client::winfsp_get_file_info(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, *file_info);
|
DECODE_OR_IGNORE(&response, *file_info);
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
||||||
@ -298,8 +321,9 @@ auto remote_client::winfsp_get_security_by_name(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
|
|
||||||
string_descriptor.clear();
|
string_descriptor.clear();
|
||||||
DECODE_OR_IGNORE(&response, string_descriptor);
|
DECODE_OR_IGNORE(&response, string_descriptor);
|
||||||
@ -326,8 +350,9 @@ auto remote_client::winfsp_get_volume_info(
|
|||||||
packet request;
|
packet request;
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, total_size);
|
DECODE_OR_IGNORE(&response, total_size);
|
||||||
DECODE_OR_IGNORE(&response, free_size);
|
DECODE_OR_IGNORE(&response, free_size);
|
||||||
DECODE_OR_IGNORE(&response, volume_label);
|
DECODE_OR_IGNORE(&response, volume_label);
|
||||||
@ -346,8 +371,13 @@ auto remote_client::winfsp_mounted(const std::wstring &location)
|
|||||||
request.encode(location);
|
request.encode(location);
|
||||||
|
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
const auto ret = packet_client_.send(function_name, request, service_flags);
|
auto ret{
|
||||||
const auto mount_location = utils::string::to_utf8(location);
|
packet_client_.send(function_name, request, service_flags),
|
||||||
|
};
|
||||||
|
|
||||||
|
auto mount_location{
|
||||||
|
utils::string::to_utf8(location),
|
||||||
|
};
|
||||||
event_system::instance().raise<drive_mounted>(mount_location);
|
event_system::instance().raise<drive_mounted>(mount_location);
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(function_name, mount_location, ret);
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(function_name, mount_location, ret);
|
||||||
@ -369,8 +399,9 @@ auto remote_client::winfsp_open(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
if (ret == STATUS_SUCCESS) {
|
if (ret == STATUS_SUCCESS) {
|
||||||
HANDLE handle{};
|
HANDLE handle{};
|
||||||
DECODE_OR_IGNORE(&response, handle);
|
DECODE_OR_IGNORE(&response, handle);
|
||||||
@ -406,8 +437,9 @@ auto remote_client::winfsp_overwrite(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, *file_info);
|
DECODE_OR_IGNORE(&response, *file_info);
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
||||||
@ -429,8 +461,9 @@ auto remote_client::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset,
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, *bytes_transferred);
|
DECODE_OR_IGNORE(&response, *bytes_transferred);
|
||||||
if (ret == STATUS_SUCCESS) {
|
if (ret == STATUS_SUCCESS) {
|
||||||
ret = response.decode(buffer, *bytes_transferred);
|
ret = response.decode(buffer, *bytes_transferred);
|
||||||
@ -464,8 +497,9 @@ auto remote_client::winfsp_read_directory(PVOID file_desc, PWSTR pattern,
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
if (ret == STATUS_SUCCESS) {
|
if (ret == STATUS_SUCCESS) {
|
||||||
ret = packet::decode_json(response, item_list);
|
ret = packet::decode_json(response, item_list);
|
||||||
}
|
}
|
||||||
@ -489,7 +523,10 @@ auto remote_client::winfsp_rename(
|
|||||||
request.encode(replace_if_exists);
|
request.encode(replace_if_exists);
|
||||||
|
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
const auto ret = packet_client_.send(function_name, request, service_flags);
|
auto ret{
|
||||||
|
packet_client_.send(function_name, request, service_flags),
|
||||||
|
};
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
||||||
function_name,
|
function_name,
|
||||||
utils::path::create_api_path(utils::string::to_utf8(file_name)) + "|" +
|
utils::path::create_api_path(utils::string::to_utf8(file_name)) + "|" +
|
||||||
@ -516,8 +553,9 @@ auto remote_client::winfsp_set_basic_info(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, *file_info);
|
DECODE_OR_IGNORE(&response, *file_info);
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
||||||
@ -539,8 +577,9 @@ auto remote_client::winfsp_set_file_size(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, *file_info);
|
DECODE_OR_IGNORE(&response, *file_info);
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(
|
||||||
@ -554,13 +593,17 @@ auto remote_client::winfsp_unmounted(const std::wstring &location)
|
|||||||
static_cast<const char *>(__FUNCTION__),
|
static_cast<const char *>(__FUNCTION__),
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto mount_location = utils::string::to_utf8(location);
|
auto mount_location{
|
||||||
|
utils::string::to_utf8(location),
|
||||||
|
};
|
||||||
event_system::instance().raise<drive_unmount_pending>(mount_location);
|
event_system::instance().raise<drive_unmount_pending>(mount_location);
|
||||||
packet request;
|
packet request;
|
||||||
request.encode(location);
|
request.encode(location);
|
||||||
|
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
const auto ret = packet_client_.send(function_name, request, service_flags);
|
auto ret{
|
||||||
|
packet_client_.send(function_name, request, service_flags),
|
||||||
|
};
|
||||||
event_system::instance().raise<drive_unmounted>(mount_location);
|
event_system::instance().raise<drive_unmounted>(mount_location);
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_CLIENT_EVENT(function_name, mount_location, ret);
|
RAISE_REMOTE_WINFSP_CLIENT_EVENT(function_name, mount_location, ret);
|
||||||
@ -587,8 +630,9 @@ auto remote_client::winfsp_write(
|
|||||||
|
|
||||||
packet response;
|
packet response;
|
||||||
std::uint32_t service_flags{};
|
std::uint32_t service_flags{};
|
||||||
auto ret =
|
auto ret{
|
||||||
packet_client_.send(function_name, request, response, service_flags);
|
packet_client_.send(function_name, request, response, service_flags),
|
||||||
|
};
|
||||||
DECODE_OR_IGNORE(&response, *bytes_transferred);
|
DECODE_OR_IGNORE(&response, *bytes_transferred);
|
||||||
DECODE_OR_IGNORE(&response, *file_info);
|
DECODE_OR_IGNORE(&response, *file_info);
|
||||||
|
|
||||||
@ -603,5 +647,5 @@ auto remote_client::winfsp_write(
|
|||||||
auto remote_client::to_handle(PVOID file_desc) -> native_handle {
|
auto remote_client::to_handle(PVOID file_desc) -> native_handle {
|
||||||
return static_cast<native_handle>(reinterpret_cast<std::uint64_t>(file_desc));
|
return static_cast<native_handle>(reinterpret_cast<std::uint64_t>(file_desc));
|
||||||
}
|
}
|
||||||
#endif
|
#endif // !defined(_WIN32)
|
||||||
} // namespace repertory::remote_winfsp
|
} // namespace repertory::remote_winfsp
|
||||||
|
@ -111,12 +111,22 @@ auto remote_server::fuse_access(const char *path, const std::int32_t &mask)
|
|||||||
static_cast<const char *>(__FUNCTION__),
|
static_cast<const char *>(__FUNCTION__),
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto file_path = construct_path(path);
|
auto file_path{
|
||||||
const auto windows_mask = utils::unix_access_mask_to_windows(mask);
|
construct_path(path),
|
||||||
|
};
|
||||||
|
|
||||||
|
auto windows_mask{
|
||||||
|
utils::unix_access_mask_to_windows(mask),
|
||||||
|
};
|
||||||
|
|
||||||
auto res{
|
auto res{
|
||||||
_access(file_path.c_str(), windows_mask),
|
_access(file_path.c_str(), windows_mask),
|
||||||
};
|
};
|
||||||
const auto ret = ((res < 0) ? -errno : 0);
|
|
||||||
|
auto ret{
|
||||||
|
((res < 0) ? -errno : 0),
|
||||||
|
};
|
||||||
|
|
||||||
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, file_path, ret);
|
RAISE_REMOTE_WINFSP_SERVER_EVENT(function_name, file_path, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user