.. _program_listing_file_BackendLibfabric_DomainManager.hpp: Program Listing for File DomainManager.hpp ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/DomainManager.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef NETIO3BACKEND_BACKENDLIBFABRIC_DOMAINMANAGER_HPP #define NETIO3BACKEND_BACKENDLIBFABRIC_DOMAINMANAGER_HPP #include #include #include "Helpers.hpp" #include "netio3-backend/Netio3Backend.hpp" namespace netio3::libfabric { class DomainContext { public: explicit DomainContext(fid_domain* domain) : domain_ptr{domain} {} [[nodiscard]] const fid_domain* get_domain() const { return domain_ptr; } [[nodiscard]] fid_domain* get_domain() { return domain_ptr; } private: fid_domain* domain_ptr{nullptr}; }; class DomainManager { public: explicit DomainManager(NetworkMode mode, const EndPointAddress& address, std::uint64_t flags); ~DomainManager(); DomainManager(const DomainManager&) = delete; DomainManager(DomainManager&&) = default; DomainManager& operator=(const DomainManager&) = delete; DomainManager& operator=(DomainManager&&) = default; [[nodiscard]] const fid_fabric* get_fabric() const { return m_fabric; } [[nodiscard]] fid_fabric* get_fabric() { return m_fabric; } [[nodiscard]] const DomainContext& get_listen_domain() const { return m_listen_domain; } [[nodiscard]] DomainContext& get_listen_domain() { return m_listen_domain; } [[nodiscard]] const DomainContext& get_send_domain() const { return m_send_domain; } [[nodiscard]] DomainContext& get_send_domain() { return m_send_domain; } private: [[nodiscard]] static FiInfoUniquePtr create_info(NetworkMode mode, const EndPointAddress& address, std::uint64_t flags); [[nodiscard]] fid_fabric* create_fabric(); [[nodiscard]] DomainContext create_domain() const; FiInfoUniquePtr m_info{nullptr}; fid_fabric* m_fabric{nullptr}; DomainContext m_send_domain; DomainContext m_listen_domain; }; } // namespace netio3::libfabric #endif // NETIO3BACKEND_BACKENDLIBFABRIC_DOMAINMANAGER_HPP