From 82626de3a66655f32efc28256474b3238dd72de1 Mon Sep 17 00:00:00 2001 From: Marco Edoardo Santimaria Date: Thu, 5 Feb 2026 11:48:18 +0000 Subject: [PATCH 1/4] Update CAPIO-CL to version v1.3.4 --- capio/server/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/capio/server/CMakeLists.txt b/capio/server/CMakeLists.txt index 7d6788fa5..8245f9fad 100644 --- a/capio/server/CMakeLists.txt +++ b/capio/server/CMakeLists.txt @@ -78,4 +78,4 @@ IF (ENABLE_COVERAGE) ELSE (CMAKE_BUILD_TYPE STREQUAL "Debug") message(WARNING "Code coverage is disabled in release mode.") ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug") -ENDIF (ENABLE_COVERAGE) \ No newline at end of file +ENDIF (ENABLE_COVERAGE) From ff9b9e39a5e56e5685173ba67aebed3ac2086af8 Mon Sep 17 00:00:00 2001 From: = <=> Date: Mon, 16 Feb 2026 12:25:16 +0100 Subject: [PATCH 2/4] Refactored structure of client handlers --- capio/server/capio_server.cpp | 86 ++++--------------- .../client_manager.hpp => client/manager.hpp} | 0 capio/server/include/client/request.hpp | 53 ++++++++++++ capio/server/include/handlers.hpp | 24 ------ capio/server/include/remote/backend.hpp | 4 +- capio/server/include/remote/backend/mpi.hpp | 1 + capio/server/include/remote/handlers/stat.hpp | 2 +- capio/server/include/remote/listener.hpp | 4 +- capio/server/include/remote/requests.hpp | 3 + capio/server/include/utils/common.hpp | 2 +- capio/server/include/utils/env.hpp | 4 +- capio/server/include/utils/location.hpp | 2 + capio/server/include/utils/signals.hpp | 9 +- capio/server/include/utils/types.hpp | 2 - .../client_handlers/access.cpp} | 5 +- .../client_handlers/clone.cpp} | 6 +- .../client_handlers/close.cpp} | 16 +++- .../dup.hpp => src/client_handlers/dup.cpp} | 4 +- .../exig.hpp => src/client_handlers/exig.cpp} | 12 ++- .../client_handlers/getdents.cpp} | 7 +- .../client_handlers/handshake.cpp} | 10 ++- .../client_handlers/mkdir.cpp} | 5 +- .../open.hpp => src/client_handlers/open.cpp} | 11 ++- .../read.hpp => src/client_handlers/read.cpp} | 6 +- .../client_handlers/rename.cpp} | 5 +- .../client_handlers/rmdir.cpp} | 6 +- .../seek.hpp => src/client_handlers/seek.cpp} | 22 ++--- .../stat.hpp => src/client_handlers/stat.cpp} | 20 ++--- .../client_handlers/unlink.cpp} | 7 +- .../client_handlers/write.cpp} | 8 +- capio/server/src/client_manager.cpp | 2 +- capio/server/src/client_request.cpp | 63 ++++++++++++++ 32 files changed, 253 insertions(+), 158 deletions(-) rename capio/server/include/{client-manager/client_manager.hpp => client/manager.hpp} (100%) create mode 100644 capio/server/include/client/request.hpp delete mode 100644 capio/server/include/handlers.hpp rename capio/server/{include/handlers/access.hpp => src/client_handlers/access.cpp} (75%) rename capio/server/{include/handlers/clone.hpp => src/client_handlers/clone.cpp} (72%) rename capio/server/{include/handlers/close.hpp => src/client_handlers/close.cpp} (83%) rename capio/server/{include/handlers/dup.hpp => src/client_handlers/dup.cpp} (74%) rename capio/server/{include/handlers/exig.hpp => src/client_handlers/exig.cpp} (79%) rename capio/server/{include/handlers/getdents.hpp => src/client_handlers/getdents.cpp} (96%) rename capio/server/{include/handlers/handshake.hpp => src/client_handlers/handshake.cpp} (58%) rename capio/server/{include/handlers/mkdir.hpp => src/client_handlers/mkdir.cpp} (74%) rename capio/server/{include/handlers/open.hpp => src/client_handlers/open.cpp} (90%) rename capio/server/{include/handlers/read.hpp => src/client_handlers/read.cpp} (97%) rename capio/server/{include/handlers/rename.hpp => src/client_handlers/rename.cpp} (89%) rename capio/server/{include/handlers/rmdir.hpp => src/client_handlers/rmdir.cpp} (80%) rename capio/server/{include/handlers/seek.hpp => src/client_handlers/seek.cpp} (68%) rename capio/server/{include/handlers/stat.hpp => src/client_handlers/stat.cpp} (87%) rename capio/server/{include/handlers/unlink.hpp => src/client_handlers/unlink.cpp} (80%) rename capio/server/{include/handlers/write.hpp => src/client_handlers/write.cpp} (84%) create mode 100644 capio/server/src/client_request.cpp diff --git a/capio/server/capio_server.cpp b/capio/server/capio_server.cpp index c0c29afa8..c0787941b 100644 --- a/capio/server/capio_server.cpp +++ b/capio/server/capio_server.cpp @@ -25,7 +25,8 @@ #include "capiocl/parser.h" #include "utils/capiocl_adapter.hpp" -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" +#include "client/request.hpp" #include "common/env.hpp" #include "common/logger.hpp" #include "common/requests.hpp" @@ -37,6 +38,7 @@ ClientManager *client_manager; StorageManager *storage_manager; +ClientRequestManager *request_manager; int n_servers; // name of the node @@ -49,7 +51,6 @@ CSClientsRemotePendingNFilesMap_t clients_remote_pending_nfiles; std::mutex nfiles_mutex; -#include "handlers.hpp" #include "utils/location.hpp" #include "utils/signals.hpp" @@ -63,66 +64,6 @@ std::mutex nfiles_mutex; capiocl::engine::Engine *capio_cl_engine; const capiocl::engine::Engine &CapioCLEngine::get() { return *capio_cl_engine; } -static constexpr std::array build_request_handlers_table() { - std::array _request_handlers{0}; - - _request_handlers[CAPIO_REQUEST_ACCESS] = access_handler; - _request_handlers[CAPIO_REQUEST_CLONE] = clone_handler; - _request_handlers[CAPIO_REQUEST_CLOSE] = close_handler; - _request_handlers[CAPIO_REQUEST_CREATE] = create_handler; - _request_handlers[CAPIO_REQUEST_CREATE_EXCLUSIVE] = create_exclusive_handler; - _request_handlers[CAPIO_REQUEST_DUP] = dup_handler; - _request_handlers[CAPIO_REQUEST_EXIT_GROUP] = exit_group_handler; - _request_handlers[CAPIO_REQUEST_FSTAT] = fstat_handler; - _request_handlers[CAPIO_REQUEST_GETDENTS] = getdents_handler; - _request_handlers[CAPIO_REQUEST_GETDENTS64] = getdents_handler; - _request_handlers[CAPIO_REQUEST_HANDSHAKE_NAMED] = handshake_named_handler; - _request_handlers[CAPIO_REQUEST_HANDSHAKE_ANONYMOUS] = handshake_anonymous_handler; - _request_handlers[CAPIO_REQUEST_MKDIR] = mkdir_handler; - _request_handlers[CAPIO_REQUEST_OPEN] = open_handler; - _request_handlers[CAPIO_REQUEST_READ] = read_handler; - _request_handlers[CAPIO_REQUEST_RENAME] = rename_handler; - _request_handlers[CAPIO_REQUEST_RMDIR] = rmdir_handler; - _request_handlers[CAPIO_REQUEST_SEEK] = lseek_handler; - _request_handlers[CAPIO_REQUEST_SEEK_DATA] = seek_data_handler; - _request_handlers[CAPIO_REQUEST_SEEK_END] = seek_end_handler; - _request_handlers[CAPIO_REQUEST_SEEK_HOLE] = seek_hole_handler; - _request_handlers[CAPIO_REQUEST_STAT] = stat_handler; - _request_handlers[CAPIO_REQUEST_UNLINK] = unlink_handler; - _request_handlers[CAPIO_REQUEST_WRITE] = write_handler; - - return _request_handlers; -} - -[[noreturn]] void capio_server(Semaphore &internal_server_sem) { - static const std::array request_handlers = - build_request_handlers_table(); - - START_LOG(gettid(), "call()"); - - MPI_Comm_size(MPI_COMM_WORLD, &n_servers); - setup_signal_handlers(); - backend->handshake_servers(); - - storage_manager->addDirectory(getpid(), get_capio_dir()); - - internal_server_sem.unlock(); - - auto str = std::unique_ptr(new char[CAPIO_REQ_MAX_SIZE]); - while (true) { - LOG(CAPIO_LOG_SERVER_REQUEST_START); - int code = client_manager->readNextRequest(str.get()); - if (code < 0 || code > CAPIO_NR_REQUESTS) { - std::cout << CAPIO_LOG_SERVER_CLI_LEVEL_ERROR << "Received invalid code: " << code - << std::endl; - - ERR_EXIT("Error: received invalid request code"); - } - request_handlers[code](str.get()); - LOG(CAPIO_LOG_SERVER_REQUEST_END); - } -} - int parseCLI(int argc, char **argv) { Logger *log; @@ -278,17 +219,17 @@ int parseCLI(int argc, char **argv) { } backend = select_backend(backend_name_str, argc, argv); - std::cout << CAPIO_LOG_SERVER_CLI_LEVEL_INFO << "server initialization completed!" << std::endl + std::cout << CAPIO_LOG_SERVER_CLI_LEVEL_INFO << "Completed parse of CLI args!" << std::endl << std::flush; return 0; } int main(int argc, char **argv) { - Semaphore internal_server_sem(0); - std::cout << CAPIO_LOG_SERVER_BANNER; + setup_signal_handlers(); + parseCLI(argc, argv); START_LOG(gettid(), "call()"); @@ -298,14 +239,21 @@ int main(int argc, char **argv) { shm_canary = new CapioShmCanary(capio_cl_engine->getWorkflowName()); storage_manager = new StorageManager(); client_manager = new ClientManager(); + request_manager = new ClientRequestManager(); + + backend->handshake_servers(); + storage_manager->addDirectory(getpid(), get_capio_dir()); - std::thread server_thread(capio_server, std::ref(internal_server_sem)); - LOG("capio_server thread started"); - std::thread remote_listener_thread(capio_remote_listener, std::ref(internal_server_sem)); + std::thread remote_listener_thread(capio_remote_listener); LOG("capio_remote_listener thread started."); - server_thread.join(); + + request_manager->start(); remote_listener_thread.join(); delete backend; + delete storage_manager; + delete client_manager; + delete request_manager; + return 0; } \ No newline at end of file diff --git a/capio/server/include/client-manager/client_manager.hpp b/capio/server/include/client/manager.hpp similarity index 100% rename from capio/server/include/client-manager/client_manager.hpp rename to capio/server/include/client/manager.hpp diff --git a/capio/server/include/client/request.hpp b/capio/server/include/client/request.hpp new file mode 100644 index 000000000..0d8a77a7f --- /dev/null +++ b/capio/server/include/client/request.hpp @@ -0,0 +1,53 @@ +#ifndef CAPIO_REQUEST_HPP +#define CAPIO_REQUEST_HPP +#include "common/requests.hpp" +#include "utils/types.hpp" + +class ClientRequestManager { + + typedef void (*CSHandler_t)(const char *const); + + struct ClientHandlers { + static void access_handler(const char *const str); + static void clone_handler(const char *const str); + static void close_handler(const char *const str); + static void create_handler(const char *const str); + static void create_exclusive_handler(const char *const str); + static void dup_handler(const char *const str); + static void exit_group_handler(const char *const str); + static void fstat_handler(const char *const str); + static void getdents_handler(const char *const str); + static void handshake_named_handler(const char *const str); + static void handshake_anonymous_handler(const char *const str); + static void mkdir_handler(const char *const str); + static void open_handler(const char *const str); + static void read_handler(const char *const str); + static void rename_handler(const char *const str); + static void rmdir_handler(const char *const str); + static void lseek_handler(const char *const str); + static void seek_data_handler(const char *const str); + static void seek_end_handler(const char *const str); + static void seek_hole_handler(const char *const str); + static void stat_handler(const char *const str); + static void unlink_handler(const char *const str); + static void write_handler(const char *const str); + }; + + struct ClientUtilities { + static void reply_stat(int tid, const std::filesystem::path &path); + static void handle_close(int tid, int fd); + static void handle_exit_group(int fd); + static void handle_seek_end(int tid, int fd); + + }; + + const std::array request_handlers; + + static constexpr std::array build_request_handlers_table(); + + public: + ClientRequestManager(); + void start() const; +}; + +#endif // CAPIO_REQUEST_HPP diff --git a/capio/server/include/handlers.hpp b/capio/server/include/handlers.hpp deleted file mode 100644 index 58ba56a23..000000000 --- a/capio/server/include/handlers.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef CAPIO_SERVER_HANDLERS_HPP -#define CAPIO_SERVER_HANDLERS_HPP - -// TODO: remove these headers from here and ensure all handlers are -// self-contained - -#include "handlers/access.hpp" -#include "handlers/clone.hpp" -#include "handlers/close.hpp" -#include "handlers/dup.hpp" -#include "handlers/exig.hpp" -#include "handlers/getdents.hpp" -#include "handlers/handshake.hpp" -#include "handlers/mkdir.hpp" -#include "handlers/open.hpp" -#include "handlers/read.hpp" -#include "handlers/rename.hpp" -#include "handlers/rmdir.hpp" -#include "handlers/seek.hpp" -#include "handlers/stat.hpp" -#include "handlers/unlink.hpp" -#include "handlers/write.hpp" - -#endif // CAPIO_SERVER_HANDLERS_HPP diff --git a/capio/server/include/remote/backend.hpp b/capio/server/include/remote/backend.hpp index 43ad8f5bb..4f52b5caa 100644 --- a/capio/server/include/remote/backend.hpp +++ b/capio/server/include/remote/backend.hpp @@ -1,7 +1,9 @@ #ifndef CAPIO_SERVER_REMOTE_BACKEND_HPP #define CAPIO_SERVER_REMOTE_BACKEND_HPP -#include "common/logger.hpp" #include +#include + +#include "common/logger.hpp" class RemoteRequest { private: diff --git a/capio/server/include/remote/backend/mpi.hpp b/capio/server/include/remote/backend/mpi.hpp index cda73bc91..ca7bae92a 100644 --- a/capio/server/include/remote/backend/mpi.hpp +++ b/capio/server/include/remote/backend/mpi.hpp @@ -38,6 +38,7 @@ class MPIBackend : public Backend { nodes.emplace(node_name); rank_nodes_equivalence[std::to_string(rank)] = node_name; rank_nodes_equivalence[node_name] = std::to_string(rank); + MPI_Comm_size(MPI_COMM_WORLD, &n_servers); } ~MPIBackend() override { diff --git a/capio/server/include/remote/handlers/stat.hpp b/capio/server/include/remote/handlers/stat.hpp index f9cc7b231..6a23fbad4 100644 --- a/capio/server/include/remote/handlers/stat.hpp +++ b/capio/server/include/remote/handlers/stat.hpp @@ -1,7 +1,7 @@ #ifndef CAPIO_SERVER_REMOTE_HANDLERS_STAT_HPP #define CAPIO_SERVER_REMOTE_HANDLERS_STAT_HPP -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" #include "remote/backend.hpp" #include "remote/requests.hpp" #include "storage/manager.hpp" diff --git a/capio/server/include/remote/listener.hpp b/capio/server/include/remote/listener.hpp index 90c908edd..3921631f0 100644 --- a/capio/server/include/remote/listener.hpp +++ b/capio/server/include/remote/listener.hpp @@ -56,14 +56,12 @@ inline Backend *select_backend(const std::string &backend_name, int argc, char * return new MPIBackend(argc, argv); } -[[noreturn]] void capio_remote_listener(Semaphore &internal_server_sem) { +[[noreturn]] void capio_remote_listener() { static const std::array server_request_handlers = build_server_request_handlers_table(); START_LOG(gettid(), "call()"); - internal_server_sem.lock(); - while (true) { auto request = backend->read_next_request(); diff --git a/capio/server/include/remote/requests.hpp b/capio/server/include/remote/requests.hpp index b7175cbd7..4e9bf6047 100644 --- a/capio/server/include/remote/requests.hpp +++ b/capio/server/include/remote/requests.hpp @@ -2,8 +2,11 @@ #define CAPIO_REMOTE_REQUESTS_HPP #include "storage/manager.hpp" +#include "common/requests.hpp" +#include "utils/location.hpp" extern StorageManager *storage_manager; +extern char *node_name; inline void serve_remote_stat_request(const std::filesystem::path &path, int source_tid, off64_t file_size, bool is_dir, const std::string &dest) { diff --git a/capio/server/include/utils/common.hpp b/capio/server/include/utils/common.hpp index f850b7122..5bb0755de 100644 --- a/capio/server/include/utils/common.hpp +++ b/capio/server/include/utils/common.hpp @@ -5,7 +5,7 @@ #include #include "capiocl_adapter.hpp" -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" #include "common/dirent.hpp" #include "storage/manager.hpp" #include "utils/capio_file.hpp" diff --git a/capio/server/include/utils/env.hpp b/capio/server/include/utils/env.hpp index ca41cb36d..acbc02805 100644 --- a/capio/server/include/utils/env.hpp +++ b/capio/server/include/utils/env.hpp @@ -5,7 +5,7 @@ #include "common/constants.hpp" -off64_t get_file_initial_size() { +inline off64_t get_file_initial_size() { START_LOG(gettid(), "call()"); static off64_t file_initial_size = 0; if (file_initial_size == 0) { @@ -21,7 +21,7 @@ off64_t get_file_initial_size() { return file_initial_size; } -off64_t get_prefetch_data_size() { +inline off64_t get_prefetch_data_size() { START_LOG(gettid(), "call()"); static off64_t prefetch_data_size = -1; if (prefetch_data_size == -1) { diff --git a/capio/server/include/utils/location.hpp b/capio/server/include/utils/location.hpp index c43489a7e..e7d771ebc 100644 --- a/capio/server/include/utils/location.hpp +++ b/capio/server/include/utils/location.hpp @@ -5,7 +5,9 @@ #include #include "utils/types.hpp" +#include "remote/backend.hpp" +extern Backend *backend; extern char *node_name; constexpr char CAPIO_SERVER_FILES_LOCATION_NAME[] = "files_location_%s.txt"; diff --git a/capio/server/include/utils/signals.hpp b/capio/server/include/utils/signals.hpp index 4919b04fb..3d436c006 100644 --- a/capio/server/include/utils/signals.hpp +++ b/capio/server/include/utils/signals.hpp @@ -4,12 +4,17 @@ #include #include "remote/backend.hpp" +#include "client/manager.hpp" +#include "client/request.hpp" + +extern ClientManager *client_manager; +extern StorageManager *storage_manager; #ifdef CAPIO_COVERAGE extern "C" void __gcov_dump(void); #endif -void sig_term_handler(int signum, siginfo_t *info, void *ptr) { +inline void sig_term_handler(int signum, siginfo_t *info, void *ptr) { START_LOG(gettid(), "call(signal=[%d] (%s) from process with pid=%ld)", signum, strsignal(signum), info != nullptr ? info->si_pid : -1); @@ -41,7 +46,7 @@ void sig_term_handler(int signum, siginfo_t *info, void *ptr) { exit(EXIT_SUCCESS); } -void setup_signal_handlers() { +inline void setup_signal_handlers() { START_LOG(gettid(), "call()"); static struct sigaction sigact; memset(&sigact, 0, sizeof(sigact)); diff --git a/capio/server/include/utils/types.hpp b/capio/server/include/utils/types.hpp index c9f815e31..ff5b9d35d 100644 --- a/capio/server/include/utils/types.hpp +++ b/capio/server/include/utils/types.hpp @@ -16,6 +16,4 @@ typedef std::unordered_map *, Semaphore *>>> CSClientsRemotePendingNFilesMap_t; -typedef void (*CSHandler_t)(const char *const); - #endif // CAPIO_SERVER_UTILS_TYPES_HPP diff --git a/capio/server/include/handlers/access.hpp b/capio/server/src/client_handlers/access.cpp similarity index 75% rename from capio/server/include/handlers/access.hpp rename to capio/server/src/client_handlers/access.cpp index b00c8f702..eff97e0b1 100644 --- a/capio/server/include/handlers/access.hpp +++ b/capio/server/src/client_handlers/access.cpp @@ -1,11 +1,14 @@ #ifndef CAPIO_SERVER_HANDLERS_ACCESS_HPP #define CAPIO_SERVER_HANDLERS_ACCESS_HPP +#include "client/manager.hpp" +#include "client/request.hpp" +#include "utils/capiocl_adapter.hpp" #include "utils/location.hpp" extern ClientManager *client_manager; -void access_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::access_handler(const char *const str) { START_LOG(gettid(), "call(str=%s)", str); long tid; char path[PATH_MAX]; diff --git a/capio/server/include/handlers/clone.hpp b/capio/server/src/client_handlers/clone.cpp similarity index 72% rename from capio/server/include/handlers/clone.hpp rename to capio/server/src/client_handlers/clone.cpp index 1975e78ff..c95973790 100644 --- a/capio/server/include/handlers/clone.hpp +++ b/capio/server/src/client_handlers/clone.cpp @@ -1,9 +1,13 @@ #ifndef CAPIO_SERVER_HANDLERS_CLONE_HPP #define CAPIO_SERVER_HANDLERS_CLONE_HPP +#include "client/manager.hpp" +#include "client/request.hpp" #include "storage/manager.hpp" +extern ClientManager *client_manager; extern StorageManager *storage_manager; -void clone_handler(const char *const str) { + +void ClientRequestManager::ClientHandlers::clone_handler(const char *const str) { pid_t parent_tid, child_tid; sscanf(str, "%d %d", &parent_tid, &child_tid); START_LOG(gettid(), "call(parent_tid=%d, child_tid=%d)", parent_tid, child_tid); diff --git a/capio/server/include/handlers/close.hpp b/capio/server/src/client_handlers/close.cpp similarity index 83% rename from capio/server/include/handlers/close.hpp rename to capio/server/src/client_handlers/close.cpp index b3478fd5d..a96bee35d 100644 --- a/capio/server/include/handlers/close.hpp +++ b/capio/server/src/client_handlers/close.cpp @@ -1,10 +1,18 @@ #ifndef CAPIO_SERVER_HANDLERS_CLOSE_HPP #define CAPIO_SERVER_HANDLERS_CLOSE_HPP -#include "read.hpp" +#include "client/request.hpp" +#include "storage/manager.hpp" +#include "utils/capiocl_adapter.hpp" +#include "utils/location.hpp" extern StorageManager *storage_manager; +// TODO: refactor and remove the n_files code +extern std::mutex nfiles_mutex; +extern CSFilesSentMap_t files_sent; +extern CSClientsRemotePendingNFilesMap_t clients_remote_pending_nfiles; + inline void handle_pending_remote_nfiles(const std::filesystem::path &path) { START_LOG(gettid(), "call(%s)", path.c_str()); @@ -37,7 +45,7 @@ inline void handle_pending_remote_nfiles(const std::filesystem::path &path) { } } -inline void handle_close(int tid, int fd) { +void ClientRequestManager::ClientUtilities::handle_close(int tid, int fd) { START_LOG(gettid(), "call(tid=%d, fd=%d)", tid, fd); const std::filesystem::path path = storage_manager->getPath(tid, fd); @@ -65,10 +73,10 @@ inline void handle_close(int tid, int fd) { storage_manager->removeFromTid(tid, fd); } -void close_handler(const char *str) { +void ClientRequestManager::ClientHandlers::close_handler(const char *str) { int tid, fd; sscanf(str, "%d %d", &tid, &fd); - handle_close(tid, fd); + ClientUtilities::handle_close(tid, fd); } #endif // CAPIO_SERVER_HANDLERS_CLOSE_HPP diff --git a/capio/server/include/handlers/dup.hpp b/capio/server/src/client_handlers/dup.cpp similarity index 74% rename from capio/server/include/handlers/dup.hpp rename to capio/server/src/client_handlers/dup.cpp index f4fac5a9b..1fcdfa999 100644 --- a/capio/server/include/handlers/dup.hpp +++ b/capio/server/src/client_handlers/dup.cpp @@ -1,9 +1,11 @@ #ifndef CAPIO_SERVER_HANDLERS_DUP_HPP #define CAPIO_SERVER_HANDLERS_DUP_HPP +#include "client/request.hpp" +#include "storage/manager.hpp" extern StorageManager *storage_manager; -void dup_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::dup_handler(const char *const str) { int tid, old_fd, new_fd; sscanf(str, "%d %d %d", &tid, &old_fd, &new_fd); START_LOG(gettid(), "call(tid=%d, old_fd=%d, new_fd=%d)", tid, old_fd, new_fd); diff --git a/capio/server/include/handlers/exig.hpp b/capio/server/src/client_handlers/exig.cpp similarity index 79% rename from capio/server/include/handlers/exig.hpp rename to capio/server/src/client_handlers/exig.cpp index c41cc0ffd..927bd3716 100644 --- a/capio/server/include/handlers/exig.hpp +++ b/capio/server/src/client_handlers/exig.cpp @@ -1,10 +1,14 @@ #ifndef CAPIO_SERVER_HANDLERS_EXITG_HPP #define CAPIO_SERVER_HANDLERS_EXITG_HPP - +#include "client/manager.hpp" +#include "client/request.hpp" #include "storage/manager.hpp" +#include "utils/capiocl_adapter.hpp" + +extern ClientManager *client_manager; extern StorageManager *storage_manager; -inline void handle_exit_group(int tid) { +void ClientRequestManager::ClientUtilities::handle_exit_group(int tid) { START_LOG(gettid(), "call(tid=%d)", tid); LOG("retrieving files from writers for process with pid = %d", tid); @@ -36,10 +40,10 @@ inline void handle_exit_group(int tid) { client_manager->removeClient(tid); } -void exit_group_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::exit_group_handler(const char *const str) { int tid; sscanf(str, "%d", &tid); - handle_exit_group(tid); + ClientUtilities::handle_exit_group(tid); } #endif // CAPIO_SERVER_HANDLERS_EXITG_HPP diff --git a/capio/server/include/handlers/getdents.hpp b/capio/server/src/client_handlers/getdents.cpp similarity index 96% rename from capio/server/include/handlers/getdents.hpp rename to capio/server/src/client_handlers/getdents.cpp index 797943802..cd513834f 100644 --- a/capio/server/include/handlers/getdents.hpp +++ b/capio/server/src/client_handlers/getdents.cpp @@ -3,10 +3,11 @@ #include +#include "client/manager.hpp" +#include "client/request.hpp" #include "posix/utils/env.hpp" - -#include "remote/backend.hpp" #include "remote/requests.hpp" +#include "utils/common.hpp" #include "utils/location.hpp" extern StorageManager *storage_manager; @@ -96,7 +97,7 @@ inline void handle_getdents(int tid, int fd, long int count) { } } -void getdents_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::getdents_handler(const char *const str) { int tid, fd; off64_t count; sscanf(str, "%d %d %ld", &tid, &fd, &count); diff --git a/capio/server/include/handlers/handshake.hpp b/capio/server/src/client_handlers/handshake.cpp similarity index 58% rename from capio/server/include/handlers/handshake.hpp rename to capio/server/src/client_handlers/handshake.cpp index 44ab913ce..38e50bcd0 100644 --- a/capio/server/include/handlers/handshake.hpp +++ b/capio/server/src/client_handlers/handshake.cpp @@ -1,14 +1,18 @@ #ifndef CAPIO_SERVER_HANDLERS_HANDSHAKE_HPP #define CAPIO_SERVER_HANDLERS_HANDSHAKE_HPP -#include "clone.hpp" +#include -void handshake_anonymous_handler(const char *const str) { +#include "client/manager.hpp" +#include "client/request.hpp" + +extern ClientManager *client_manager; +void ClientRequestManager::ClientHandlers::handshake_anonymous_handler(const char *const str) { int tid, pid; sscanf(str, "%d %d", &tid, &pid); client_manager->registerClient(tid); } -void handshake_named_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::handshake_named_handler(const char *const str) { int tid, pid, wait; char app_name[1024]; sscanf(str, "%d %d %s %d", &tid, &pid, app_name, &wait); diff --git a/capio/server/include/handlers/mkdir.hpp b/capio/server/src/client_handlers/mkdir.cpp similarity index 74% rename from capio/server/include/handlers/mkdir.hpp rename to capio/server/src/client_handlers/mkdir.cpp index f3eca5c73..13eb70a04 100644 --- a/capio/server/include/handlers/mkdir.hpp +++ b/capio/server/src/client_handlers/mkdir.cpp @@ -1,13 +1,14 @@ #ifndef CAPIO_SERVER_HANDLERS_MKDIR_HPP #define CAPIO_SERVER_HANDLERS_MKDIR_HPP -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" +#include "client/request.hpp" #include "storage/manager.hpp" extern ClientManager *client_manager; extern StorageManager *storage_manager; -void mkdir_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::mkdir_handler(const char *const str) { pid_t tid; char pathname[PATH_MAX]; sscanf(str, "%d %s", &tid, pathname); diff --git a/capio/server/include/handlers/open.hpp b/capio/server/src/client_handlers/open.cpp similarity index 90% rename from capio/server/include/handlers/open.hpp rename to capio/server/src/client_handlers/open.cpp index a6c6a6896..80790273b 100644 --- a/capio/server/include/handlers/open.hpp +++ b/capio/server/src/client_handlers/open.cpp @@ -1,6 +1,11 @@ #ifndef CAPIO_SERVER_HANDLERS_OPEN_HPP #define CAPIO_SERVER_HANDLERS_OPEN_HPP +#include "client/manager.hpp" +#include "client/request.hpp" +#include "storage/manager.hpp" +#include "utils/capiocl_adapter.hpp" +#include "utils/env.hpp" #include "utils/location.hpp" extern ClientManager *client_manager; @@ -68,7 +73,7 @@ inline void handle_open(int tid, int fd, const std::filesystem::path &path) { } } -void create_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::create_handler(const char *const str) { int tid, fd; char path[PATH_MAX]; sscanf(str, "%d %d %s", &tid, &fd, path); @@ -79,7 +84,7 @@ void create_handler(const char *const str) { handle_create(tid, fd, path); } -void create_exclusive_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::create_exclusive_handler(const char *const str) { int tid, fd; char path[PATH_MAX]; sscanf(str, "%d %d %s", &tid, &fd, path); @@ -90,7 +95,7 @@ void create_exclusive_handler(const char *const str) { handle_create_exclusive(tid, fd, path); } -void open_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::open_handler(const char *const str) { int tid, fd; char path[PATH_MAX]; sscanf(str, "%d %d %s", &tid, &fd, path); diff --git a/capio/server/include/handlers/read.hpp b/capio/server/src/client_handlers/read.cpp similarity index 97% rename from capio/server/include/handlers/read.hpp rename to capio/server/src/client_handlers/read.cpp index e1944d200..24b8a639b 100644 --- a/capio/server/include/handlers/read.hpp +++ b/capio/server/src/client_handlers/read.cpp @@ -4,9 +4,11 @@ #include #include +#include "client/manager.hpp" +#include "client/request.hpp" #include "remote/backend.hpp" #include "remote/requests.hpp" - +#include "utils/capiocl_adapter.hpp" #include "utils/location.hpp" std::mutex local_read_mutex; @@ -182,7 +184,7 @@ inline void handle_read(int tid, int fd, off64_t count) { } } -void read_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::read_handler(const char *const str) { int tid, fd; off64_t count; sscanf(str, "%d %d %ld", &tid, &fd, &count); diff --git a/capio/server/include/handlers/rename.hpp b/capio/server/src/client_handlers/rename.cpp similarity index 89% rename from capio/server/include/handlers/rename.hpp rename to capio/server/src/client_handlers/rename.cpp index 2cb4238c5..7d449d1ad 100644 --- a/capio/server/include/handlers/rename.hpp +++ b/capio/server/src/client_handlers/rename.cpp @@ -1,6 +1,7 @@ #ifndef CAPIO_SERVER_HANDLERS_RENAME_HPP #define CAPIO_SERVER_HANDLERS_RENAME_HPP -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" +#include "client/request.hpp" #include "storage/manager.hpp" #include "utils/location.hpp" @@ -26,7 +27,7 @@ void handle_rename(int tid, const std::filesystem::path &oldpath, } } -void rename_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::rename_handler(const char *const str) { char oldpath[PATH_MAX]; char newpath[PATH_MAX]; int tid; diff --git a/capio/server/include/handlers/rmdir.hpp b/capio/server/src/client_handlers/rmdir.cpp similarity index 80% rename from capio/server/include/handlers/rmdir.hpp rename to capio/server/src/client_handlers/rmdir.cpp index 917aff207..b8bbdaea1 100644 --- a/capio/server/include/handlers/rmdir.hpp +++ b/capio/server/src/client_handlers/rmdir.cpp @@ -1,13 +1,15 @@ #ifndef CAPIO_SERVER_HANDLERS_RMDIR_HPP #define CAPIO_SERVER_HANDLERS_RMDIR_HPP -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" +#include "client/request.hpp" #include "storage/manager.hpp" +#include "utils/capiocl_adapter.hpp" #include "utils/location.hpp" extern ClientManager *client_manager; extern StorageManager *storage_manager; -void rmdir_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::rmdir_handler(const char *const str) { char dir_to_remove[PATH_MAX]; int tid; sscanf(str, "%s %d", dir_to_remove, &tid); diff --git a/capio/server/include/handlers/seek.hpp b/capio/server/src/client_handlers/seek.cpp similarity index 68% rename from capio/server/include/handlers/seek.hpp rename to capio/server/src/client_handlers/seek.cpp index 9335d44a5..f7789088a 100644 --- a/capio/server/include/handlers/seek.hpp +++ b/capio/server/src/client_handlers/seek.cpp @@ -1,14 +1,14 @@ #ifndef CAPIO_SERVER_HANDLERS_SEEK_HPP #define CAPIO_SERVER_HANDLERS_SEEK_HPP -#include "client-manager/client_manager.hpp" -#include "stat.hpp" +#include "client/manager.hpp" +#include "client/request.hpp" #include "storage/manager.hpp" extern ClientManager *client_manager; extern StorageManager *storage_manager; -inline void handle_lseek(int tid, int fd, off64_t offset) { +void handle_lseek(int tid, int fd, off64_t offset) { START_LOG(gettid(), "call(tid=%d, fd=%d, offset=%ld)", tid, fd, offset); storage_manager->setFileOffset(tid, fd, offset); @@ -24,14 +24,14 @@ void handle_seek_data(int tid, int fd, off64_t offset) { client_manager->replyToClient(tid, offset); } -inline void handle_seek_end(int tid, int fd) { +void ClientRequestManager::ClientUtilities::handle_seek_end(int tid, int fd) { START_LOG(gettid(), "call(tid=%d, fd=%d)", tid, fd); // seek_end here behaves as stat because we want the file size - reply_stat(tid, storage_manager->getPath(tid, fd)); + ClientRequestManager::ClientUtilities::reply_stat(tid, storage_manager->getPath(tid, fd)); } -inline void handle_seek_hole(int tid, int fd, off64_t offset) { +void handle_seek_hole(int tid, int fd, off64_t offset) { START_LOG(gettid(), "call(tid=%d, fd=%d, offset=%ld)", tid, fd, offset); CapioFile &c_file = storage_manager->get(tid, fd); @@ -40,27 +40,27 @@ inline void handle_seek_hole(int tid, int fd, off64_t offset) { client_manager->replyToClient(tid, offset); } -void lseek_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::lseek_handler(const char *const str) { int tid, fd; off64_t offset; sscanf(str, "%d %d %ld", &tid, &fd, &offset); handle_lseek(tid, fd, offset); } -void seek_data_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::seek_data_handler(const char *const str) { int tid, fd; off64_t offset; sscanf(str, "%d %d %ld", &tid, &fd, &offset); handle_seek_data(tid, fd, offset); } -void seek_end_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::seek_end_handler(const char *const str) { int tid, fd; sscanf(str, "%d %d", &tid, &fd); - handle_seek_end(tid, fd); + ClientUtilities::handle_seek_end(tid, fd); } -void seek_hole_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::seek_hole_handler(const char *const str) { int tid, fd; off64_t offset; sscanf(str, "%d %d %ld", &tid, &fd, &offset); diff --git a/capio/server/include/handlers/stat.hpp b/capio/server/src/client_handlers/stat.cpp similarity index 87% rename from capio/server/include/handlers/stat.hpp rename to capio/server/src/client_handlers/stat.cpp index e4fb06cf5..1f615922d 100644 --- a/capio/server/include/handlers/stat.hpp +++ b/capio/server/src/client_handlers/stat.cpp @@ -4,16 +4,16 @@ #include #include +#include "client/manager.hpp" +#include "client/request.hpp" #include "remote/backend.hpp" - #include "remote/requests.hpp" - +#include "storage/manager.hpp" +#include "utils/capiocl_adapter.hpp" +#include "utils/env.hpp" #include "utils/location.hpp" #include "utils/types.hpp" -#include "client-manager/client_manager.hpp" -#include "storage/manager.hpp" - extern StorageManager *storage_manager; extern ClientManager *client_manager; @@ -36,7 +36,7 @@ void wait_for_file_completion(int tid, const std::filesystem::path &path) { } } -inline void reply_stat(int tid, const std::filesystem::path &path) { +void ClientRequestManager::ClientUtilities::reply_stat(int tid, const std::filesystem::path &path) { START_LOG(gettid(), "call(tid=%d, path=%s)", tid, path.c_str()); auto file_location_opt = get_file_location_opt(path); @@ -85,14 +85,14 @@ inline void reply_stat(int tid, const std::filesystem::path &path) { } } -void fstat_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::fstat_handler(const char *const str) { int tid, fd; sscanf(str, "%d %d", &tid, &fd); - reply_stat(tid, storage_manager->getPath(tid, fd)); + ClientUtilities::reply_stat(tid, storage_manager->getPath(tid, fd)); } -void stat_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::stat_handler(const char *const str) { char path[2048]; int tid; sscanf(str, "%d %s", &tid, path); @@ -100,7 +100,7 @@ void stat_handler(const char *const str) { client_manager->replyToClient(tid, CAPIO_POSIX_SYSCALL_REQUEST_SKIP); return; } - reply_stat(tid, path); + ClientUtilities::reply_stat(tid, path); } #endif // CAPIO_SERVER_HANDLERS_STAT_HPP diff --git a/capio/server/include/handlers/unlink.hpp b/capio/server/src/client_handlers/unlink.cpp similarity index 80% rename from capio/server/include/handlers/unlink.hpp rename to capio/server/src/client_handlers/unlink.cpp index 22b670001..109f06050 100644 --- a/capio/server/include/handlers/unlink.hpp +++ b/capio/server/src/client_handlers/unlink.cpp @@ -1,12 +1,15 @@ #ifndef CAPIO_SERVER_HANDLERS_UNLINK_HPP #define CAPIO_SERVER_HANDLERS_UNLINK_HPP -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" +#include "client/request.hpp" #include "storage/manager.hpp" +#include "utils/capiocl_adapter.hpp" +#include "utils/location.hpp" extern StorageManager *storage_manager; extern ClientManager *client_manager; -void unlink_handler(const char *const str) { +void ClientRequestManager::ClientHandlers::unlink_handler(const char *const str) { char path[PATH_MAX]; int tid; sscanf(str, "%d %s", &tid, path); diff --git a/capio/server/include/handlers/write.hpp b/capio/server/src/client_handlers/write.cpp similarity index 84% rename from capio/server/include/handlers/write.hpp rename to capio/server/src/client_handlers/write.cpp index b9233ccd2..81009b4b8 100644 --- a/capio/server/include/handlers/write.hpp +++ b/capio/server/src/client_handlers/write.cpp @@ -1,9 +1,15 @@ #ifndef CAPIO_SERVER_HANDLERS_WRITE_HPP #define CAPIO_SERVER_HANDLERS_WRITE_HPP +#include "client/manager.hpp" +#include "client/request.hpp" +#include "storage/manager.hpp" #include "utils/location.hpp" -void write_handler(const char *const str) { +extern StorageManager *storage_manager; +extern ClientManager *client_manager; + +void ClientRequestManager::ClientHandlers::write_handler(const char *const str) { std::string request; int tid, fd; off64_t count; diff --git a/capio/server/src/client_manager.cpp b/capio/server/src/client_manager.cpp index aef6d9538..e5262cf0f 100644 --- a/capio/server/src/client_manager.cpp +++ b/capio/server/src/client_manager.cpp @@ -2,7 +2,7 @@ #include "utils/capiocl_adapter.hpp" -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" #include "common/constants.hpp" #include "common/queue.hpp" #include "utils/capiocl_adapter.hpp" diff --git a/capio/server/src/client_request.cpp b/capio/server/src/client_request.cpp new file mode 100644 index 000000000..d31e4abf7 --- /dev/null +++ b/capio/server/src/client_request.cpp @@ -0,0 +1,63 @@ +#include "client/manager.hpp" +#include "client/request.hpp" +#include "storage/manager.hpp" +#include "utils/common.hpp" +#include "utils/signals.hpp" + +extern ClientManager *client_manager; +extern StorageManager *storage_manager; + +constexpr std::array +ClientRequestManager::build_request_handlers_table() { + std::array _request_handlers{0}; + + _request_handlers[CAPIO_REQUEST_ACCESS] = ClientHandlers::access_handler; + _request_handlers[CAPIO_REQUEST_CLONE] = ClientHandlers::clone_handler; + _request_handlers[CAPIO_REQUEST_CLOSE] = ClientHandlers::close_handler; + _request_handlers[CAPIO_REQUEST_CREATE] = ClientHandlers::create_handler; + _request_handlers[CAPIO_REQUEST_CREATE_EXCLUSIVE] = ClientHandlers::create_exclusive_handler; + _request_handlers[CAPIO_REQUEST_DUP] = ClientHandlers::dup_handler; + _request_handlers[CAPIO_REQUEST_EXIT_GROUP] = ClientHandlers::exit_group_handler; + _request_handlers[CAPIO_REQUEST_FSTAT] = ClientHandlers::fstat_handler; + _request_handlers[CAPIO_REQUEST_GETDENTS] = ClientHandlers::getdents_handler; + _request_handlers[CAPIO_REQUEST_GETDENTS64] = ClientHandlers::getdents_handler; + _request_handlers[CAPIO_REQUEST_HANDSHAKE_NAMED] = ClientHandlers::handshake_named_handler; + _request_handlers[CAPIO_REQUEST_HANDSHAKE_ANONYMOUS] = ClientHandlers::handshake_anonymous_handler; + _request_handlers[CAPIO_REQUEST_MKDIR] = ClientHandlers::mkdir_handler; + _request_handlers[CAPIO_REQUEST_OPEN] = ClientHandlers::open_handler; + _request_handlers[CAPIO_REQUEST_READ] = ClientHandlers::read_handler; + _request_handlers[CAPIO_REQUEST_RENAME] = ClientHandlers::rename_handler; + _request_handlers[CAPIO_REQUEST_RMDIR] = ClientHandlers::rmdir_handler; + _request_handlers[CAPIO_REQUEST_SEEK] = ClientHandlers::lseek_handler; + _request_handlers[CAPIO_REQUEST_SEEK_DATA] = ClientHandlers::seek_data_handler; + _request_handlers[CAPIO_REQUEST_SEEK_END] = ClientHandlers::seek_end_handler; + _request_handlers[CAPIO_REQUEST_SEEK_HOLE] = ClientHandlers::seek_hole_handler; + _request_handlers[CAPIO_REQUEST_STAT] = ClientHandlers::stat_handler; + _request_handlers[CAPIO_REQUEST_UNLINK] = ClientHandlers::unlink_handler; + _request_handlers[CAPIO_REQUEST_WRITE] = ClientHandlers::write_handler; + + return _request_handlers; +} + +ClientRequestManager::ClientRequestManager() : request_handlers(build_request_handlers_table()) { + server_println(CAPIO_LOG_SERVER_CLI_LEVEL_INFO, "ClientRequestManager initialized correctly."); +} + +void ClientRequestManager::start() const { + + START_LOG(gettid(), "call()"); + + const auto str = std::unique_ptr(new char[CAPIO_REQ_MAX_SIZE]); + while (true) { + LOG(CAPIO_LOG_SERVER_REQUEST_START); + const int code = client_manager->readNextRequest(str.get()); + if (code < 0 || code > CAPIO_NR_REQUESTS) { + std::cout << CAPIO_LOG_SERVER_CLI_LEVEL_ERROR << "Received invalid code: " << code + << std::endl; + + ERR_EXIT("Error: received invalid request code"); + } + request_handlers[code](str.get()); + LOG(CAPIO_LOG_SERVER_REQUEST_END); + } +} \ No newline at end of file From 2b65f34e867f61f5235bb18c03c23e2396e610b8 Mon Sep 17 00:00:00 2001 From: = <=> Date: Mon, 16 Feb 2026 13:30:15 +0100 Subject: [PATCH 3/4] Removed unused anonymus handler and cleanup of structs --- capio/common/requests.hpp | 25 +++++----- capio/posix/utils/requests.hpp | 7 --- capio/server/include/client/request.hpp | 11 +++-- capio/server/src/client_handlers/access.cpp | 2 +- capio/server/src/client_handlers/clone.cpp | 2 +- capio/server/src/client_handlers/close.cpp | 2 +- capio/server/src/client_handlers/dup.cpp | 2 +- capio/server/src/client_handlers/exig.cpp | 2 +- capio/server/src/client_handlers/getdents.cpp | 2 +- .../server/src/client_handlers/handshake.cpp | 7 +-- capio/server/src/client_handlers/mkdir.cpp | 2 +- capio/server/src/client_handlers/open.cpp | 6 +-- capio/server/src/client_handlers/read.cpp | 2 +- capio/server/src/client_handlers/rename.cpp | 2 +- capio/server/src/client_handlers/rmdir.cpp | 2 +- capio/server/src/client_handlers/seek.cpp | 8 ++-- capio/server/src/client_handlers/stat.cpp | 4 +- capio/server/src/client_handlers/unlink.cpp | 2 +- capio/server/src/client_handlers/write.cpp | 2 +- capio/server/src/client_request.cpp | 47 +++++++++---------- 20 files changed, 63 insertions(+), 76 deletions(-) diff --git a/capio/common/requests.hpp b/capio/common/requests.hpp index 533a68178..1d562ba68 100644 --- a/capio/common/requests.hpp +++ b/capio/common/requests.hpp @@ -12,19 +12,18 @@ constexpr const int CAPIO_REQUEST_FSTAT = 7; constexpr const int CAPIO_REQUEST_GETDENTS = 8; constexpr const int CAPIO_REQUEST_GETDENTS64 = 9; constexpr const int CAPIO_REQUEST_HANDSHAKE_NAMED = 10; -constexpr const int CAPIO_REQUEST_HANDSHAKE_ANONYMOUS = 11; -constexpr const int CAPIO_REQUEST_MKDIR = 12; -constexpr const int CAPIO_REQUEST_OPEN = 13; -constexpr const int CAPIO_REQUEST_READ = 14; -constexpr const int CAPIO_REQUEST_RENAME = 15; -constexpr const int CAPIO_REQUEST_SEEK = 16; -constexpr const int CAPIO_REQUEST_SEEK_DATA = 17; -constexpr const int CAPIO_REQUEST_SEEK_END = 18; -constexpr const int CAPIO_REQUEST_SEEK_HOLE = 19; -constexpr const int CAPIO_REQUEST_STAT = 20; -constexpr const int CAPIO_REQUEST_UNLINK = 21; -constexpr const int CAPIO_REQUEST_WRITE = 22; -constexpr const int CAPIO_REQUEST_RMDIR = 23; +constexpr const int CAPIO_REQUEST_MKDIR = 11; +constexpr const int CAPIO_REQUEST_OPEN = 12; +constexpr const int CAPIO_REQUEST_READ = 13; +constexpr const int CAPIO_REQUEST_RENAME = 14; +constexpr const int CAPIO_REQUEST_SEEK = 15; +constexpr const int CAPIO_REQUEST_SEEK_DATA = 16; +constexpr const int CAPIO_REQUEST_SEEK_END = 17; +constexpr const int CAPIO_REQUEST_SEEK_HOLE = 18; +constexpr const int CAPIO_REQUEST_STAT = 19; +constexpr const int CAPIO_REQUEST_UNLINK = 20; +constexpr const int CAPIO_REQUEST_WRITE = 21; +constexpr const int CAPIO_REQUEST_RMDIR = 22; constexpr const int CAPIO_NR_REQUESTS = 24; diff --git a/capio/posix/utils/requests.hpp b/capio/posix/utils/requests.hpp index 4867e6117..c325a8de8 100644 --- a/capio/posix/utils/requests.hpp +++ b/capio/posix/utils/requests.hpp @@ -105,13 +105,6 @@ inline off64_t getdents_request(const int fd, const off64_t count, bool is64bit, return res; } -inline void handshake_anonymous_request(const long tid, const long pid) { - START_LOG(capio_syscall(SYS_gettid), "call(tid=%ld, pid=%ld)", tid, pid); - char req[CAPIO_REQ_MAX_SIZE]; - sprintf(req, "%04d %ld %ld", CAPIO_REQUEST_HANDSHAKE_ANONYMOUS, tid, pid); - buf_requests->write(req, CAPIO_REQ_MAX_SIZE); -} - inline void handshake_named_request(const long tid, const long pid, const std::string &app_name, const bool wait = false) { START_LOG(capio_syscall(SYS_gettid), "call(tid=%ld, pid=%ld, app_name=%s)", tid, pid, diff --git a/capio/server/include/client/request.hpp b/capio/server/include/client/request.hpp index 0d8a77a7f..d891b72f4 100644 --- a/capio/server/include/client/request.hpp +++ b/capio/server/include/client/request.hpp @@ -7,18 +7,15 @@ class ClientRequestManager { typedef void (*CSHandler_t)(const char *const); - struct ClientHandlers { + struct MemHandlers { static void access_handler(const char *const str); static void clone_handler(const char *const str); static void close_handler(const char *const str); static void create_handler(const char *const str); static void create_exclusive_handler(const char *const str); static void dup_handler(const char *const str); - static void exit_group_handler(const char *const str); static void fstat_handler(const char *const str); static void getdents_handler(const char *const str); - static void handshake_named_handler(const char *const str); - static void handshake_anonymous_handler(const char *const str); static void mkdir_handler(const char *const str); static void open_handler(const char *const str); static void read_handler(const char *const str); @@ -33,12 +30,16 @@ class ClientRequestManager { static void write_handler(const char *const str); }; + struct Handlers { + static void handshake_named_handler(const char *const str); + static void exit_group_handler(const char *const str); + }; + struct ClientUtilities { static void reply_stat(int tid, const std::filesystem::path &path); static void handle_close(int tid, int fd); static void handle_exit_group(int fd); static void handle_seek_end(int tid, int fd); - }; const std::array request_handlers; diff --git a/capio/server/src/client_handlers/access.cpp b/capio/server/src/client_handlers/access.cpp index eff97e0b1..67e4a4614 100644 --- a/capio/server/src/client_handlers/access.cpp +++ b/capio/server/src/client_handlers/access.cpp @@ -8,7 +8,7 @@ extern ClientManager *client_manager; -void ClientRequestManager::ClientHandlers::access_handler(const char *const str) { +void ClientRequestManager::MemHandlers::access_handler(const char *const str) { START_LOG(gettid(), "call(str=%s)", str); long tid; char path[PATH_MAX]; diff --git a/capio/server/src/client_handlers/clone.cpp b/capio/server/src/client_handlers/clone.cpp index c95973790..5b9b62a7a 100644 --- a/capio/server/src/client_handlers/clone.cpp +++ b/capio/server/src/client_handlers/clone.cpp @@ -7,7 +7,7 @@ extern ClientManager *client_manager; extern StorageManager *storage_manager; -void ClientRequestManager::ClientHandlers::clone_handler(const char *const str) { +void ClientRequestManager::MemHandlers::clone_handler(const char *const str) { pid_t parent_tid, child_tid; sscanf(str, "%d %d", &parent_tid, &child_tid); START_LOG(gettid(), "call(parent_tid=%d, child_tid=%d)", parent_tid, child_tid); diff --git a/capio/server/src/client_handlers/close.cpp b/capio/server/src/client_handlers/close.cpp index a96bee35d..cf56b8c04 100644 --- a/capio/server/src/client_handlers/close.cpp +++ b/capio/server/src/client_handlers/close.cpp @@ -73,7 +73,7 @@ void ClientRequestManager::ClientUtilities::handle_close(int tid, int fd) { storage_manager->removeFromTid(tid, fd); } -void ClientRequestManager::ClientHandlers::close_handler(const char *str) { +void ClientRequestManager::MemHandlers::close_handler(const char *str) { int tid, fd; sscanf(str, "%d %d", &tid, &fd); ClientUtilities::handle_close(tid, fd); diff --git a/capio/server/src/client_handlers/dup.cpp b/capio/server/src/client_handlers/dup.cpp index 1fcdfa999..8b4df0476 100644 --- a/capio/server/src/client_handlers/dup.cpp +++ b/capio/server/src/client_handlers/dup.cpp @@ -5,7 +5,7 @@ extern StorageManager *storage_manager; -void ClientRequestManager::ClientHandlers::dup_handler(const char *const str) { +void ClientRequestManager::MemHandlers::dup_handler(const char *const str) { int tid, old_fd, new_fd; sscanf(str, "%d %d %d", &tid, &old_fd, &new_fd); START_LOG(gettid(), "call(tid=%d, old_fd=%d, new_fd=%d)", tid, old_fd, new_fd); diff --git a/capio/server/src/client_handlers/exig.cpp b/capio/server/src/client_handlers/exig.cpp index 927bd3716..ce29be8dd 100644 --- a/capio/server/src/client_handlers/exig.cpp +++ b/capio/server/src/client_handlers/exig.cpp @@ -40,7 +40,7 @@ void ClientRequestManager::ClientUtilities::handle_exit_group(int tid) { client_manager->removeClient(tid); } -void ClientRequestManager::ClientHandlers::exit_group_handler(const char *const str) { +void ClientRequestManager::Handlers::exit_group_handler(const char *const str) { int tid; sscanf(str, "%d", &tid); ClientUtilities::handle_exit_group(tid); diff --git a/capio/server/src/client_handlers/getdents.cpp b/capio/server/src/client_handlers/getdents.cpp index cd513834f..204d9081e 100644 --- a/capio/server/src/client_handlers/getdents.cpp +++ b/capio/server/src/client_handlers/getdents.cpp @@ -97,7 +97,7 @@ inline void handle_getdents(int tid, int fd, long int count) { } } -void ClientRequestManager::ClientHandlers::getdents_handler(const char *const str) { +void ClientRequestManager::MemHandlers::getdents_handler(const char *const str) { int tid, fd; off64_t count; sscanf(str, "%d %d %ld", &tid, &fd, &count); diff --git a/capio/server/src/client_handlers/handshake.cpp b/capio/server/src/client_handlers/handshake.cpp index 38e50bcd0..f173878fc 100644 --- a/capio/server/src/client_handlers/handshake.cpp +++ b/capio/server/src/client_handlers/handshake.cpp @@ -6,13 +6,8 @@ #include "client/request.hpp" extern ClientManager *client_manager; -void ClientRequestManager::ClientHandlers::handshake_anonymous_handler(const char *const str) { - int tid, pid; - sscanf(str, "%d %d", &tid, &pid); - client_manager->registerClient(tid); -} -void ClientRequestManager::ClientHandlers::handshake_named_handler(const char *const str) { +void ClientRequestManager::Handlers::handshake_named_handler(const char *const str) { int tid, pid, wait; char app_name[1024]; sscanf(str, "%d %d %s %d", &tid, &pid, app_name, &wait); diff --git a/capio/server/src/client_handlers/mkdir.cpp b/capio/server/src/client_handlers/mkdir.cpp index 13eb70a04..7bac2b7c8 100644 --- a/capio/server/src/client_handlers/mkdir.cpp +++ b/capio/server/src/client_handlers/mkdir.cpp @@ -8,7 +8,7 @@ extern ClientManager *client_manager; extern StorageManager *storage_manager; -void ClientRequestManager::ClientHandlers::mkdir_handler(const char *const str) { +void ClientRequestManager::MemHandlers::mkdir_handler(const char *const str) { pid_t tid; char pathname[PATH_MAX]; sscanf(str, "%d %s", &tid, pathname); diff --git a/capio/server/src/client_handlers/open.cpp b/capio/server/src/client_handlers/open.cpp index 80790273b..1c2a52206 100644 --- a/capio/server/src/client_handlers/open.cpp +++ b/capio/server/src/client_handlers/open.cpp @@ -73,7 +73,7 @@ inline void handle_open(int tid, int fd, const std::filesystem::path &path) { } } -void ClientRequestManager::ClientHandlers::create_handler(const char *const str) { +void ClientRequestManager::MemHandlers::create_handler(const char *const str) { int tid, fd; char path[PATH_MAX]; sscanf(str, "%d %d %s", &tid, &fd, path); @@ -84,7 +84,7 @@ void ClientRequestManager::ClientHandlers::create_handler(const char *const str) handle_create(tid, fd, path); } -void ClientRequestManager::ClientHandlers::create_exclusive_handler(const char *const str) { +void ClientRequestManager::MemHandlers::create_exclusive_handler(const char *const str) { int tid, fd; char path[PATH_MAX]; sscanf(str, "%d %d %s", &tid, &fd, path); @@ -95,7 +95,7 @@ void ClientRequestManager::ClientHandlers::create_exclusive_handler(const char * handle_create_exclusive(tid, fd, path); } -void ClientRequestManager::ClientHandlers::open_handler(const char *const str) { +void ClientRequestManager::MemHandlers::open_handler(const char *const str) { int tid, fd; char path[PATH_MAX]; sscanf(str, "%d %d %s", &tid, &fd, path); diff --git a/capio/server/src/client_handlers/read.cpp b/capio/server/src/client_handlers/read.cpp index 24b8a639b..c607aba34 100644 --- a/capio/server/src/client_handlers/read.cpp +++ b/capio/server/src/client_handlers/read.cpp @@ -184,7 +184,7 @@ inline void handle_read(int tid, int fd, off64_t count) { } } -void ClientRequestManager::ClientHandlers::read_handler(const char *const str) { +void ClientRequestManager::MemHandlers::read_handler(const char *const str) { int tid, fd; off64_t count; sscanf(str, "%d %d %ld", &tid, &fd, &count); diff --git a/capio/server/src/client_handlers/rename.cpp b/capio/server/src/client_handlers/rename.cpp index 7d449d1ad..c65e9c320 100644 --- a/capio/server/src/client_handlers/rename.cpp +++ b/capio/server/src/client_handlers/rename.cpp @@ -27,7 +27,7 @@ void handle_rename(int tid, const std::filesystem::path &oldpath, } } -void ClientRequestManager::ClientHandlers::rename_handler(const char *const str) { +void ClientRequestManager::MemHandlers::rename_handler(const char *const str) { char oldpath[PATH_MAX]; char newpath[PATH_MAX]; int tid; diff --git a/capio/server/src/client_handlers/rmdir.cpp b/capio/server/src/client_handlers/rmdir.cpp index b8bbdaea1..eab66b6e0 100644 --- a/capio/server/src/client_handlers/rmdir.cpp +++ b/capio/server/src/client_handlers/rmdir.cpp @@ -9,7 +9,7 @@ extern ClientManager *client_manager; extern StorageManager *storage_manager; -void ClientRequestManager::ClientHandlers::rmdir_handler(const char *const str) { +void ClientRequestManager::MemHandlers::rmdir_handler(const char *const str) { char dir_to_remove[PATH_MAX]; int tid; sscanf(str, "%s %d", dir_to_remove, &tid); diff --git a/capio/server/src/client_handlers/seek.cpp b/capio/server/src/client_handlers/seek.cpp index f7789088a..d9f8c6cc6 100644 --- a/capio/server/src/client_handlers/seek.cpp +++ b/capio/server/src/client_handlers/seek.cpp @@ -40,27 +40,27 @@ void handle_seek_hole(int tid, int fd, off64_t offset) { client_manager->replyToClient(tid, offset); } -void ClientRequestManager::ClientHandlers::lseek_handler(const char *const str) { +void ClientRequestManager::MemHandlers::lseek_handler(const char *const str) { int tid, fd; off64_t offset; sscanf(str, "%d %d %ld", &tid, &fd, &offset); handle_lseek(tid, fd, offset); } -void ClientRequestManager::ClientHandlers::seek_data_handler(const char *const str) { +void ClientRequestManager::MemHandlers::seek_data_handler(const char *const str) { int tid, fd; off64_t offset; sscanf(str, "%d %d %ld", &tid, &fd, &offset); handle_seek_data(tid, fd, offset); } -void ClientRequestManager::ClientHandlers::seek_end_handler(const char *const str) { +void ClientRequestManager::MemHandlers::seek_end_handler(const char *const str) { int tid, fd; sscanf(str, "%d %d", &tid, &fd); ClientUtilities::handle_seek_end(tid, fd); } -void ClientRequestManager::ClientHandlers::seek_hole_handler(const char *const str) { +void ClientRequestManager::MemHandlers::seek_hole_handler(const char *const str) { int tid, fd; off64_t offset; sscanf(str, "%d %d %ld", &tid, &fd, &offset); diff --git a/capio/server/src/client_handlers/stat.cpp b/capio/server/src/client_handlers/stat.cpp index 1f615922d..8fb4ba17d 100644 --- a/capio/server/src/client_handlers/stat.cpp +++ b/capio/server/src/client_handlers/stat.cpp @@ -85,14 +85,14 @@ void ClientRequestManager::ClientUtilities::reply_stat(int tid, const std::files } } -void ClientRequestManager::ClientHandlers::fstat_handler(const char *const str) { +void ClientRequestManager::MemHandlers::fstat_handler(const char *const str) { int tid, fd; sscanf(str, "%d %d", &tid, &fd); ClientUtilities::reply_stat(tid, storage_manager->getPath(tid, fd)); } -void ClientRequestManager::ClientHandlers::stat_handler(const char *const str) { +void ClientRequestManager::MemHandlers::stat_handler(const char *const str) { char path[2048]; int tid; sscanf(str, "%d %s", &tid, path); diff --git a/capio/server/src/client_handlers/unlink.cpp b/capio/server/src/client_handlers/unlink.cpp index 109f06050..f02c7e83d 100644 --- a/capio/server/src/client_handlers/unlink.cpp +++ b/capio/server/src/client_handlers/unlink.cpp @@ -9,7 +9,7 @@ extern StorageManager *storage_manager; extern ClientManager *client_manager; -void ClientRequestManager::ClientHandlers::unlink_handler(const char *const str) { +void ClientRequestManager::MemHandlers::unlink_handler(const char *const str) { char path[PATH_MAX]; int tid; sscanf(str, "%d %s", &tid, path); diff --git a/capio/server/src/client_handlers/write.cpp b/capio/server/src/client_handlers/write.cpp index 81009b4b8..0d24e7ea9 100644 --- a/capio/server/src/client_handlers/write.cpp +++ b/capio/server/src/client_handlers/write.cpp @@ -9,7 +9,7 @@ extern StorageManager *storage_manager; extern ClientManager *client_manager; -void ClientRequestManager::ClientHandlers::write_handler(const char *const str) { +void ClientRequestManager::MemHandlers::write_handler(const char *const str) { std::string request; int tid, fd; off64_t count; diff --git a/capio/server/src/client_request.cpp b/capio/server/src/client_request.cpp index d31e4abf7..224e13547 100644 --- a/capio/server/src/client_request.cpp +++ b/capio/server/src/client_request.cpp @@ -11,30 +11,29 @@ constexpr std::array ClientRequestManager::build_request_handlers_table() { std::array _request_handlers{0}; - _request_handlers[CAPIO_REQUEST_ACCESS] = ClientHandlers::access_handler; - _request_handlers[CAPIO_REQUEST_CLONE] = ClientHandlers::clone_handler; - _request_handlers[CAPIO_REQUEST_CLOSE] = ClientHandlers::close_handler; - _request_handlers[CAPIO_REQUEST_CREATE] = ClientHandlers::create_handler; - _request_handlers[CAPIO_REQUEST_CREATE_EXCLUSIVE] = ClientHandlers::create_exclusive_handler; - _request_handlers[CAPIO_REQUEST_DUP] = ClientHandlers::dup_handler; - _request_handlers[CAPIO_REQUEST_EXIT_GROUP] = ClientHandlers::exit_group_handler; - _request_handlers[CAPIO_REQUEST_FSTAT] = ClientHandlers::fstat_handler; - _request_handlers[CAPIO_REQUEST_GETDENTS] = ClientHandlers::getdents_handler; - _request_handlers[CAPIO_REQUEST_GETDENTS64] = ClientHandlers::getdents_handler; - _request_handlers[CAPIO_REQUEST_HANDSHAKE_NAMED] = ClientHandlers::handshake_named_handler; - _request_handlers[CAPIO_REQUEST_HANDSHAKE_ANONYMOUS] = ClientHandlers::handshake_anonymous_handler; - _request_handlers[CAPIO_REQUEST_MKDIR] = ClientHandlers::mkdir_handler; - _request_handlers[CAPIO_REQUEST_OPEN] = ClientHandlers::open_handler; - _request_handlers[CAPIO_REQUEST_READ] = ClientHandlers::read_handler; - _request_handlers[CAPIO_REQUEST_RENAME] = ClientHandlers::rename_handler; - _request_handlers[CAPIO_REQUEST_RMDIR] = ClientHandlers::rmdir_handler; - _request_handlers[CAPIO_REQUEST_SEEK] = ClientHandlers::lseek_handler; - _request_handlers[CAPIO_REQUEST_SEEK_DATA] = ClientHandlers::seek_data_handler; - _request_handlers[CAPIO_REQUEST_SEEK_END] = ClientHandlers::seek_end_handler; - _request_handlers[CAPIO_REQUEST_SEEK_HOLE] = ClientHandlers::seek_hole_handler; - _request_handlers[CAPIO_REQUEST_STAT] = ClientHandlers::stat_handler; - _request_handlers[CAPIO_REQUEST_UNLINK] = ClientHandlers::unlink_handler; - _request_handlers[CAPIO_REQUEST_WRITE] = ClientHandlers::write_handler; + _request_handlers[CAPIO_REQUEST_ACCESS] = MemHandlers::access_handler; + _request_handlers[CAPIO_REQUEST_CLONE] = MemHandlers::clone_handler; + _request_handlers[CAPIO_REQUEST_CLOSE] = MemHandlers::close_handler; + _request_handlers[CAPIO_REQUEST_CREATE] = MemHandlers::create_handler; + _request_handlers[CAPIO_REQUEST_CREATE_EXCLUSIVE] = MemHandlers::create_exclusive_handler; + _request_handlers[CAPIO_REQUEST_DUP] = MemHandlers::dup_handler; + _request_handlers[CAPIO_REQUEST_EXIT_GROUP] = Handlers::exit_group_handler; + _request_handlers[CAPIO_REQUEST_FSTAT] = MemHandlers::fstat_handler; + _request_handlers[CAPIO_REQUEST_GETDENTS] = MemHandlers::getdents_handler; + _request_handlers[CAPIO_REQUEST_GETDENTS64] = MemHandlers::getdents_handler; + _request_handlers[CAPIO_REQUEST_HANDSHAKE_NAMED] = Handlers::handshake_named_handler; + _request_handlers[CAPIO_REQUEST_MKDIR] = MemHandlers::mkdir_handler; + _request_handlers[CAPIO_REQUEST_OPEN] = MemHandlers::open_handler; + _request_handlers[CAPIO_REQUEST_READ] = MemHandlers::read_handler; + _request_handlers[CAPIO_REQUEST_RENAME] = MemHandlers::rename_handler; + _request_handlers[CAPIO_REQUEST_RMDIR] = MemHandlers::rmdir_handler; + _request_handlers[CAPIO_REQUEST_SEEK] = MemHandlers::lseek_handler; + _request_handlers[CAPIO_REQUEST_SEEK_DATA] = MemHandlers::seek_data_handler; + _request_handlers[CAPIO_REQUEST_SEEK_END] = MemHandlers::seek_end_handler; + _request_handlers[CAPIO_REQUEST_SEEK_HOLE] = MemHandlers::seek_hole_handler; + _request_handlers[CAPIO_REQUEST_STAT] = MemHandlers::stat_handler; + _request_handlers[CAPIO_REQUEST_UNLINK] = MemHandlers::unlink_handler; + _request_handlers[CAPIO_REQUEST_WRITE] = MemHandlers::write_handler; return _request_handlers; } From 4dba26bdead4f02b16e6cb4f24cdafedd2316049 Mon Sep 17 00:00:00 2001 From: = <=> Date: Sat, 28 Feb 2026 10:07:14 +0000 Subject: [PATCH 4/4] Fixed compilation issues --- capio/common/requests.hpp | 46 +++++++++---------- capio/server/include/remote/requests.hpp | 2 +- capio/server/include/utils/location.hpp | 2 +- capio/server/include/utils/signals.hpp | 2 +- .../tests/unit/server/src/client_manager.cpp | 2 +- capio/tests/unit/server/src/main.cpp | 6 ++- 6 files changed, 32 insertions(+), 28 deletions(-) diff --git a/capio/common/requests.hpp b/capio/common/requests.hpp index 1d562ba68..4c4dcad70 100644 --- a/capio/common/requests.hpp +++ b/capio/common/requests.hpp @@ -1,29 +1,29 @@ #ifndef CAPIO_COMMON_REQUESTS_HPP #define CAPIO_COMMON_REQUESTS_HPP -constexpr const int CAPIO_REQUEST_ACCESS = 0; -constexpr const int CAPIO_REQUEST_CLONE = 1; -constexpr const int CAPIO_REQUEST_CLOSE = 2; -constexpr const int CAPIO_REQUEST_CREATE = 3; -constexpr const int CAPIO_REQUEST_CREATE_EXCLUSIVE = 4; -constexpr const int CAPIO_REQUEST_DUP = 5; -constexpr const int CAPIO_REQUEST_EXIT_GROUP = 6; -constexpr const int CAPIO_REQUEST_FSTAT = 7; -constexpr const int CAPIO_REQUEST_GETDENTS = 8; -constexpr const int CAPIO_REQUEST_GETDENTS64 = 9; -constexpr const int CAPIO_REQUEST_HANDSHAKE_NAMED = 10; -constexpr const int CAPIO_REQUEST_MKDIR = 11; -constexpr const int CAPIO_REQUEST_OPEN = 12; -constexpr const int CAPIO_REQUEST_READ = 13; -constexpr const int CAPIO_REQUEST_RENAME = 14; -constexpr const int CAPIO_REQUEST_SEEK = 15; -constexpr const int CAPIO_REQUEST_SEEK_DATA = 16; -constexpr const int CAPIO_REQUEST_SEEK_END = 17; -constexpr const int CAPIO_REQUEST_SEEK_HOLE = 18; -constexpr const int CAPIO_REQUEST_STAT = 19; -constexpr const int CAPIO_REQUEST_UNLINK = 20; -constexpr const int CAPIO_REQUEST_WRITE = 21; -constexpr const int CAPIO_REQUEST_RMDIR = 22; +constexpr const int CAPIO_REQUEST_ACCESS = 0; +constexpr const int CAPIO_REQUEST_CLONE = 1; +constexpr const int CAPIO_REQUEST_CLOSE = 2; +constexpr const int CAPIO_REQUEST_CREATE = 3; +constexpr const int CAPIO_REQUEST_CREATE_EXCLUSIVE = 4; +constexpr const int CAPIO_REQUEST_DUP = 5; +constexpr const int CAPIO_REQUEST_EXIT_GROUP = 6; +constexpr const int CAPIO_REQUEST_FSTAT = 7; +constexpr const int CAPIO_REQUEST_GETDENTS = 8; +constexpr const int CAPIO_REQUEST_GETDENTS64 = 9; +constexpr const int CAPIO_REQUEST_HANDSHAKE_NAMED = 10; +constexpr const int CAPIO_REQUEST_MKDIR = 11; +constexpr const int CAPIO_REQUEST_OPEN = 12; +constexpr const int CAPIO_REQUEST_READ = 13; +constexpr const int CAPIO_REQUEST_RENAME = 14; +constexpr const int CAPIO_REQUEST_SEEK = 15; +constexpr const int CAPIO_REQUEST_SEEK_DATA = 16; +constexpr const int CAPIO_REQUEST_SEEK_END = 17; +constexpr const int CAPIO_REQUEST_SEEK_HOLE = 18; +constexpr const int CAPIO_REQUEST_STAT = 19; +constexpr const int CAPIO_REQUEST_UNLINK = 20; +constexpr const int CAPIO_REQUEST_WRITE = 21; +constexpr const int CAPIO_REQUEST_RMDIR = 22; constexpr const int CAPIO_NR_REQUESTS = 24; diff --git a/capio/server/include/remote/requests.hpp b/capio/server/include/remote/requests.hpp index 4e9bf6047..c67815eaa 100644 --- a/capio/server/include/remote/requests.hpp +++ b/capio/server/include/remote/requests.hpp @@ -1,8 +1,8 @@ #ifndef CAPIO_REMOTE_REQUESTS_HPP #define CAPIO_REMOTE_REQUESTS_HPP -#include "storage/manager.hpp" #include "common/requests.hpp" +#include "storage/manager.hpp" #include "utils/location.hpp" extern StorageManager *storage_manager; diff --git a/capio/server/include/utils/location.hpp b/capio/server/include/utils/location.hpp index e7d771ebc..acb377f34 100644 --- a/capio/server/include/utils/location.hpp +++ b/capio/server/include/utils/location.hpp @@ -4,8 +4,8 @@ #include #include -#include "utils/types.hpp" #include "remote/backend.hpp" +#include "utils/types.hpp" extern Backend *backend; extern char *node_name; diff --git a/capio/server/include/utils/signals.hpp b/capio/server/include/utils/signals.hpp index 3d436c006..9193acc96 100644 --- a/capio/server/include/utils/signals.hpp +++ b/capio/server/include/utils/signals.hpp @@ -3,9 +3,9 @@ #include -#include "remote/backend.hpp" #include "client/manager.hpp" #include "client/request.hpp" +#include "remote/backend.hpp" extern ClientManager *client_manager; extern StorageManager *storage_manager; diff --git a/capio/tests/unit/server/src/client_manager.cpp b/capio/tests/unit/server/src/client_manager.cpp index 0810b6da4..aac8a9944 100644 --- a/capio/tests/unit/server/src/client_manager.cpp +++ b/capio/tests/unit/server/src/client_manager.cpp @@ -2,7 +2,7 @@ #define CAPIO_CLIENT_MANAGER_HPP #include -#include +#include extern ClientManager *client_manager; diff --git a/capio/tests/unit/server/src/main.cpp b/capio/tests/unit/server/src/main.cpp index 7e2bdb089..ba734d85f 100644 --- a/capio/tests/unit/server/src/main.cpp +++ b/capio/tests/unit/server/src/main.cpp @@ -4,12 +4,16 @@ char *node_name; #include "capiocl.hpp" #include "capiocl/engine.h" -#include "client-manager/client_manager.hpp" +#include "client/manager.hpp" #include "common/constants.hpp" #include "storage/manager.hpp" #include "utils/capiocl_adapter.hpp" #include "utils/location.hpp" +CSFilesSentMap_t files_sent; +CSClientsRemotePendingNFilesMap_t clients_remote_pending_nfiles; +std::mutex nfiles_mutex; + capiocl::engine::Engine *capio_cl_engine = nullptr; StorageManager *storage_manager = nullptr; ClientManager *client_manager = nullptr;