.. _program_listing_file_BackendLibfabric_SendEndpointZeroCopy.hpp: Program Listing for File SendEndpointZeroCopy.hpp ================================================= |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/SendEndpointZeroCopy.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef NETIO3BACKEND_BACKENDLIBFABRIC_SENDENDPOINTZEROCOPY_HPP #define NETIO3BACKEND_BACKENDLIBFABRIC_SENDENDPOINTZEROCOPY_HPP #include #include #include #include "ActiveEndpoint.hpp" #include "DomainManager.hpp" #include "Helpers.hpp" #include "netio3-backend/Netio3Backend.hpp" #include "Sender.hpp" #include "ZeroCopyBufferManager.hpp" namespace netio3::libfabric { class SendEndpointZeroCopy { public: SendEndpointZeroCopy(ActiveEndpoint& endpoint, const ConnectionParametersSendZeroCopy& connection_params, std::optional& shared_buffer_manager, DomainManager& domain_manager); [[nodiscard]] auto operator<=>(const SendEndpointZeroCopy& other) const { return m_endpoint.get().get_endpoint().ep <=> other.m_endpoint.get().get_endpoint().ep; } [[nodiscard]] const ActiveEndpoint& get_active_endpoint() const { return m_endpoint.get(); } [[nodiscard]] ActiveEndpoint& get_active_endpoint() { return m_endpoint.get(); } [[nodiscard]] NetioStatus send_data(std::span data, std::span header_data, std::uint64_t key, fi_addr_t addr = 0); [[nodiscard]] NetioStatus send_data(std::span iov, std::span header_data, std::uint64_t key, fi_addr_t addr = 0); [[nodiscard]] std::uint64_t release_buffer(std::uint64_t bufnum); [[nodiscard]] std::size_t get_num_available_buffers(); [[nodiscard]] std::vector get_pending_sends(); private: [[nodiscard]] std::optional create_buffer_manager( const ConnectionParametersSendZeroCopy& connection_params, DomainManager& domain_manager) const; std::reference_wrapper m_endpoint; ConnectionParametersSendZeroCopy m_conn_parameters{}; Sender m_sender; std::optional m_buffer_manager; ZeroCopyBufferManager* m_buffer_manager_ptr{nullptr}; }; } // namespace netio3::libfabric #endif // NETIO3BACKEND_BACKENDLIBFABRIC_SENDENDPOINTZEROCOPY_HPP