.. _program_listing_file_BackendAsyncmsg_SendMessageUnbufferedCopy.cpp: Program Listing for File SendMessageUnbufferedCopy.cpp ====================================================== |exhale_lsh| :ref:`Return to documentation for file ` (``BackendAsyncmsg/SendMessageUnbufferedCopy.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "SendMessageUnbufferedCopy.hpp" #include netio3::asyncmsg::SendMessageUnbufferedCopy::SendMessageUnbufferedCopy( const std::span data, const std::span header_data, const std::uint64_t key) : m_data{std::vector(data.begin(), data.end())}, m_header_data{header_data.begin(), header_data.end()}, m_key{key} {} netio3::asyncmsg::SendMessageUnbufferedCopy::SendMessageUnbufferedCopy( const std::span data, const std::span header_data, const std::uint64_t key) : m_data{[data]() { size_t total_size = std::accumulate(data.begin(), data.end(), 0ULL, [](size_t sum, const iovec& entry) { return sum + entry.iov_len; }); std::vector result; result.reserve(total_size); for (const auto& entry : data) { const auto* src = static_cast(entry.iov_base); result.insert(result.end(), src, src + entry.iov_len); } return result; }()}, m_header_data{header_data.begin(), header_data.end()}, m_key{key} {} void netio3::asyncmsg::SendMessageUnbufferedCopy::toBuffers( std::vector& buffers) const { const boost::asio::const_buffer headerDataBuffer(m_header_data.data(), std::size(m_header_data)); buffers.push_back(headerDataBuffer); buffers.push_back(boost::asio::const_buffer(m_data.data(), std::size(m_data))); }