Program Listing for File DomainManager.hpp
↰ Return to documentation for file (BackendLibfabric/DomainManager.hpp)
#ifndef NETIO3BACKEND_BACKENDLIBFABRIC_DOMAINMANAGER_HPP
#define NETIO3BACKEND_BACKENDLIBFABRIC_DOMAINMANAGER_HPP
#include <cstdint>
#include <rdma/fabric.h>
#include "Helpers.hpp"
#include "netio3-backend/Netio3Backend.hpp"
namespace netio3::libfabric {
class DomainManager
{
public:
explicit DomainManager(const NetworkConfig& config,
const EndPointAddress& address,
std::uint64_t flags);
[[nodiscard]] const fid_fabric* get_fabric() const { return m_fabric.get(); }
[[nodiscard]] fid_fabric* get_fabric() { return m_fabric.get(); }
[[nodiscard]] const fid_domain* get_domain() const { return m_domain.get(); }
[[nodiscard]] fid_domain* get_domain() { return m_domain.get(); }
[[nodiscard]] const fi_info* get_info() const { return m_info.get(); }
[[nodiscard]] std::uint64_t get_next_mr_key();
private:
[[nodiscard]] static FiInfoUniquePtr create_info(NetworkMode mode,
const EndPointAddress& address,
std::uint64_t flags);
[[nodiscard]] FiCloseUniquePtr<fid_fabric> create_fabric();
[[nodiscard]] FiCloseUniquePtr<fid_domain> create_domain() const;
FiInfoUniquePtr m_info{nullptr};
FiCloseUniquePtr<fid_fabric> m_fabric{nullptr};
FiCloseUniquePtr<fid_domain> m_domain{nullptr};
std::uint64_t m_mr_key{0};
};
} // namespace netio3::libfabric
#endif // NETIO3BACKEND_BACKENDLIBFABRIC_DOMAINMANAGER_HPP