Derecho  0.9
Distributed systems toolkit for RDMA
Public Member Functions | Private Attributes | List of all members
derecho::ExternalCaller< T > Class Template Reference

#include <rpc_manager.hpp>

Collaboration diagram for derecho::ExternalCaller< T >:
Collaboration graph
[legend]

Public Member Functions

 ExternalCaller (uint32_t type_id, node_id_t nid, subgroup_id_t subgroup_id, rpc::RPCManager &group_rpc_manager)
 
 ExternalCaller (ExternalCaller &&)=default
 
 ExternalCaller (const ExternalCaller &)=delete
 
template<rpc::FunctionTag tag, typename... Args>
auto p2p_send (node_id_t dest_node, Args &&... args)
 Sends a peer-to-peer message to a single member of the subgroup that this ExternalCaller<T> connects to, invoking the RPC function identified by the FunctionTag template parameter. More...
 
bool is_valid () const
 

Private Attributes

const node_id_t node_id
 The ID of this node. More...
 
subgroup_id_t subgroup_id
 The internally-generated subgroup ID of the subgroup that this ExternalCaller will contact. More...
 
rpc::RPCManagergroup_rpc_manager
 Reference to the RPCManager for the Group this ExternalCaller is in. More...
 
std::unique_ptr< rpc::RemoteInvokerFor< T > > wrapped_this
 The actual implementation of ExternalCaller, which has lots of ugly template parameters. More...
 

Detailed Description

template<typename T>
class derecho::ExternalCaller< T >

Definition at line 31 of file rpc_manager.hpp.

Constructor & Destructor Documentation

◆ ExternalCaller() [1/3]

template<typename T >
derecho::ExternalCaller< T >::ExternalCaller ( uint32_t  type_id,
node_id_t  nid,
subgroup_id_t  subgroup_id,
rpc::RPCManager group_rpc_manager 
)

Definition at line 205 of file replicated_impl.hpp.

◆ ExternalCaller() [2/3]

template<typename T>
derecho::ExternalCaller< T >::ExternalCaller ( ExternalCaller< T > &&  )
default

◆ ExternalCaller() [3/3]

template<typename T>
derecho::ExternalCaller< T >::ExternalCaller ( const ExternalCaller< T > &  )
delete

Member Function Documentation

◆ is_valid()

template<typename T>
bool derecho::ExternalCaller< T >::is_valid ( ) const
inline

Definition at line 348 of file replicated.hpp.

◆ p2p_send()

template<typename T >
template<rpc::FunctionTag tag, typename... Args>
auto derecho::ExternalCaller< T >::p2p_send ( node_id_t  dest_node,
Args &&...  args 
)

Sends a peer-to-peer message to a single member of the subgroup that this ExternalCaller<T> connects to, invoking the RPC function identified by the FunctionTag template parameter.

Parameters
dest_nodeThe ID of the node that the P2P message should be sent to
argsThe arguments to the RPC function being invoked
Returns
An instance of rpc::QueryResults<Ret>, where Ret is the return type of the RPC function being invoked

Definition at line 217 of file replicated_impl.hpp.

Member Data Documentation

◆ group_rpc_manager

template<typename T>
rpc::RPCManager& derecho::ExternalCaller< T >::group_rpc_manager
private

Reference to the RPCManager for the Group this ExternalCaller is in.

Definition at line 326 of file replicated.hpp.

◆ node_id

template<typename T>
const node_id_t derecho::ExternalCaller< T >::node_id
private

The ID of this node.

Definition at line 322 of file replicated.hpp.

◆ subgroup_id

template<typename T>
subgroup_id_t derecho::ExternalCaller< T >::subgroup_id
private

The internally-generated subgroup ID of the subgroup that this ExternalCaller will contact.

Definition at line 324 of file replicated.hpp.

◆ wrapped_this

template<typename T>
std::unique_ptr<rpc::RemoteInvokerFor<T> > derecho::ExternalCaller< T >::wrapped_this
private

The actual implementation of ExternalCaller, which has lots of ugly template parameters.

Definition at line 328 of file replicated.hpp.


The documentation for this class was generated from the following files: