.. _program_listing_file_BackendLibfabric_BaseSocket.hpp: Program Listing for File BaseSocket.hpp ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/BaseSocket.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef NETIO3BACKEND_BACKENDLIBFABRIC_BASESOCKET_HPP #define NETIO3BACKEND_BACKENDLIBFABRIC_BASESOCKET_HPP #include #include #include "Buffer.hpp" #include "DomainManager.hpp" #include "Helpers.hpp" #include "netio3-backend/Netio3Backend.hpp" namespace netio3::libfabric { class BaseSocket { public: [[nodiscard]] const Endpoint& get_endpoint() const { return m_ep; } [[nodiscard]] Endpoint& get_endpoint() { return m_ep; } [[nodiscard]] CqCmFds get_cq_cm_fds() const { return {m_ep.cqfd, m_ep.eqfd}; } void set_cq_ev_ctx(EventContext ctx) { m_cq_ev_ctx = std::move(ctx); } void set_eq_ev_ctx(EventContext ctx) { m_eq_ev_ctx = std::move(ctx); } [[nodiscard]] const EventContext& get_eq_ev_ctx() const { return m_eq_ev_ctx; } [[nodiscard]] const EventContext& get_cq_ev_ctx() const { return m_cq_ev_ctx; } protected: explicit BaseSocket(Endpoint ep) : m_ep{std::move(ep)} {}; static void open_endpoint(const EndPointAddress& address, Endpoint& ep, fid_fabric* fabric, fid_domain* domain, fi_info* info); static void enable_endpoint(const EndPointAddress& address, Endpoint& ep); [[nodiscard]] static fi_cq_attr prepare_cq_attr(); template static void register_buffer(BufferType& buf, DomainContext& domain, int access_flag); template static void close_buffer(const BufferType& buffer); private: Endpoint m_ep{}; EventContext m_eq_ev_ctx{}; EventContext m_cq_ev_ctx{}; }; } // namespace netio3::libfabric #endif // NETIO3BACKEND_BACKENDLIBFABRIC_BASESOCKET_HPP