xdrpp
RFC4506 XDR compiler and message library
Classes | Namespaces | Typedefs | Functions
server.h File Reference

Classes for implementing RPC servers. More...

#include <iostream>
#include <xdrpp/marshal.h>
#include <xdrpp/printer.h>
#include <xdrpp/msgsock.h>
#include <xdrpp/rpcbind.h>
#include <xdrpp/rpc_msg.hh>
#include <map>
Include dependency graph for server.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  xdr::rpc_success_hdr
 Structure that gets marshalled as an RPC success header. More...
 
struct  xdr::xdr_traits< rpc_success_hdr >
 
struct  xdr::transparent_ptr< T >
 A pointer, but that gets marshalled as the underlying object and can convert to the underlying type. More...
 
struct  xdr::xdr_traits< transparent_ptr< T > >
 
struct  xdr::session_allocator< S >
 Trivial session allocator that just calls new and delete. More...
 
struct  xdr::session_allocator< void >
 
struct  xdr::service_base
 
class  xdr::rpc_server_base
 
class  xdr::rpc_tcp_listener_common
 Listens for connections on a TCP socket (optionally registering the socket with rpcbind), and then serves one or more program/version interfaces to accepted connections. More...
 
class  xdr::generic_rpc_tcp_listener< ServiceType, Session, SessionAllocator >
 

Namespaces

 xdr
 Most of the xdrpp library is encapsulated in the xdr namespace.
 

Typedefs

template<typename T >
using xdr::wrap_transparent_ptr = typename detail::wrap_transparent_ptr_helper< T >::type
 Wrap xdr::transparent_ptr around each type in a tuple to generate a new tuple type. More...
 

Functions

msg_ptr xdr::rpc_accepted_error_msg (uint32_t xid, accept_stat stat)
 
msg_ptr xdr::rpc_prog_mismatch_msg (uint32_t xid, uint32_t low, uint32_t high)
 
msg_ptr xdr::rpc_auth_error_msg (uint32_t xid, auth_stat stat)
 
msg_ptr xdr::rpc_rpc_mismatch_msg (uint32_t xid)
 
template<typename Archive , typename T >
void xdr::archive (Archive &ar, const transparent_ptr< T > &t, const char *name=nullptr)
 
template<typename P , typename C , typename S , typename T , typename... Rest>
auto xdr::dispatch_with_session (C &&c, S *s, T &&t, Rest &&...rest) -> decltype(detail::dispatch_session_helper< P, C, T >::dispatch(c, s, std::forward< T >(t), std::forward< Rest >(rest)...))
 Call P::dispatch with a session pointer (unless the session type S is void, in which case the argument is omitted) and with a tuple that should be unpacked into multiple arguments. More...
 

Detailed Description

Classes for implementing RPC servers.

We use the following terminology: The term service denotes a class that responds to RPCs for a particular program/version combination. A server is a collection of services. A listener attaches incoming connections from clients to a particular server. And a session is state (if needed) associated with a particular client connection.

Definition in file server.h.