memgraph/src/distributed
Teon Banek e0474a8e92 Replace boost with capnp in RPC
Summary:
Converts the RPC stack to use Cap'n Proto for serialization instead of
boost. There are still some traces of boost in other places in the code,
but most of it is removed. A future diff should cleanup boost for good.

The RPC API is now changed to be more flexible with regards to how
serialize data. This makes the simplest cases a bit more verbose, but
allows complex serialization code to be correctly written instead of
relying on hacks. (For reference, look for the old serialization of
`PullRpc` which had a nasty pointer hacks to inject accessors in
`TypedValue`.)

Since RPC messages were uselessly modeled via inheritance of Message
base class, that class is now removed. Furthermore, that approach
doesn't really work with Cap'n Proto. Instead, each message type is
required to have some type information. This can be automated, so
`define-rpc` has been added to LCP, which hopefully simplifies defining
new RPC request and response messages.

Specify Cap'n Proto schema ID in cmake

This preserves Cap'n Proto generated typeIds across multiple generations
of capnp schemas through LCP. It is imperative that typeId stays the
same to ensure that different compilations of Memgraph may communicate
via RPC in a distributed cluster.

Use CLOS for meta information on C++ types in LCP

Since some structure slots and functions have started to repeat
themselves, it makes sense to model C++ meta information via Common Lisp
Object System.

Depends on D1391

Reviewers: buda, dgleich, mferencevic, mtomic, mculinovic, msantl

Reviewed By: msantl

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1407
2018-06-04 10:45:12 +02:00
..
bfs_rpc_clients.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
bfs_rpc_clients.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
bfs_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
bfs_rpc_server.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
bfs_subcursor.cpp Distributed BFS 2018-05-15 17:38:51 +02:00
bfs_subcursor.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
cache.cpp Replace command_id_t with CommandId and transaction_id_t with TransactionId. 2018-04-20 13:55:14 +02:00
cache.hpp Replace command_id_t with CommandId and transaction_id_t with TransactionId. 2018-04-20 13:55:14 +02:00
cluster_discovery_master.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
cluster_discovery_master.hpp Add ClusterDiscovery RPC for distributed BFS 2018-04-09 14:28:22 +02:00
cluster_discovery_worker.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
cluster_discovery_worker.hpp Notify master of worker recovery 2018-05-10 11:09:34 +02:00
coordination_master.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
coordination_master.hpp Notify master of worker recovery 2018-05-10 11:09:34 +02:00
coordination_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
coordination_worker.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
coordination_worker.hpp Check that workers desired id is equal to the assigned id from master. 2018-04-11 12:36:40 +02:00
coordination.cpp Add ClusterDiscovery RPC for distributed BFS 2018-04-09 14:28:22 +02:00
coordination.hpp Add ClusterDiscovery RPC for distributed BFS 2018-04-09 14:28:22 +02:00
data_manager.cpp Destroy and create storage object after failed recovery 2018-04-20 16:16:52 +02:00
data_manager.hpp Destroy and create storage object after failed recovery 2018-04-20 16:16:52 +02:00
data_rpc_clients.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
data_rpc_clients.hpp Create Dynamic Graph Partitioner, 2018-05-29 11:32:39 +02:00
data_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
data_rpc_server.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
data_rpc_server.hpp Tidyup distributed stuff naming 2018-03-23 16:32:29 +01:00
durability_rpc_clients.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
durability_rpc_clients.hpp Replace command_id_t with CommandId and transaction_id_t with TransactionId. 2018-04-20 13:55:14 +02:00
durability_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
durability_rpc_server.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
durability_rpc_server.hpp Synchronize snapshooting 2018-04-06 10:10:01 +02:00
index_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
index_rpc_server.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
index_rpc_server.hpp Extract cpp from hpp in distributed, fix includes 2018-03-21 09:38:44 +01:00
plan_consumer.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
plan_consumer.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
plan_dispatcher.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
plan_dispatcher.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
plan_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
produce_rpc_server.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
produce_rpc_server.hpp Add command id to remote produce 2018-05-16 10:20:39 +02:00
pull_produce_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
pull_rpc_clients.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
pull_rpc_clients.hpp Add command id to remote produce 2018-05-16 10:20:39 +02:00
rpc_worker_clients.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
serialization.capnp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
serialization.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
serialization.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
storage_gc_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
token_sharing_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
token_sharing_rpc_server.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
transactional_cache_cleaner_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
transactional_cache_cleaner.hpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
updates_rpc_clients.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
updates_rpc_clients.hpp Revert "Remote vertex with gid creation" 2018-05-30 14:44:50 +02:00
updates_rpc_messages.lcp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
updates_rpc_server.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
updates_rpc_server.hpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00