Program Listing for File ZeroCopyBufferManager.cpp
↰ Return to documentation for file (BackendLibfabric/ZeroCopyBufferManager.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<const std::uint8_t> 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<std::uint64_t> 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);
}