Summary: Classes marked with `:serialize (:slk)` will now generate SLK serialization code. This diff also changes how the `:serialize` option is parsed, so that multiple different serialization backends are supported. Reviewers: mtomic, llugovic, mferencevic Reviewed By: mtomic Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D1755
75 lines
2.4 KiB
Plaintext
75 lines
2.4 KiB
Plaintext
#>cpp
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
#include "communication/rpc/messages.hpp"
|
|
#include "distributed/data_rpc_messages.capnp.h"
|
|
#include "storage/distributed/edge.hpp"
|
|
#include "storage/distributed/gid.hpp"
|
|
#include "storage/distributed/rpc/serialization.hpp"
|
|
#include "storage/distributed/vertex.hpp"
|
|
#include "transactions/type.hpp"
|
|
cpp<#
|
|
|
|
(lcp:namespace distributed)
|
|
|
|
(lcp:capnp-namespace "distributed")
|
|
|
|
(lcp:capnp-import 'utils "/utils/serialization.capnp")
|
|
(lcp:capnp-import 'storage "/storage/distributed/rpc/serialization.capnp")
|
|
|
|
(lcp:define-struct tx-gid-pair ()
|
|
((tx-id "tx::TransactionId" :capnp-type "UInt64")
|
|
(gid "gid::Gid" :capnp-type "UInt64"))
|
|
(:serialize (:capnp)))
|
|
|
|
(lcp:define-rpc vertex
|
|
(:request ((member "TxGidPair")))
|
|
(:response
|
|
((cypher-id :int64_t)
|
|
(vertex-input "const Vertex *"
|
|
:capnp-type "Storage.Vertex"
|
|
:capnp-save
|
|
(lambda (builder member capnp-name)
|
|
(declare (ignore capnp-name))
|
|
#>cpp
|
|
storage::SaveVertex(*${member}, &${builder}, self.worker_id);
|
|
cpp<#)
|
|
:capnp-load
|
|
(lambda (reader member capnp-name)
|
|
(declare (ignore member capnp-name))
|
|
#>cpp
|
|
self->vertex_output = storage::LoadVertex(${reader});
|
|
cpp<#))
|
|
(worker-id :int64_t :dont-save t)
|
|
(vertex-output "std::unique_ptr<Vertex>" :initarg nil :dont-save t))))
|
|
|
|
(lcp:define-rpc edge
|
|
(:request ((member "TxGidPair")))
|
|
(:response
|
|
((cypher-id :int64_t)
|
|
(edge-input "const Edge *"
|
|
:capnp-type "Storage.Edge"
|
|
:capnp-save
|
|
(lambda (builder member capnp-name)
|
|
(declare (ignore capnp-name))
|
|
#>cpp
|
|
storage::SaveEdge(*${member}, &${builder}, self.worker_id);
|
|
cpp<#)
|
|
:capnp-load
|
|
(lambda (reader member capnp-name)
|
|
(declare (ignore member capnp-name))
|
|
#>cpp
|
|
self->edge_output = storage::LoadEdge(${reader});
|
|
cpp<#))
|
|
(worker-id :int64_t :dont-save t)
|
|
(edge-output "std::unique_ptr<Edge>" :initarg nil :dont-save t))))
|
|
|
|
(lcp:define-rpc vertex-count
|
|
(:request ((member "tx::TransactionId" :capnp-type "UInt64")))
|
|
(:response ((member :int64_t))))
|
|
|
|
(lcp:pop-namespace) ;; distributed
|