#include <functional>#include <numeric>#include <type_traits>#include "rpc_utils.hpp"#include <derecho/mutils-serialization/SerializationSupport.hpp>#include <derecho/utils/logger.hpp>#include <mutils/FunctionalMap.hpp>#include <mutils/tuple_extras.hpp>#include <spdlog/spdlog.h>

Go to the source code of this file.
Classes | |
| struct | derecho::rpc::RemoteInvocable< FunctionTag, typename > |
| struct | derecho::rpc::RemoteInvoker< FunctionTag, typename > |
| struct | derecho::rpc::RemoteInvoker< Tag, std::function< Ret(Args...)> > |
| Provides functions to implement RPC sends for function calls to a single function, identified by its compile-time "tag" or ID. More... | |
| struct | derecho::rpc::RemoteInvoker< Tag, std::function< Ret(Args...)> >::send_return |
| Return type for the send function. More... | |
| struct | derecho::rpc::RemoteInvocable< Tag, std::function< Ret(Args...)> > |
| Provides functions to implement handling RPC calls to a single function, identified by its compile-time "tag" or opcode. More... | |
| struct | derecho::rpc::wrapped< Tag, NotAFunction > |
| This matches uses of wrapped<> where the second argument is not a function, and does nothing. More... | |
| struct | derecho::rpc::wrapped< Tag, std::function< Ret(Arguments...)> > |
| Template that pairs a FunctionTag with a function pointer, thus "naming" the function with a tag (ID) that is a compile-time value. More... | |
| struct | derecho::rpc::partial_wrapped< Tag, Ret, Class, Arguments > |
| Template that pairs a FunctionTag with a pointer-to-member-function. More... | |
| struct | derecho::rpc::const_partial_wrapped< Tag, Ret, Class, Arguments > |
| Exactly the same as the partial_wrapped template, but for pointer-to-member-functions that are const. More... | |
| struct | derecho::rpc::RemoteInvocablePairs<... > |
| struct | derecho::rpc::RemoteInvocablePairs< wrapped< id, FunType > > |
| Base case for RemoteInvocablePairs, where the template parameter pack contains only a single wrapped<id, FunType> More... | |
| struct | derecho::rpc::RemoteInvocablePairs< wrapped< id, FunType >, rest... > |
| This struct exists purely to inherit from a series of RemoteInvoker and RemoteInvocables; it inherits one pair of RemoteInvoker/RemoteInvocable for each wrapped<id, FunType> type in its template parameter pack. More... | |
| struct | derecho::rpc::RemoteInvokers<... > |
| Technically, RemoteInvokers is a specialization of this template, but it's the only specialization, so this template does nothing. More... | |
| struct | derecho::rpc::RemoteInvokers< wrapped< Tag, FunType > > |
| Base case for RemoteInvokers, where the template parameter pack contains only a single wrapped<id, FunType> More... | |
| struct | derecho::rpc::RemoteInvokers< wrapped< Tag, FunType >, RestWrapped... > |
| This struct exists purely to inherit from a list of RemoteInvokers, one for each wrapped<> type in its template parameter pack. More... | |
| class | derecho::rpc::RemoteInvocableClass< IdentifyingClass, WrappedFuns > |
| Transforms a class into a "replicated object" with methods that can be invoked by RPC, given a place to store RPC message handlers (which should be the "receivers map" of RPCManager). More... | |
| class | derecho::rpc::RemoteInvocableClass< IdentifyingClass > |
| Specialization of RemoteInvocableClass for classes that have no RPC methods. More... | |
| class | derecho::rpc::RemoteInvokerForClass< IdentifyingClass, WrappedFuns > |
| Transforms a class into an RPC client for the methods of that class, given a place to store RPC message handlers (which should be the "receivers map" of RPCManager). More... | |
| class | derecho::rpc::RemoteInvokerForClass< IdentifyingClass > |
| Specialization of RemoteInvokerForClass for classes that have no RPC methods. More... | |
Namespaces | |
| derecho | |
| derecho::rpc | |
Macros | |
| #define | MAX_CONCURRENT_RPCS_PER_INVOKER (4096) |
Functions | |
| bool | derecho::rpc::in_rpc_handler () |
| defined in rpc_manager.h More... | |
| template<typename NewClass , FunctionTag Tag, typename Ret , typename... Args> | |
| wrapped< Tag, std::function< Ret(Args...)> > | derecho::rpc::bind_to_instance (std::unique_ptr< NewClass > *_this, const partial_wrapped< Tag, Ret, NewClass, Args... > &partial) |
| Converts a partial_wrapped<> containing a pointer-to-member-function to a wrapped<> containing the same function as a std::function. More... | |
| template<typename NewClass , FunctionTag Tag, typename Ret , typename... Args> | |
| wrapped< Tag, std::function< Ret(Args...)> > | derecho::rpc::bind_to_instance (std::unique_ptr< NewClass > *_this, const const_partial_wrapped< Tag, Ret, NewClass, Args... > &partial) |
| Exactly the same as the bind_to_instance function above, but for pointer-to-member-functions that are const. More... | |
| template<FunctionTag Tag, typename NewClass , typename Ret , typename... Args> | |
| partial_wrapped< Tag, Ret, NewClass, Args... > | derecho::rpc::tag (Ret(NewClass::*fun)(Args...)) |
| User-facing entry point for the series of functions that binds a FunctionTag to a class's member function. More... | |
| template<FunctionTag Tag, typename NewClass , typename Ret , typename... Args> | |
| const_partial_wrapped< Tag, Ret, NewClass, Args... > | derecho::rpc::tag (Ret(NewClass::*fun)(Args...) const) |
| Exactly the same as the above tag() function, but for const member functions. More... | |
| template<class IdentifyingClass , typename... WrappedFuns> | |
| auto | derecho::rpc::build_remote_invocable_class (const node_id_t nid, const uint32_t type_id, const uint32_t instance_id, std::map< Opcode, receive_fun_t > &rvrs, const WrappedFuns &... fs) |
| Constructs a RemoteInvocableClass instance that proxies for an instance of the class in the template parameter (IdentifyingClass). More... | |
| template<class IdentifyingClass , typename... WrappedFuns> | |
| auto | derecho::rpc::build_remote_invoker_for_class (const node_id_t nid, const uint32_t type_id, const uint32_t instance_id, std::map< Opcode, receive_fun_t > &rvrs) |
| Constructs a RemoteInvokerForClass that can act as a client for the class in the template parameter (IdentifyingClass). More... | |
| struct derecho::rpc::RemoteInvocable |
Definition at line 31 of file remote_invocable.hpp.
| struct derecho::rpc::RemoteInvoker |
Definition at line 34 of file remote_invocable.hpp.
| struct derecho::rpc::RemoteInvoker< Tag, std::function< Ret(Args...)> >::send_return |
Return type for the send function.
Contains the RPC-invoking message (in a buffer of size "size"), a set of futures for the results, and a set of promises for the results.
Definition at line 100 of file remote_invocable.hpp.
| Class Members | ||
|---|---|---|
| char * | buf | |
| PendingResults< Ret > & | pending | |
| QueryResults< Ret > | results | |
| size_t | size | |
| struct derecho::rpc::wrapped |
This matches uses of wrapped<> where the second argument is not a function, and does nothing.
Definition at line 371 of file remote_invocable.hpp.
| struct derecho::rpc::wrapped< Tag, std::function< Ret(Arguments...)> > |
Template that pairs a FunctionTag with a function pointer, thus "naming" the function with a tag (ID) that is a compile-time value.
In practice, it has two template parameters, where the second one matches std::function<Ret(Args...)>, but the two types in the std::function must each be written as a separate template parameter.
Definition at line 381 of file remote_invocable.hpp.
| Class Members | ||
|---|---|---|
| fun_t | ||
| Class Members | ||
|---|---|---|
| fun_t | fun | |
| struct derecho::rpc::RemoteInvocablePairs |
Definition at line 481 of file remote_invocable.hpp.
| struct derecho::rpc::RemoteInvokers |
Technically, RemoteInvokers is a specialization of this template, but it's the only specialization, so this template does nothing.
Definition at line 537 of file remote_invocable.hpp.
| #define MAX_CONCURRENT_RPCS_PER_INVOKER (4096) |
Definition at line 65 of file remote_invocable.hpp.
1.8.13