diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9e6179091..f7b14922d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,6 +10,7 @@ add_subdirectory(telemetry) add_subdirectory(communication) add_subdirectory(stats) add_subdirectory(auth) +add_subdirectory(rpc) # ---------------------------------------------------------------------------- # Memgraph Single Node @@ -236,7 +237,7 @@ add_custom_target(generate_capnp DEPENDS generate_lcp_distributed ${generated_ca set(MG_DISTRIBUTED_LIBS stdc++fs Threads::Threads fmt cppitertools antlr_opencypher_parser_lib dl glog gflags capnp kj mg-utils mg-io mg-io-serialization mg-integrations-kafka mg-requests - mg-communication mg-comm-rpc mg-auth) + mg-communication mg-comm-rpc mg-auth mg-rpc) # STATIC library used by memgraph executables add_library(mg-distributed STATIC ${mg_distributed_sources}) @@ -325,7 +326,7 @@ add_custom_target(generate_capnp_single_node_ha DEPENDS generate_lcp_single_node set(MG_SINGLE_NODE_HA_LIBS stdc++fs Threads::Threads fmt cppitertools antlr_opencypher_parser_lib dl glog gflags capnp kj mg-utils mg-io mg-integrations-kafka mg-requests mg-communication mg-comm-rpc - mg-auth) + mg-auth mg-rpc) if (USE_LTALLOC) list(APPEND MG_SINGLE_NODE_HA_LIBS ltalloc) diff --git a/src/distributed/bfs_rpc_messages.lcp b/src/distributed/bfs_rpc_messages.lcp index db2b0db64..edc1fb3b7 100644 --- a/src/distributed/bfs_rpc_messages.lcp +++ b/src/distributed/bfs_rpc_messages.lcp @@ -11,7 +11,7 @@ #include "query/serialization.hpp" #include "storage/distributed/rpc/serialization.hpp" #include "transactions/type.hpp" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" cpp<# (lcp:namespace distributed) @@ -22,7 +22,7 @@ cpp<# (lcp:capnp-import 'dist-ops "/query/plan/distributed_ops.capnp") (lcp:capnp-import 'query "/query/serialization.capnp") (lcp:capnp-import 'storage "/storage/distributed/rpc/serialization.capnp") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:capnp-type-conversion "storage::EdgeAddress" "Storage.Address") (lcp:capnp-type-conversion "storage::VertexAddress" "Storage.Address") diff --git a/src/distributed/coordination_rpc_messages.lcp b/src/distributed/coordination_rpc_messages.lcp index ee2deb7ac..649e4cde0 100644 --- a/src/distributed/coordination_rpc_messages.lcp +++ b/src/distributed/coordination_rpc_messages.lcp @@ -18,7 +18,7 @@ cpp<# (lcp:capnp-import 'dur "/durability/distributed/serialization.capnp") (lcp:capnp-import 'io "/io/network/endpoint.capnp") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:define-rpc register-worker (:request diff --git a/src/distributed/data_rpc_messages.lcp b/src/distributed/data_rpc_messages.lcp index 32e230e98..fbaaf27e9 100644 --- a/src/distributed/data_rpc_messages.lcp +++ b/src/distributed/data_rpc_messages.lcp @@ -17,7 +17,7 @@ cpp<# (lcp:capnp-namespace "distributed") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:capnp-import 'storage "/storage/distributed/rpc/serialization.capnp") (lcp:define-struct tx-gid-pair () diff --git a/src/distributed/dynamic_worker_rpc_messages.lcp b/src/distributed/dynamic_worker_rpc_messages.lcp index ea1b59511..e04935ea3 100644 --- a/src/distributed/dynamic_worker_rpc_messages.lcp +++ b/src/distributed/dynamic_worker_rpc_messages.lcp @@ -12,7 +12,7 @@ cpp<# (lcp:capnp-namespace "distributed") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:define-rpc dynamic-worker (:request ()) diff --git a/src/distributed/plan_rpc_messages.lcp b/src/distributed/plan_rpc_messages.lcp index d25ba4c7f..999853da4 100644 --- a/src/distributed/plan_rpc_messages.lcp +++ b/src/distributed/plan_rpc_messages.lcp @@ -13,7 +13,7 @@ cpp<# (lcp:capnp-namespace "distributed") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:capnp-import 'plan "/query/plan/distributed_ops.capnp") (lcp:capnp-import 'query "/query/serialization.capnp") diff --git a/src/distributed/pull_produce_rpc_messages.lcp b/src/distributed/pull_produce_rpc_messages.lcp index a71961658..1edf54a52 100644 --- a/src/distributed/pull_produce_rpc_messages.lcp +++ b/src/distributed/pull_produce_rpc_messages.lcp @@ -13,7 +13,7 @@ #include "query/serialization.hpp" #include "storage/distributed/address_types.hpp" #include "transactions/type.hpp" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" cpp<# (lcp:in-impl @@ -32,7 +32,7 @@ cpp<# (lcp:capnp-import 'storage "/storage/distributed/rpc/serialization.capnp") (lcp:capnp-import 'query "/query/serialization.capnp") (lcp:capnp-import 'sem "/query/frontend/semantic/symbol_serialization.capnp") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:capnp-type-conversion "tx::CommandId" "UInt32") (lcp:capnp-type-conversion "tx::TransactionId" "UInt64") diff --git a/src/distributed/updates_rpc_messages.lcp b/src/distributed/updates_rpc_messages.lcp index 3ba795266..7b4b7996b 100644 --- a/src/distributed/updates_rpc_messages.lcp +++ b/src/distributed/updates_rpc_messages.lcp @@ -11,7 +11,7 @@ #include "storage/distributed/gid.hpp" #include "storage/distributed/rpc/serialization.hpp" #include "transactions/type.hpp" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" cpp<# (lcp:namespace distributed) @@ -20,7 +20,7 @@ cpp<# (lcp:capnp-import 'db "/database/distributed/serialization.capnp") (lcp:capnp-import 'storage "/storage/distributed/rpc/serialization.capnp") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:capnp-type-conversion "tx::TransactionId" "UInt64") (lcp:capnp-type-conversion "gid::Gid" "UInt64") diff --git a/src/durability/distributed/serialization.capnp b/src/durability/distributed/serialization.capnp index 0281d6a36..c8a6392dc 100644 --- a/src/durability/distributed/serialization.capnp +++ b/src/durability/distributed/serialization.capnp @@ -1,7 +1,7 @@ @0xb3d70bc0576218f3; using Cxx = import "/capnp/c++.capnp"; -using Utils = import "/utils/serialization.capnp"; +using Utils = import "/rpc/serialization.capnp"; $Cxx.namespace("durability::capnp"); diff --git a/src/durability/distributed/serialization.hpp b/src/durability/distributed/serialization.hpp index 799bb3d56..177741777 100644 --- a/src/durability/distributed/serialization.hpp +++ b/src/durability/distributed/serialization.hpp @@ -3,7 +3,7 @@ #include "communication/rpc/serialization.hpp" #include "durability/distributed/recovery.hpp" #include "durability/distributed/serialization.capnp.h" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" namespace durability { diff --git a/src/lisp/lcp.lisp b/src/lisp/lcp.lisp index f0c8d0cb3..e8cb605f2 100644 --- a/src/lisp/lcp.lisp +++ b/src/lisp/lcp.lisp @@ -246,7 +246,7 @@ which generate the corresponding C++ keywords." ;;; 2) C++ class members are converted to camelCased members of Capnp struct. ;;; a) Primitive C++ types are mapped to primitive Capnp types. ;;; b) C++ std types are converted to our Capnp wrappers found in -;;; utils/serialization.capnp. This process is hardcoded. +;;; rpc/serialization.capnp. This process is hardcoded. ;;; c) For other composite types, we assume that a Capnp struct exists ;;; with the same PascalCase name as the *top-most* base class. ;;; d) The user may provide a :CAPNP-TYPE string, which overrides our @@ -1431,7 +1431,7 @@ code generation." (when schema (write-line schema out)))))) ;; Now generate the save/load C++ code in the cpp file. (write-line "// Autogenerated Cap'n Proto serialization code" cpp-out) - (write-line "#include \"utils/serialization.hpp\"" cpp-out) + (write-line "#include \"rpc/serialization.hpp\"" cpp-out) (with-namespaced-output (cpp-out open-namespace) (dolist (cpp-type cpp-types) (open-namespace (cpp-type-namespace cpp-type)) diff --git a/src/query/common.cpp b/src/query/common.cpp index 5d1261012..15e21e2d1 100644 --- a/src/query/common.cpp +++ b/src/query/common.cpp @@ -8,7 +8,6 @@ #include "glog/logging.h" #include "query/exceptions.hpp" -#include "utils/serialization.hpp" #include "utils/string.hpp" namespace query { diff --git a/src/query/frontend/ast/ast.lcp b/src/query/frontend/ast/ast.lcp index 327926d72..398ae1601 100644 --- a/src/query/frontend/ast/ast.lcp +++ b/src/query/frontend/ast/ast.lcp @@ -23,7 +23,7 @@ cpp<# (lcp:capnp-import 'storage "/storage/distributed/rpc/serialization.capnp") (lcp:capnp-import 'symbol "/query/frontend/semantic/symbol_serialization.capnp") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:capnp-type-conversion "PropertyValue" "Storage.PropertyValue") (lcp:capnp-type-conversion "Symbol" "Symbol.Symbol") diff --git a/src/query/plan/operator.lcp b/src/query/plan/operator.lcp index 8506ad67f..61ebf651d 100644 --- a/src/query/plan/operator.lcp +++ b/src/query/plan/operator.lcp @@ -123,7 +123,7 @@ cpp<# (lcp:capnp-namespace "query::plan") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:capnp-import 'storage "/storage/distributed/rpc/serialization.capnp") (lcp:capnp-import 'ast "/query/frontend/ast/ast_serialization.capnp") (lcp:capnp-import 'semantic "/query/frontend/semantic/symbol_serialization.capnp") diff --git a/src/query/serialization.capnp b/src/query/serialization.capnp index bf761a755..2216a438c 100644 --- a/src/query/serialization.capnp +++ b/src/query/serialization.capnp @@ -4,7 +4,7 @@ using Ast = import "/query/frontend/ast/ast_serialization.capnp"; using Cxx = import "/capnp/c++.capnp"; using Sem = import "/query/frontend/semantic/symbol_serialization.capnp"; using Storage = import "/storage/distributed/rpc/serialization.capnp"; -using Utils = import "/utils/serialization.capnp"; +using Utils = import "/rpc/serialization.capnp"; $Cxx.namespace("query::capnp"); diff --git a/src/query/serialization.cpp b/src/query/serialization.cpp index 0685dadeb..98a10c077 100644 --- a/src/query/serialization.cpp +++ b/src/query/serialization.cpp @@ -2,7 +2,7 @@ #include "distributed/data_manager.hpp" #include "query/frontend/ast/ast_serialization.hpp" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" namespace query { diff --git a/src/query/serialization.hpp b/src/query/serialization.hpp index 09483d863..9257fab4e 100644 --- a/src/query/serialization.hpp +++ b/src/query/serialization.hpp @@ -7,7 +7,7 @@ #include "query/serialization.capnp.h" #include "query/typed_value.hpp" #include "storage/distributed/rpc/serialization.hpp" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" namespace distributed { class DataManager; diff --git a/src/raft/raft_server.cpp b/src/raft/raft_server.cpp index e8eb95227..d44486d26 100644 --- a/src/raft/raft_server.cpp +++ b/src/raft/raft_server.cpp @@ -16,7 +16,7 @@ #include "raft/exceptions.hpp" #include "utils/exceptions.hpp" #include "utils/on_scope_exit.hpp" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" #include "utils/thread.hpp" namespace raft { diff --git a/src/rpc/CMakeLists.txt b/src/rpc/CMakeLists.txt new file mode 100644 index 000000000..d7213ddf2 --- /dev/null +++ b/src/rpc/CMakeLists.txt @@ -0,0 +1,9 @@ +define_add_capnp(add_capnp rpc_src_files rpc_capnp_files) + +add_capnp(serialization.capnp) + +add_custom_target(generate_rpc_capnp DEPENDS ${rpc_capnp_files}) + +add_library(mg-rpc STATIC ${rpc_src_files}) +target_link_libraries(mg-rpc glog gflags capnp kj) +add_dependencies(mg-rpc generate_rpc_capnp) diff --git a/src/utils/serialization.capnp b/src/rpc/serialization.capnp similarity index 100% rename from src/utils/serialization.capnp rename to src/rpc/serialization.capnp diff --git a/src/utils/serialization.hpp b/src/rpc/serialization.hpp similarity index 99% rename from src/utils/serialization.hpp rename to src/rpc/serialization.hpp index e66daadd8..6fd15ac2c 100644 --- a/src/utils/serialization.hpp +++ b/src/rpc/serialization.hpp @@ -7,7 +7,7 @@ #include #include "utils/algorithm.hpp" -#include "utils/serialization.capnp.h" +#include "rpc/serialization.capnp.h" namespace utils { diff --git a/src/stats/stats_rpc_messages.lcp b/src/stats/stats_rpc_messages.lcp index 3cf7457c4..2b52598c3 100644 --- a/src/stats/stats_rpc_messages.lcp +++ b/src/stats/stats_rpc_messages.lcp @@ -3,7 +3,7 @@ #include "communication/rpc/messages.hpp" #include "stats/stats_rpc_messages.capnp.h" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" #include "utils/timestamp.hpp" cpp<# @@ -11,7 +11,7 @@ cpp<# (lcp:capnp-namespace "stats") -(lcp:capnp-import 'utils "/utils/serialization.capnp") +(lcp:capnp-import 'utils "/rpc/serialization.capnp") (lcp:define-rpc stats (:request diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt index 53e968948..3f93c1419 100644 --- a/src/utils/CMakeLists.txt +++ b/src/utils/CMakeLists.txt @@ -7,13 +7,5 @@ set(utils_src_files uuid.cpp watchdog.cpp) -define_add_capnp(add_capnp utils_src_files utils_capnp_files) - -add_capnp(serialization.capnp) - -add_custom_target(generate_utils_capnp DEPENDS ${utils_capnp_files}) - add_library(mg-utils STATIC ${utils_src_files}) target_link_libraries(mg-utils stdc++fs Threads::Threads fmt glog gflags uuid) -target_link_libraries(mg-utils capnp kj) -add_dependencies(mg-utils generate_utils_capnp) diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index a6e420ca9..bf858523c 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -219,7 +219,7 @@ add_unit_test(record_edge_vertex_accessor.cpp) target_link_libraries(${test_prefix}record_edge_vertex_accessor mg-single-node kvstore_dummy_lib) add_unit_test(serialization.cpp) -target_link_libraries(${test_prefix}serialization mg-distributed kvstore_dummy_lib) +target_link_libraries(${test_prefix}serialization mg-rpc) add_unit_test(skip_list.cpp) target_link_libraries(${test_prefix}skip_list mg-utils) diff --git a/tests/unit/query_plan.cpp b/tests/unit/query_plan.cpp index e48c895ad..8963c2cc9 100644 --- a/tests/unit/query_plan.cpp +++ b/tests/unit/query_plan.cpp @@ -16,8 +16,6 @@ #include "query/plan/operator.hpp" #include "query/plan/planner.hpp" -#include - #include "query_common.hpp" namespace query { diff --git a/tests/unit/serialization.cpp b/tests/unit/serialization.cpp index e8b38199b..7d2420b14 100644 --- a/tests/unit/serialization.cpp +++ b/tests/unit/serialization.cpp @@ -4,7 +4,7 @@ #include "gtest/gtest.h" #include "capnp/message.h" -#include "utils/serialization.hpp" +#include "rpc/serialization.hpp" using std::experimental::optional; using std::string_literals::operator""s;