Program Listing for File ReceiveBufferManager.hpp
↰ Return to documentation for file (BackendLibfabric/ReceiveBufferManager.hpp)
#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<Buffer> m_buffers;
std::vector<Buffer*> m_retry_post_buffers{};
EventSignalHandle m_retry_post_signal;
};
} // namespace netio3::libfabric
#endif // NETIO3BACKEND_BACKENDLIBFABRIC_RECEIVEBUFFERMANAGER_HPP