26#include <flow/async/single_thread_task_loop.hpp>
27#include <boost/noncopyable.hpp>
153 public flow::log::Log_context,
154 private boost::noncopyable
163 template<
typename Msg_resource>
167 template<
typename Msg_resource>
264 const std::string&
nickname()
const;
395 flow::async::Task_asio_err_sz&& on_done_func);
407 flow::async::Task_asio_err_sz&& on_done_func);
420 template<
typename Msg_resource>
422 flow::async::Task_asio_err&& on_done_func);
435 template<
typename Msg_resource>
437 flow::async::Task_asio_err&& on_done_func);
558template<
typename Msg_resource>
560 bool assume_would_block,
561 flow::async::Task_asio_err&& on_done_func)
565 (batch, assume_would_block, std::move(on_done_func)),
570template<
typename Msg_resource>
572 bool assume_would_block,
573 flow::async::Task_asio_err&& on_done_func)
577 (batch, assume_would_block, std::move(on_done_func)),
Internal, non-movable pImpl-lite implementation of Native_socket_stream class.
bool sync_connect(const Shared_name &absolute_name, Error_code *err_code)
See Native_socket_stream counterpart.
void native_handle_receive_stats_reset()
See Native_socket_stream counterpart.
const std::string & nickname() const
See Native_socket_stream counterpart.
bool send_native_handle(Native_handle hndl_or_null, const util::Blob_const &meta_blob, Error_code *err_code)
See Native_socket_stream counterpart.
Blob_rcv_stats native_handle_receive_stats() const
See Native_socket_stream counterpart.
const util::Process_credentials & remote_peer_process_credentials(Error_code *err_code) const
See Native_socket_stream counterpart.
Blob_snd_stats blob_send_stats() const
See Native_socket_stream counterpart.
bool auto_ping(util::Fine_duration period)
See Native_socket_stream counterpart.
void blob_send_stats_reset()
See Native_socket_stream counterpart.
sync_io::Native_socket_stream::template Native_handle_batch_in< Msg_resource > Native_handle_batch_in
See Native_socket_stream counterpart.
Blob_rcv_stats blob_receive_stats() const
See Native_socket_stream counterpart.
bool idle_timer_run(util::Fine_duration timeout)
See Native_socket_stream counterpart.
typename sync_io::Native_socket_stream::template Blob_batch_in< Msg_resource > Blob_batch_in
See Native_socket_stream counterpart / transport::Blob_receiver::Blob_batch_in.
sync_io::Native_socket_stream m_sync_io
The core Native_socket_stream engine, implementing the sync_io pattern (see util::sync_io doc header)...
bool async_end_sending(flow::async::Task_asio_err &&on_done_func)
See Native_socket_stream counterpart.
void blob_receive_stats_reset()
See Native_socket_stream counterpart.
bool async_receive_blob_batch(Blob_batch_in< Msg_resource > *batch, bool assume_would_block, flow::async::Task_asio_err &&on_done_func)
See Native_socket_stream counterpart.
std::optional< sync_io::Async_adapter_sender< decltype(m_sync_io)> > m_snd_sync_io_adapter
Null until PEER state, this handles ~all send-ops logic in that state.
bool async_receive_native_handle_batch(Native_handle_batch_in< Msg_resource > *batch, bool assume_would_block, flow::async::Task_asio_err &&on_done_func)
See Native_socket_stream counterpart.
size_t receive_blob_max_size() const
See Native_socket_stream counterpart.
Blob_snd_stats native_handle_send_stats() const
See Native_socket_stream counterpart.
size_t send_blob_max_size() const
See Native_socket_stream counterpart.
void native_handle_send_stats_reset()
See Native_socket_stream counterpart.
std::optional< sync_io::Async_adapter_receiver< decltype(m_sync_io)> > m_rcv_sync_io_adapter
Null until PEER state, this handles ~all receive-ops logic in that state.
size_t receive_meta_blob_max_size() const
See Native_socket_stream counterpart.
Native_socket_stream_impl(flow::log::Logger *logger_ptr, util::String_view nickname_str)
See Native_socket_stream counterpart.
bool end_sending()
See Native_socket_stream counterpart.
bool async_receive_blob(const util::Blob_mutable &target_blob, flow::async::Task_asio_err_sz &&on_done_func)
See Native_socket_stream counterpart.
bool async_receive_native_handle(Native_handle *target_hndl, const util::Blob_mutable &target_meta_blob, flow::async::Task_asio_err_sz &&on_done_func)
See Native_socket_stream counterpart.
~Native_socket_stream_impl()
See Native_socket_stream counterpart.
bool send_blob(const util::Blob_const &blob, Error_code *err_code)
See Native_socket_stream counterpart.
size_t send_meta_blob_max_size() const
See Native_socket_stream counterpart.
flow::async::Single_thread_task_loop m_worker
Single-thread worker pool for all internal async work in both directions.
Type that adapts a given PEER-state sync_io::Native_handle_receiver or sync_io::Blob_receiver core in...
Type that adapts a given PEER-state sync_io::Native_handle_sender or sync_io::Blob_sender core into t...
Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...
A process's credentials (PID, UID, GID as of this writing).
String-wrapping abstraction representing a name uniquely distinguishing a kernel-persistent entity fr...
Flow-IPC module providing transmission of structured messages and/or low-level blobs (and more) betwe...
boost::asio::mutable_buffer Blob_mutable
Short-hand for a mutable blob somewhere in memory, stored as exactly a void* and a size_t.
flow::Fine_duration Fine_duration
Short-hand for Flow's Fine_duration.
boost::asio::const_buffer Blob_const
Short-hand for an immutable blob somewhere in memory, stored as exactly a void const * and a size_t.
flow::util::String_view String_view
Short-hand for Flow's String_view.
flow::Error_code Error_code
Short-hand for flow::Error_code which is very common.
Cumulative stats from the incoming-direction (receive) pipe of a Blob_receiver or Native_handle_recei...
Cumulative stats from the outgoing-direction (send) pipe of a Blob_sender or Native_handle_sender con...
A monolayer-thin wrapper around a native handle, a/k/a descriptor a/k/a FD.