.. _program_listing_file_BackendLibfabric_ReceiveBufferManager.hpp: Program Listing for File ReceiveBufferManager.hpp ================================================= |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/ReceiveBufferManager.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef NETIO3BACKEND_BACKENDLIBFABRIC_RECEIVEBUFFERMANAGER_HPP #define NETIO3BACKEND_BACKENDLIBFABRIC_RECEIVEBUFFERMANAGER_HPP #include "Buffer.hpp" #include "netio3-backend/Netio3Backend.hpp" namespace netio3::libfabric { class ReceiveBufferManager { public: ReceiveBufferManager(DomainManager& domain_manager, fid_ep* ep, const ConnectionParametersRecv& conn_params, const fi_info* info, BaseEventLoop* event_loop); ReceiveBufferManager(const ReceiveBufferManager&) = delete; ReceiveBufferManager(ReceiveBufferManager&&) = default; ReceiveBufferManager& operator=(const ReceiveBufferManager&) = delete; ReceiveBufferManager& operator=(ReceiveBufferManager&&) = default; ~ReceiveBufferManager(); void post_buffer(Buffer* buf); private: void init_buffers(DomainManager& domain_manager); void post_buffers(); [[nodiscard]] int do_post_buffer(Buffer* buf) const; void retry_post_buffers(); [[nodiscard]] ConnectionParametersRecv prepare_connection_parameters( const ConnectionParametersRecv& requested, const fi_info* info) const; fid_ep* m_ep{nullptr}; ConnectionParametersRecv m_conn_params{}; std::vector m_buffers; std::vector m_retry_post_buffers{}; EventSignalHandle m_retry_post_signal; }; } // namespace netio3::libfabric #endif // NETIO3BACKEND_BACKENDLIBFABRIC_RECEIVEBUFFERMANAGER_HPP