.. _program_listing_file_BackendLibfabric_ZeroCopyBufferManager.cpp: Program Listing for File ZeroCopyBufferManager.cpp ================================================== |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/ZeroCopyBufferManager.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "ZeroCopyBufferManager.hpp" netio3::libfabric::ZeroCopyBufferManager::ZeroCopyBufferManager( ConnectionParametersSendZeroCopy connection_params, DomainManager& domain_manager) : m_conn_parameters{std::move(connection_params)}, m_mr{m_conn_parameters.buf_size, m_conn_parameters.mr_start} { init_buffers(domain_manager); } netio3::libfabric::ZeroCopyBufferManager::~ZeroCopyBufferManager() { close_buffer(m_mr); close_buffer(m_header_buffer); } netio3::libfabric::HeaderBuffer::HeaderWrapper netio3::libfabric::ZeroCopyBufferManager::get_header( const std::span header_data, const std::uint64_t key) { return m_header_buffer.get_header(header_data, key); } std::uint64_t netio3::libfabric::ZeroCopyBufferManager::return_header(std::uint64_t bufnum) { return m_header_buffer.return_header(bufnum); } std::size_t netio3::libfabric::ZeroCopyBufferManager::get_num_available_buffers() { return m_header_buffer.get_num_available_buffers(); } std::vector netio3::libfabric::ZeroCopyBufferManager::get_pending_sends() { return m_header_buffer.get_pending_sends(); } void netio3::libfabric::ZeroCopyBufferManager::init_buffers(DomainManager& domain_manager) { ZoneScoped; ERS_DEBUG(1, std::format("Registering MR of size {}", m_conn_parameters.buf_size)); register_buffer(m_mr, domain_manager, FI_SEND); ERS_DEBUG(1, std::format("Registering Header buffer of size {}", ZERO_COPY_NUM_HEADER_SLOTS * ZERO_COPY_SIZE_HEADER)); register_buffer(m_header_buffer, domain_manager, FI_SEND); }