23#include <flow/util/stat/stat_fwd.hpp>
61class Native_socket_stream_cfg;
62class Native_socket_stream;
63class Native_socket_stream_acceptor;
64template<
typename Msg_resource_t>
65class Native_socket_stream_msg_batch_in;
68template<
typename Persistent_mq_handle>
69class Blob_stream_mq_sender;
70template<
typename Persistent_mq_handle>
71class Blob_stream_mq_receiver;
73template<
typename Blob_sender_t,
typename Blob_receiver_t,
74 typename Native_handle_sender_t,
typename Native_handle_receiver_t>
77class Socket_stream_channel;
79class Socket_stream_channel_of_blobs;
81 typename Persistent_mq_handle,
82 typename Native_handle_sender_t = Null_peer,
typename Native_handle_receiver_t = Null_peer>
85 typename Persistent_mq_handle>
86class Mqs_socket_stream_channel;
87class Protocol_negotiator;
88template<
typename Msg_resource_t,
bool NO_HNDLS = true>
89class Generic_msg_batch_in;
187template<
typename Msg_resource_t>
216template<
typename Persistent_mq_handle>
232template<
typename Persistent_mq_handle>
272template<
typename Blob_sender_t,
typename Blob_receiver_t,
273 typename Native_handle_sender_t,
typename Native_handle_receiver_t>
275 const Channel<Blob_sender_t, Blob_receiver_t,
276 Native_handle_sender_t, Native_handle_receiver_t>& val);
305template<
typename Msg_resource_t,
bool NO_HNDLS>
342struct Blob_snd_stats;
343struct Blob_rcv_stats;
363template<
typename Visitor>
364void declare_stats(
const flow::util::stat::Stat_name& name_prefix,
365 const Blob_snd_stats* src_stats, Blob_snd_stats* target_stats,
399template<
typename Stats_t>
418template<
typename Visitor>
419void declare_stats(
const flow::util::stat::Stat_name& name_prefix,
420 const Blob_rcv_stats* src_stats, Blob_rcv_stats* target_stats,
454template<
typename Stats_t>
471class Native_socket_stream;
472class Native_socket_stream_acceptor;
473template<
typename Persistent_mq_handle>
474class Blob_stream_mq_sender;
475template<
typename Persistent_mq_handle>
476class Blob_stream_mq_receiver;
655template<
bool NO_HNDLS,
typename Batch,
typename Task_err,
typename Async_rcv_impl_func>
657 Batch* batch,
bool assume_would_block,
658 Error_code* sync_err_code, Task_err&& on_done_func,
659 Async_rcv_impl_func&& async_rcv_impl_func);
700template<
typename Persistent_mq_handle>
716template<
typename Persistent_mq_handle>
Implements the Persistent_mq_handle concept by thinly wrapping bipc::message_queue,...
Implements Blob_receiver concept by using an adopted Persistent_mq_handle MQ handle to an MQ (message...
Implements Blob_sender concept by using an adopted Persistent_mq_handle MQ handle to an MQ (message q...
Peer to a bundle of 1-2 full-duplex pipe(s), one for transmitting unstructured binary blobs; the othe...
Straightforward Msg_batch_in concept implementation (as taken by API {Blob|Native_handle}_receiver::a...
A Channel with at least a blobs pipe consisting of two MQs of type Persistent_mq_handle (template arg...
A Channel with a blobs pipe consisting of 2 MQs of type Persistent_mq_handle (template arg); and a ha...
A server object that binds to a Shared_name and listens for incoming Native_socket_stream connect att...
Msg_batch_in concept implementation for at least sync_io::Native_socket_stream (as taken by APIs Nati...
Implements both Native_handle_sender and Native_handle_receiver concepts by using a Unix domain socke...
Dummy type for use as a template param to Channel when either the blobs pipe or handles pipe is disab...
Implements the Persistent_mq_handle concept by wrapping the POSIX message queue API (see man mq_overv...
Implements sync_io::Blob_receiver concept by using an adopted Persistent_mq_handle MQ handle to an MQ...
Implements sync_io::Blob_sender concept by using an adopted Persistent_mq_handle MQ handle to an MQ (...
sync_io-pattern counterpart to async-I/O-pattern transport::Native_socket_stream_acceptor.
Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...
String-wrapping abstraction representing a name uniquely distinguishing a kernel-persistent entity fr...
Stats-related sub-namespace, for ADL segregation and general organization.
const Blob_rcv_stats & blob_rcv_stats(const Blob_rcv_stats &stats)
Maps a stats struct type to its core Blob_rcv_stats; identity for Blob_rcv_stats itself.
void declare_stats(const flow::util::stat::Stat_name &name_prefix, const Blob_snd_stats *src_stats, Blob_snd_stats *target_stats, Visitor &&visitor)
Declares the stats for Blob_snd_stats.
Blob_snd_stats & blob_snd_stats_mutable(Stats_t &stats)
Non-const wrapper around blob_snd_stats().
const Blob_snd_stats & blob_snd_stats(const Blob_snd_stats &stats)
Maps a stats struct type to its core Blob_snd_stats; identity for Blob_snd_stats itself.
Blob_rcv_stats & blob_rcv_stats_mutable(Stats_t &stats)
Non-const wrapper around blob_rcv_stats().
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...
sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.
std::ostream & operator<<(std::ostream &os, const Native_socket_stream_impl &val)
Prints string representation of the given Native_socket_stream_impl to the given ostream.
void async_receive_batch_emulation(flow::log::Logger *logger_ptr, Batch *batch, bool assume_would_block, Error_code *sync_err_code, Task_err &&on_done_func, Async_rcv_impl_func &&async_rcv_impl_func)
Implements {Native_handle|Blob}_receiver::async_receive_*_batch() by emulating batch-receiving as a s...
Flow-IPC module providing transmission of structured messages and/or low-level blobs (and more) betwe...
std::ostream & operator<<(std::ostream &os, const Generic_msg_batch_in< Msg_resource_t, NO_HNDLS > &val)
Prints string representation of the given Generic_msg_batch_in to the given ostream.
util::Shared_name Shared_name
Convenience alias for the commonly used type util::Shared_name.
util::Native_handle Native_handle
Convenience alias for the commonly used type util::Native_handle.
void swap(Bipc_mq_handle &val1, Bipc_mq_handle &val2)
Implements Persistent_mq_handle related concept: Swaps two objects.
flow::Error_code Error_code
Short-hand for flow::Error_code which is very common.
A monolayer-thin wrapper around a native handle, a/k/a descriptor a/k/a FD.