rpc.hpp 0.8.1
Simple RPC Header-Only Library
Classes | Namespaces | Macros | Enumerations
rpc.hpp File Reference

Header-only library for serialized RPC usage. More...

#include <cassert>
#include <cstddef>
#include <optional>
#include <stdexcept>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
#include <functional>
#include <unordered_map>

Go to the source code of this file.

Classes

class  rpc_hpp::rpc_exception
 
class  rpc_hpp::function_not_found
 
class  rpc_hpp::remote_exec_error
 
class  rpc_hpp::serialization_error
 
class  rpc_hpp::deserialization_error
 
class  rpc_hpp::function_mismatch
 
class  rpc_hpp::client_send_error
 
class  rpc_hpp::client_receive_error
 
class  rpc_hpp::server_send_error
 
class  rpc_hpp::server_receive_error
 
class  rpc_hpp::server::server_interface< Serial >
 Class defining an interface for serving functions via RPC. More...
 
class  rpc_hpp::client::client_interface< Serial >
 Class defining an interface for calling into an RPC server or module. More...
 

Namespaces

namespace  rpc_hpp
 Top-level namespace for rpc.hpp classes and functions.
 
namespace  rpc_hpp::detail
 Namespace for implementation details, should not be used outside of the library.
 
namespace  rpc_hpp::server
 Namespace containing functions and classes only relevant to "server-side" implentations.
 
namespace  rpc_hpp::client
 Namespace containing functions and classes only relevant to "client-side" implentations.
 

Macros

#define RPC_HPP_ENABLE_SERVER_CACHE
 Enables server-side caching abilities.
 
#define RPC_HPP_CLIENT_IMPL
 Indicates that rpc.hpp is being consumed by a client translation unit.
 
#define RPC_HPP_MODULE_IMPL
 Indicates that rpc.hpp is being consumed by a module (dynamically loaded .dll/.so) translation unit.
 
#define RPC_HPP_SERVER_IMPL
 Indicates that rpc.hpp is being consumed by a server translation unit.
 
#define RPC_HEADER_FUNC(RETURN, FUNCNAME, ...)   extern RETURN FUNCNAME(__VA_ARGS__)
 
#define RPC_HPP_PRECONDITION(EXPR)   assert(EXPR)
 
#define RPC_HPP_POSTCONDITION(EXPR)   assert(EXPR)
 
#define RPC_HPP_INLINE
 
#define call_header_func(FUNCNAME, ...)   call_header_func_impl(FUNCNAME, # FUNCNAME, __VA_ARGS__)
 

Enumerations

enum class  exception_type {
  none , func_not_found , remote_exec , serialization ,
  deserialization , signature_mismatch , client_send , client_receive ,
  server_send , server_receive
}
 

Detailed Description

Header-only library for serialized RPC usage.

Author
Jackson Harmer (jharm.nosp@m.er95.nosp@m.@gmai.nosp@m.l.co.nosp@m.m)
Version
0.8.1

Copyright (c) 2020-2022, Jackson Harmer All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.