29#include <boost/move/unique_ptr.hpp>
44template<
typename Base_t>
64 template<
typename... Args>
81template<
typename Base_t>
108 template<
typename... Ctor_args>
109 static auto ct_base(Ctor_args&&... ctor_args) -> boost::movelib::unique_ptr<Base>;
132 template<
typename... Args>
140 template<
typename... Args>
176template<
typename Base_t>
177template<
typename... Args>
180 m_base.emit_serialization(std::forward<Args>(args)...);
183template<
typename Base_t>
184template<
typename... Ctor_args>
188 using boost::movelib::unique_ptr;
191 return unique_ptr<Base>(
new Base(std::forward<Ctor_args>(ctor_args)...));
194template<
typename Base_t>
197 m_base.store_native_handle_or_null(std::move(native_handle_or_null));
200template<
typename Base_t>
203 return m_base.add_serialization_segment(std::move(blob));
206template<
typename Base_t>
207template<
typename... Args>
210 return m_base.deserialize_mdt(std::forward<Args>(args)...);
213template<
typename Base_t>
214template<
typename... Args>
217 m_base.deserialize_body(std::forward<Args>(args)...);
220template<
typename Base_t>
223 return m_base.id_or_none();
226template<
typename Base_t>
229 return m_base.originating_msg_id_or_none();
232template<
typename Base_t>
235 return m_base.internal_msg_body_root();
238template<
typename Base_t>
241 return m_base.session_token();
244template<
typename Base_t>
247 return m_base.mdt_root();
Sub-module of Flow-IPC module ipc::transport providing transmission of structured messages specifical...
boost::uuids::uuid Session_token
A type used by struc::Channel for internal safety/security/auth needs.
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 ...
uint64_t msg_id_t
Message ID uniquely identifying outgoing message (Msg_out, among all other Msg_outs),...
This is the friend facade of Msg_in that exposes private APIs hidden from public user by providing pu...
const Mdt_reader & mdt_root() const
See Base counterpart.
msg_id_t id_or_none() const
See Base counterpart.
Internal_msg_body_reader internal_msg_body_root() const
See Base counterpart.
void add_serialization_segment(Segment_blob_in &&blob)
See Base counterpart.
void store_native_handle_or_null(Native_handle &&native_handle_or_null)
See Base counterpart.
Base & m_base
Direct-initializable wrapped object. Access public API through this reference; private API via *this.
static auto ct_base(Ctor_args &&... ctor_args) -> boost::movelib::unique_ptr< Base >
Forwards to Base ctor(s).
Base_t Base
Short-hand for wrapped class.
size_t deserialize_mdt(Args &&... args)
See Base counterpart.
typename Base::Internal_msg_body_reader Internal_msg_body_reader
See Base counterpart.
msg_id_t originating_msg_id_or_none() const
See Base counterpart.
const Session_token & session_token() const
See Base counterpart.
typename Base::Mdt_reader Mdt_reader
See Base counterpart.
void deserialize_body(Args &&... args)
See Base counterpart.
This is the friend facade of Msg_out that exposes private APIs hidden from public user by providing p...
void emit_serialization(Args &&... args)
See Base counterpart.
Base & m_base
Direct-initializable wrapped object. Access public API through this reference; private API via *this.
Base_t Base
Short-hand for wrapped class.
A monolayer-thin wrapper around a native handle, a/k/a descriptor a/k/a FD.