Flow-IPC 3.0.0
Flow-IPC project: Full implementation reference.
Classes | Namespaces | Typedefs | Functions
session_vat_network.hpp File Reference
#include "ipc/transport/struc/shm/rpc/rpc_fwd.hpp"
#include "ipc/transport/struc/shm/capnp_msg_builder.hpp"
#include "ipc/transport/struc/shm/serializer.hpp"
#include "ipc/transport/struc/shm/schema/detail/serialization.capnp.h"
#include "ipc/transport/struc/util.hpp"
#include "ipc/util/native_handle.hpp"
#include <boost/move/unique_ptr.hpp>
#include <boost/shared_ptr.hpp>
#include <capnp/any.h>
#include <capnp/rpc-twoparty.h>
#include <capnp/rpc.h>
#include <capnp/rpc.capnp.h>
#include <flow/log/log.hpp>
#include <optional>

Go to the source code of this file.

Classes

struct  ipc::transport::struc::shm::rpc::Session_vat_network_base
 Non-template base for Session_vat_network (constants, types, and what-not). More...
 
class  ipc::transport::struc::shm::rpc::Session_vat_network< Shm_lender_borrower_t, Shm_arena_t >
 The core class of Flow-IPC's zero-copyification-of-capnp-RPC module, Session_vat_network implements capnp::VatNetwork and can be accurately described as capnp::TwoPartyVatNetwork but with zero-copy performance. More...
 
struct  ipc::transport::struc::shm::rpc::Session_vat_network< Shm_lender_borrower_t, Shm_arena_t >::Fulfiller_disposer
 Disposer for Own<Rpc_conn> returned by connect() and accept() which (1) does not delete anything and (2) fulfills m_disconnect_promise once all such Owns have dropped their Rpc_conns. More...
 
class  ipc::transport::struc::shm::rpc::Session_vat_network< Shm_lender_borrower_t, Shm_arena_t >::Rpc_msg_out_impl
 Inner impl class in Session_vat_network, implementing capnp::OutgoingRpcMessage, which makes up roughly 50% of what Session_vat_network does on top of its contained TwoPartyVatNetwork. More...
 
class  ipc::transport::struc::shm::rpc::Session_vat_network< Shm_lender_borrower_t, Shm_arena_t >::Rpc_msg_in_impl
 Inner impl class in Session_vat_network, implementing capnp::IncomingRpcMessage, which makes up roughly 50% of what Session_vat_network does on top of its contained TwoPartyVatNetwork. More...
 

Namespaces

namespace  ipc
 Catch-all namespace for the Flow-IPC project: A library/API in modern C++17 providing high-performance communication between processes.
 
namespace  ipc::transport
 Flow-IPC module providing transmission of structured messages and/or low-level blobs (and more) between pairs of processes.
 
namespace  ipc::transport::struc
 Sub-module of Flow-IPC module ipc::transport providing transmission of structured messages specifically.
 
namespace  ipc::transport::struc::shm
 Segregates zero-copy/SHM implementations of concepts residing in parent namespace ipc::transport::struc proper – most notably the concepts ipc::transport::struc::Struct_builder and ipc::transport::struc::Struct_reader – and items related to them.
 
namespace  ipc::transport::struc::shm::rpc
 Provides Flow-IPC's integration with Cap'n Proto's Remote Procedure Call (RPC) layer, wherein one can perform all the cool, promise-pipelined, interface-and-callback-happy RPC provided by capnp-RPC – while enjoying the zero-copy performance provided by Flow-IPC's SHM features.
 

Typedefs

using ipc::transport::struc::shm::rpc::Rpc_conn = ::capnp::TwoPartyVatNetworkBase::Connection
 Flow-IPC-styled alias for Session_vat_network and TwoPartyVatNetwork's "connection," which is an interface for essentially an RPC-oriented stream of capnp messages – a relatively thin layer on top of the capnp::MessageStream interface. More...
 
using ipc::transport::struc::shm::rpc::Rpc_msg_out = ::capnp::OutgoingRpcMessage
 Flow-IPC-styled alias for an out-message sent by an Rpc_conn. More...
 
using ipc::transport::struc::shm::rpc::Rpc_msg_in = ::capnp::IncomingRpcMessage
 Flow-IPC-styled alias for an in-message received by an Rpc_conn. More...
 
using ipc::transport::struc::shm::rpc::Vat_id = ::capnp::rpc::twoparty::VatId
 Flow-IPC-styled alias for the node ID in a Session_vat_network or TwoPartyVatNetwork: namely an enumeration containing SERVER and CLIENT. More...
 
using ipc::transport::struc::shm::rpc::Rpc_system = ::capnp::RpcSystem< Vat_id >
 Concrete capnp::RpcSystem to be used with Session_vat_network or TwoPartyVatNetwork. More...
 

Functions

template<typename Shm_lender_borrower_t , typename Shm_arena_t >
std::ostream & ipc::transport::struc::shm::rpc::operator<< (std::ostream &os, const Session_vat_network< Shm_lender_borrower_t, Shm_arena_t > &val)
 Prints string representation of the given Session_vat_network to the given ostream. More...