Flow-IPC 2.0.0
Flow-IPC project: Full implementation reference.
Namespace List
Here is a list of all documented namespaces with brief descriptions:
[detail level 1234567]
 NcapnpSmall group of miscellaneous utilities to ease work with capnp (Cap'n Proto), joining its capnp namespace
 NipcCatch-all namespace for the Flow-IPC project: A library/API in modern C++17 providing high-performance communication between processes
 NbipcShort-hand for boost.interprocess namespace
 NfsShort-hand for filesystem namespace
 NsessionFlow-IPC module providing the broad lifecycle and shared-resource organization – via the session concept – in such a way as to make it possible for a given pair of processes A and B to set up ipc::transport structured- or unstructured-message channels for general IPC, as well as to share data in SHared Memory (SHM)
 NerrorNamespace containing the ipc::session module's extension of boost.system error conventions, so that that API can return codes/messages from within its own new set of error codes/messages
 NshmIpc::session sub-namespace that groups together facilities for SHM-backed sessions, particularly augmenting Client_session, Server_session, and Session_server classes by providing SHM-backed zero-copy functionality
 Nsync_iosync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::session
 CAppA description of an application in this ipc::session inter-process communication universe
 CClient_appAn App that is used as a client in at least one client-server IPC split
 CClient_session_implInternal, non-movable pImpl-lite implementation of Client_session_mv class template
 CClient_session_mvImplements Session concept on the Client_app end: a Session_mv that first achieves PEER state by connecting to an opposing Session_server via Client_session_mv::sync_connect()
 CServer_appAn App that is used as a server in at least one client-server IPC split
 CServer_session_dtlThis is the data-less sub-class of Server_session or any more-advanced (e.g., SHM-capable) variant thereof that exposes protected APIs hidden from public user by providing public access to them; this is used internally by Session_server
 CServer_session_implInternal, non-movable pImpl-lite implementation of Server_session_mv class template
 CServer_session_mvImplements Session concept on the Server_app end: a Session that is emitted in almost-PEER state by local Session_server accepting a connection by an opposing Client_session_mv::sync_connect()
 CSessionA documentation-only concept defining the local side of an IPC conversation (session) with another entity (typically a separate process), also represented by a Session-implementing object, through which one can easily open IPC channels (ipc::transport::Channel), among other IPC features
 CSession_baseInternal type containing data and types common to internal types Server_session_impl and Client_session_impl which are the respective true cores of Server_session and Client_session respectively
 CSession_mvImplements the Session concept when it is in PEER state
 CSession_serverTo be instantiated typically once in a given process, an object of this type asynchronously listens for Client_app processes each of which wishes to establish a session with this server process; emits resulting Server_session objects locally
 CSession_server_implInternal class template comprising API/logic common to every Session_server variant, meant to be privately sub-classed and largely forwarded
 NshmModules for SHared Memory (SHM) support
 NclassicIpc::shm sub-module with the SHM-classic SHM-provider. See ipc::shm doc header for introduction
 NstlIpc::shm sub-module providing integration between STL-compliant components (including containers) and SHared Memory (SHM) providers
 CArena_to_borrower_allocator_arenaImplementation of Arena_to_borrower_allocator_arena_t
 CArena_to_borrower_allocator_arena< classic::Pool_arena >Implementation of Arena_to_borrower_allocator_arena_t for SHM-classic arenas
 NtransportFlow-IPC module providing transmission of structured messages and/or low-level blobs (and more) between pairs of processes
 Nasio_local_stream_socketAdditional (versus boost.asio) APIs for advanced work with local stream (Unix domain) sockets including transmission of native handles through such streams; and peer process credentials acquisition
 NerrorNamespace containing the ipc::transport module's extension of boost.system error conventions, so that that API can return codes/messages from within its own new set of error codes/messages
 NstrucSub-module of Flow-IPC module ipc::transport providing transmission of structured messages specifically
 Nsync_iosync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport
 CBipc_mq_handleImplements the Persistent_mq_handle concept by thinly wrapping bipc::message_queue, which is boost.interprocess's persistent message queue API
 CBlob_receiverA documentation-only concept defining the behavior of an object capable of reliably/in-order receiving of discrete messages, each containing a binary blob
 CBlob_senderA documentation-only concept defining the behavior of an object capable of reliably/in-order sending of discrete messages, each containing a binary blob
 CBlob_stream_mq_baseBase of Blob_stream_mq_sender and Blob_stream_mq_receiver containing certain static facilities, particularly for post-abort persistent resource cleanup
 CBlob_stream_mq_base_implInternal implementation of Blob_stream_mq_base class template; and common utilities used by Blob_stream_mq_sender_impl and Blob_stream_mq_receiver_impl (static items only as of this writing)
 CBlob_stream_mq_receiverImplements Blob_receiver concept by using an adopted Persistent_mq_handle MQ handle to an MQ (message queue) of that type, such as a POSIX or bipc MQ
 CBlob_stream_mq_receiver_implInternal, non-movable pImpl-lite implementation of Blob_stream_mq_receiver class template
 CBlob_stream_mq_senderImplements Blob_sender concept by using an adopted Persistent_mq_handle MQ handle to an MQ (message queue) of that type, such as a POSIX or bipc MQ
 CBlob_stream_mq_sender_implInternal, non-movable pImpl-lite implementation of Blob_stream_mq_sender class template
 CChannelPeer to a bundle of 1-2 full-duplex pipe(s), one for transmitting unstructured binary blobs; the other for transmitting native handle+blob combos; hence a Blob_sender + Blob_receiver, a Native_handle_sender + Native_handle_receiver, or both
 CMqs_channelA Channel with at least a blobs pipe consisting of two MQs of type Persistent_mq_handle (template arg 1); and possibly a handles pipe as governed by template args 2 and 3 which default to Null_peer (in which case the handles pipe is disabled)
 CMqs_socket_stream_channelA Channel with a blobs pipe consisting of 2 MQs of type Persistent_mq_handle (template arg); and a handles pipe over a Unix domain socket connection
 CNative_handle_receiverA documentation-only concept defining the behavior of an object capable of reliably/in-order receiving of discrete messages, each containing a native handle, a binary blob, or both
 CNative_handle_senderA documentation-only concept defining the behavior of an object capable of reliably/in-order sending of discrete messages, each containing a native handle, a binary blob, or both
 CNative_socket_streamImplements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented Unix domain socket, allowing high-performance but non-zero-copy transmission of discrete messages, each containing a native handle, a binary blob, or both
 CNative_socket_stream_acceptorA server object that binds to a Shared_name and listens for incoming Native_socket_stream connect attempts to that name; and yields connected-peer sync_io::Native_socket_stream objects, one per counterpart opposing *_connect()
 CNull_peerDummy type for use as a template param to Channel when either the blobs pipe or handles pipe is disabled; as well as to mark a given peer object as not having a counterpart form: a sync_io object shall have its using Sync_io_obj = Null_peer and coversely for async-I/O guys and their Async_io_objs
 CPersistent_mq_handleA documentation-only concept defining the behavior of an object representing a light-weight handle to a message queue, capable of receiving/sending discrete messages in non-blocking/blocking/timed-blocking fashion, as well as some support for polling/waiting and interruptions thereof
 CPosix_mq_handleImplements the Persistent_mq_handle concept by wrapping the POSIX message queue API (see man mq_overview)
 CProtocol_negotiatorA simple state machine that, assuming the opposide side of a comm pathway uses an equivalent state machine, helps negotiate the protocol version to speak over that pathway, given each side being capable of speaking a range of protocol versions and reporting the highest such version to the other side
 CSocket_stream_channelA Channel with a handles pipe only (no blobs pipe) that uses a Unix domain socket connection as the underlying transport for that pipe
 CSocket_stream_channel_of_blobsA Channel with a blobs pipe only (no handles pipe) that uses a Unix domain socket connection as the underlying transport for that pipe
 NutilFlow-IPC module containing miscellaneous general-use facilities that ubiquitously used by ~all Flow-IPC modules and/or do not fit into any other Flow-IPC module
 Nsync_ioContains common code, as well as important explanatory documentation in the following text, for the sync_io pattern used in ipc::transport and ipc::session to provide fine-tuned control over integrating asynchronous Flow-IPC activities into the user's event loop
 CDefault_init_allocatorAllocator adaptor (useful for, e.g., vector that skips zero-filling) that turns a value-initialization T() into a default-initialization for those types, namely PoDs, for which default-initialization is a no-op
 CNative_handleA monolayer-thin wrapper around a native handle, a/k/a descriptor a/k/a FD
 CProcess_credentialsA process's credentials (PID, UID, GID as of this writing)
 CShared_nameString-wrapping abstraction representing a name uniquely distinguishing a kernel-persistent entity from all others in the system, or a fragment of such a name
 CUse_counted_objectSimple counter that manually tracks utilization. It is not thread-safe