30#include <flow/util/blob.hpp>
31#include <flow/util/stat/stat_fwd.hpp>
32#include <flow/util/stat/stat_set_list.hpp>
33#include <capnp/message.h>
34#include <boost/uuid/uuid.hpp>
57template<
typename Body_t,
typename Builder_config_t>
59template<
typename Body_t,
typename Reader_config_t>
61class Capped_sz_capnp_message_builder;
62class Capped_sz_capnp_message_reader;
64template<
typename Owned_channel_t,
typename Msg_body_t,
65 typename Builder_config_t,
typename Reader_config_t>
67class Heap_fixed_builder;
72template<
typename Capnp_reader>
73struct Ostreamable_capnp_brief;
74template<
typename Capnp_reader>
75struct Ostreamable_capnp_full;
260template<
typename Capnp_reader>
272template<
typename Capnp_reader>
292template<
typename Capnp_reader>
311template<
typename Capnp_reader>
325template<
typename Owned_channel_t,
typename Msg_body_t,
326 typename Builder_config_t,
typename Reader_config_t>
328 const Channel<Owned_channel_t, Msg_body_t,
329 Builder_config_t, Reader_config_t>& val);
343template<
typename Body_t,
typename Struct_builder_t>
357template<
typename Body_t,
typename Reader_config_t>
396struct Channel_sync_req_stats;
400struct Serializer_stats;
401template<
typename Cfg>
402struct Serializer_stats_p;
403struct Heap_serializer_stats_cfg;
479template<
typename Visitor>
480void declare_stats(
const flow::util::stat::Stat_name& name_prefix,
500template<
typename Visitor>
501void declare_stats(
const flow::util::stat::Stat_name& name_prefix,
521template<
typename Visitor>
522void declare_stats(
const flow::util::stat::Stat_name& name_prefix,
541template<
typename Owned_channel_t,
typename Msg_body_t,
542 typename Builder_config_t,
typename Reader_config_t>
558template<
typename Owned_channel_t,
typename Msg_body_t,
559 typename Builder_config_t,
typename Reader_config_t>
561 const Channel<Owned_channel_t, Msg_body_t,
562 Builder_config_t, Reader_config_t>& val);
594template<
typename Visitor>
595void declare_stats(
const flow::util::stat::Stat_name& name_prefix,
Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...
typename Sync_io_obj::Msg_out Msg_out
Encapsulation of any out-message payload sent or meant to be sent via send() (et al) by a *this of th...
std::ostream & operator<<(std::ostream &os, const Channel< Owned_channel_t, Msg_body_t, Builder_config_t, Reader_config_t > &val)
Prints string representation of the given struc::Channel to the given ostream.
typename Sync_io_obj::Msg_in Msg_in
Encapsulation of any in-message instance received by a *this of this type.
~Simplest possible impl of Struct_builder concept that represents the capnp payload directly in heap ...
Implements Struct_reader concept by straightforwardly interpreting a serialization by Heap_fixed_buil...
sync_io-pattern counterpart to async-I/O-pattern transport::struc::Channel.
Small group of miscellaneous utilities to ease work with capnp (Cap'n Proto), joining its capnp names...
std::ostream & operator<<(std::ostream &os, const Text::Reader &val)
Prints string representation of the given capnp::Text::Reader to the given ostream.
struc::Channel< Channel_obj, Message_body, Builder::Config, Reader::Config > Channel
Convenience alias: Use this when constructing a struc::Channel with tag Channel_base::S_SERIALIZE_VIA...
Reader< ipc::shm::classic::Pool_arena > Reader
Convenience alias: transport::struc::shm::Reader that works with boost.ipc.shm pools from ipc::shm::c...
Stats-related sub-namespace, for ADL segregation and general organization.
flow::util::stat::Global_stats< Pure_heap_tag, Heap_serializer_stats, 1 > Heap_serializer_global_stats
Pure-heap (non-SHM) cumulative-Heap_serializer_stats singleton: convenience alias for the default flo...
std::ostream & operator<<(std::ostream &os, const Serializer_stats &val)
Prints string representation – flow::util::stat::print() output – of the given Serializer_stats (or v...
Serializer_stats_p< Heap_serializer_stats_cfg > Heap_serializer_stats
Default-constructible Serializer_stats variant for pure-heap user messages. See Serializer_stats doc ...
void declare_stats(const flow::util::stat::Stat_name &name_prefix, const Channel_sync_req_stats *src_stats, Channel_sync_req_stats *target_stats, Visitor &&visitor)
Declares the stats for Channel_sync_req_stats.
void heap_serializer_info_dump(Heap_serializer_stats *target_stats)
Grabs a snapshot of the process-global pure-heap serializer stats – the Heap_serializer_global_stats ...
Stats-related sub-namespace, for ADL segregation and general organization.
void declare_stats(const flow::util::stat::Stat_name &name_prefix, const Channel_stats *src_stats, Channel_stats *target_stats, Visitor &&visitor)
Declares the stats for Channel_stats.
sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport::st...
std::ostream & operator<<(std::ostream &os, const Channel< Owned_channel_t, Msg_body_t, Builder_config_t, Reader_config_t > &val)
Prints string representation of the given struc::sync_io::Channel to the given ostream.
Sub-module of Flow-IPC module ipc::transport providing transmission of structured messages specifical...
Ostreamable_capnp_brief< Capnp_reader > ostreamable_capnp_brief(const Capnp_reader &capnp_reader)
Convenience function that returns an object passable to ostream<< to print a one-line/potentially-tru...
static constexpr size_t BUILDER_CONFIG_FRAME_PREFIX_SZ_VIA_STRUC_CHANNEL
struc::Channel (and struc::sync_io::Channel) requires, for internal purposes, that any Msg_out transm...
Ostreamable_capnp_full< Capnp_reader > ostreamable_capnp_full(const Capnp_reader &capnp_reader)
Convenience function that returns an object passable to ostream<< to print a multi-line/pretty-printe...
std::vector< Split_segment > Split_segments
A simple data structure describing the segments (if any) in a Segment_bufs (or similar) structure whi...
boost::uuids::uuid Session_token
A type used by struc::Channel for internal safety/security/auth needs.
::capnp::MessageReader Capnp_msg_reader_interface
Alias for capnp's MessageReader interface. Rationale: as part of our API, we use our identifier style...
std::vector< flow::util::Blob_sans_log_context * > Segment_ptrs
Sequence of 1+ segment descriptions, each representing a live writable segment (of a capnp serializat...
const Null_session NULL_SESSION
The only necessary value of empty-type Null_session.
const Session_token NULL_SESSION_TOKEN
A value for which .is_nil() is true.
std::ostream & operator<<(std::ostream &os, const Heap_fixed_builder &val)
Prints string representation of the given Heap_fixed_builder to the given ostream.
flow::util::Blob_sans_log_context Segment_blob_in
Short-hand for a high-performance blob structure that represents an IPC-incoming (sub-)segment 1+ of ...
std::vector< util::Blob_const > Segment_bufs
Simpler cousin of Segment_ptrs, this represents the IPC-transmissible representation of a capnp seria...
uint64_t msg_id_t
Message ID uniquely identifying outgoing message (Msg_out, among all other Msg_outs),...
Value for Struct_builder::Session when no extra information is needed when serializing Struct_builder...
Proxy object referring to a capnp Reader for straightforward output via overloaded ostream<<: one-lin...
Proxy object referring to a capnp Reader for straightforward output via overloaded ostream<<: multi-l...
Cumulative stats from a struc::Channel, composing the underlying sync_io::stat::Channel_stats with st...
Stats specific to Channel::sync_request() – the blocking synchronous request-response API available o...
Templated no-data, non-polymorphic subclass of Serializer_stats whose precipitating use-case is to sa...
Cumulative stats describing capnp-driven memory-allocation activities on behalf of a struc::Struct_bu...
Cumulative stats from a struc::sync_io::Channel, covering both send and receive directions as well as...