Generate static Save and Load methods for RPCs

Reviewers: mtomic, mferencevic

Reviewed By: mferencevic

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1995
This commit is contained in:
Teon Banek 2019-04-29 10:34:09 +02:00
parent 5dc362d9f5
commit 95f4d1c3fa
9 changed files with 60 additions and 1 deletions

View File

@ -4,6 +4,7 @@
#include <string>
#include "communication/rpc/messages.hpp"
#include "communication/rpc/serialization.hpp"
#include "database/distributed/counters_rpc_messages.capnp.h"
cpp<#

View File

@ -5,6 +5,7 @@
#include <string>
#include "communication/rpc/messages.hpp"
#include "communication/rpc/serialization.hpp"
#include "distributed/dynamic_worker_rpc_messages.capnp.h"
cpp<#

View File

@ -2,6 +2,7 @@
#pragma once
#include "communication/rpc/messages.hpp"
#include "communication/rpc/serialization.hpp"
#include "distributed/storage_gc_rpc_messages.capnp.h"
#include "io/network/endpoint.hpp"
#include "transactions/transaction.hpp"

View File

@ -5,6 +5,7 @@
#include <string>
#include "communication/rpc/messages.hpp"
#include "communication/rpc/serialization.hpp"
#include "distributed/token_sharing_rpc_messages.capnp.h"
cpp<#

View File

@ -1371,12 +1371,64 @@ enums which aren't defined in LCP."
,(decl-type-info req-name)
,(def-constructor req-name (second request)))
(:serialize (:slk) (:capnp)))
(let ((req-class (find-cpp-class ',req-sym)))
(unless (lcp.slk::save-extra-args req-class)
(push ,(progn
#>cpp
static void Save(const ${req-name} &self, slk::Builder *builder);
cpp<#)
(cpp-class-public req-class))
(in-impl
,(progn
#>cpp
void ${req-name}::Save(const ${req-name} &self, slk::Builder *builder) {
slk::Save(self, builder);
}
cpp<#)))
(unless (lcp.slk::load-extra-args req-class)
(push ,(progn #>cpp
static void Load(${req-name} *self, slk::Reader *reader);
cpp<#)
(cpp-class-public req-class))
(in-impl
,(progn
#>cpp
void ${req-name}::Load(${req-name} *self, slk::Reader *reader) {
slk::Load(self, reader);
}
cpp<#))))
(define-struct ,res-sym ()
,@(cdr response)
(:public
,(decl-type-info res-name)
,(def-constructor res-name (second response)))
(:serialize (:slk) (:capnp)))
(let ((res-class (find-cpp-class ',res-sym)))
(unless (lcp.slk::save-extra-args res-class)
(push ,(progn
#>cpp
static void Save(const ${res-name} &self, slk::Builder *builder);
cpp<#)
(cpp-class-public res-class))
(in-impl
,(progn
#>cpp
void ${res-name}::Save(const ${res-name} &self, slk::Builder *builder) {
slk::Save(self, builder);
}
cpp<#)))
(unless (lcp.slk::load-extra-args res-class)
(push ,(progn #>cpp
static void Load(${res-name} *self, slk::Reader *reader);
cpp<#)
(cpp-class-public res-class))
(in-impl
,(progn
#>cpp
void ${res-name}::Load(${res-name} *self, slk::Reader *reader) {
slk::Load(self, reader);
}
cpp<#))))
,rpc-decl))))
(defun read-lcp (filepath)

View File

@ -132,7 +132,7 @@
(members :initarg :members :initform nil :reader cpp-class-members)
;; Custom C++ code in 3 scopes. May be a list of C++ meta information or a
;; single element.
(public :initarg :public :initform nil :reader cpp-class-public)
(public :initarg :public :initform nil :accessor cpp-class-public)
(protected :initarg :protected :initform nil :reader cpp-class-protected)
(private :initarg :private :initform nil :accessor cpp-class-private)
(capnp-opts :type (or null capnp-opts) :initarg :capnp-opts :initform nil

View File

@ -5,6 +5,7 @@
#include <string>
#include "communication/rpc/messages.hpp"
#include "communication/rpc/serialization.hpp"
#include "raft/storage_info_rpc_messages.capnp.h"
#include "rpc/serialization.hpp"
cpp<#

View File

@ -2,6 +2,7 @@
#pragma once
#include "communication/rpc/messages.hpp"
#include "communication/rpc/serialization.hpp"
#include "stats/stats_rpc_messages.capnp.h"
#include "rpc/serialization.hpp"
#include "utils/timestamp.hpp"

View File

@ -2,6 +2,7 @@
#pragma once
#include "communication/rpc/messages.hpp"
#include "communication/rpc/serialization.hpp"
#include "transactions/commit_log.hpp"
#include "transactions/distributed/engine_rpc_messages.capnp.h"
#include "transactions/snapshot.hpp"