Flow-IPC 3.0.0
Flow-IPC project: Full implementation reference.
Classes | Namespaces | Functions
asio_local_stream_socket.hpp File Reference
#include "ipc/transport/detail/asio_local_stream_socket.hpp"
#include "ipc/transport/error.hpp"
#include "ipc/util/process_credentials.hpp"
#include "ipc/util/util_fwd.hpp"
#include <flow/error/error.hpp>
#include <flow/log/log.hpp>
#include <flow/common.hpp>
#include <boost/array.hpp>
#include <boost/io/ios_state.hpp>
#include <boost/noncopyable.hpp>
#include <type_traits>
#include <algorithm>
#include <stdexcept>
#include <cstring>
#include <cassert>
#include <cerrno>
#include <cstdlib>
#include <ostream>
#include <utility>
#include <vector>
#include <sys/types.h>
#include <sys/socket.h>

Go to the source code of this file.

Classes

class  ipc::transport::asio_local_stream_socket::Msg_batch_in< Mutable_buffer_sequence_t, Msg_resource_t >
 Similarly to the transport::Msg_batch_in concept (as taken by API {Blob|Native_handle}_receiver::async_receive_*_batch() concept) implements persistent-across-reads batched-receipt of messages over an asio_local_stream_socket::Peer_socket<Protocol_pkt_stream>. More...
 
struct  ipc::transport::asio_local_stream_socket::Msg_batch_in< Mutable_buffer_sequence_t, Msg_resource_t >::Mdt_per_payload
 Per-batch-slot information beyond what is stored in the corresponding slot's native mmsghdr m_mmsg_hdrs[idx]. More...
 
class  ipc::transport::asio_local_stream_socket::Opt_peer_process_credentials
 Gettable (read-only) socket option for use with asio_local_stream_socket::Peer_socket .get_option() in order to get the connected opposing peer process's credentials (PID/UID/GID/etc.). 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::asio_local_stream_socket
 Additional (versus boost.asio) APIs for advanced work with local (Unix domain) stream and connected-datagram sockets including transmission of native handles through them; and peer process credentials acquisition.
 

Functions

template<typename Mutable_buffer_sequence_t , typename Msg_resource_t >
std::ostream & ipc::transport::asio_local_stream_socket::operator<< (std::ostream &os, const Msg_batch_in< Mutable_buffer_sequence_t, Msg_resource_t > &val)
 Serializes a Msg_batch_in to a standard output stream. More...
 
template<typename Protocol , typename Const_buffer_sequence >
size_t ipc::transport::asio_local_stream_socket::nb_write_some_with_native_handle (flow::log::Logger *logger_ptr, Peer_socket< Protocol > *peer_socket, Native_handle payload_hndl, const Const_buffer_sequence &payload_blob, Error_code *err_code)
 boost.asio extension similar to peer_socket->non_blocking(true); auto n = peer_socket->send(payload_blob) with the added capability of accompanying the Blob_const payload_blob with a native handle to be transmitted to the opposing peer. More...
 
template<typename Protocol , typename Mutable_buffer_sequence >
size_t ipc::transport::asio_local_stream_socket::nb_read_some_with_native_handle (flow::log::Logger *logger_ptr, Peer_socket< Protocol > *peer_socket, Native_handle *target_payload_hndl, const Mutable_buffer_sequence &target_payload_blob, Error_code *err_code, int message_flags=0)
 boost.asio extension similar to peer_socket->non_blocking(true); auto n = peer_socket->receive(target_payload_blob) with the added capability of reading (from opposing peer) not only target_payload_blob but an optionally accompanying native handle. More...