.. _program_listing_file_BackendLibfabric_ZeroCopyBufferManager.hpp: Program Listing for File ZeroCopyBufferManager.hpp ================================================== |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/ZeroCopyBufferManager.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef NETIO3BACKEND_BACKENDLIBFABRIC_ZEROCOPYBUFFERMANAGER_HPP #define NETIO3BACKEND_BACKENDLIBFABRIC_ZEROCOPYBUFFERMANAGER_HPP #include #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 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 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