Program Listing for File ZeroCopyBufferManager.hpp
↰ Return to documentation for file (BackendLibfabric/ZeroCopyBufferManager.hpp)
#ifndef NETIO3BACKEND_BACKENDLIBFABRIC_ZEROCOPYBUFFERMANAGER_HPP
#define NETIO3BACKEND_BACKENDLIBFABRIC_ZEROCOPYBUFFERMANAGER_HPP
#include <tracy/Tracy.hpp>
#include "Buffer.hpp"
#include "netio3-backend/Netio3Backend.hpp"
namespace netio3::libfabric {
class ZeroCopyBufferManager
{
public:
ZeroCopyBufferManager(ConnectionParametersSendZeroCopy connection_params, DomainManager& domain_manager);
ZeroCopyBufferManager(const ZeroCopyBufferManager&) = delete;
ZeroCopyBufferManager(ZeroCopyBufferManager&&) = delete;
ZeroCopyBufferManager& operator=(const ZeroCopyBufferManager&) = delete;
ZeroCopyBufferManager& operator=(ZeroCopyBufferManager&&) = delete;
~ZeroCopyBufferManager();
[[nodiscard]] fid_mr* get_mr() const { return m_mr.mr; }
[[nodiscard]] fid_mr* get_header_mr() const { return m_header_buffer.mr; }
[[nodiscard]] HeaderBuffer::HeaderWrapper get_header(const std::span<const std::uint8_t> header_data, const std::uint64_t key);
[[nodiscard]] std::uint64_t return_header(std::uint64_t bufnum);
[[nodiscard]] std::size_t get_num_available_buffers();
[[nodiscard]] std::vector<std::uint64_t> get_pending_sends();
private:
void init_buffers(DomainManager& domain_manager);
ConnectionParametersSendZeroCopy m_conn_parameters{};
Buffer m_mr;
HeaderBuffer m_header_buffer;
};
} // namespace netio3::libfabric
#endif // NETIO3BACKEND_BACKENDLIBFABRIC_ZEROCOPYBUFFERMANAGER_HPP