.. _program_listing_file_BackendLibfabric_SendSocketZeroCopy.hpp: Program Listing for File SendSocketZeroCopy.hpp =============================================== |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/SendSocketZeroCopy.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef NETIO3BACKEND_BACKENDLIBFABRIC_SENDSOCKETZEROCOPY_HPP #define NETIO3BACKEND_BACKENDLIBFABRIC_SENDSOCKETZEROCOPY_HPP #include #include "Buffer.hpp" #include "SendSocket.hpp" #include "DomainManager.hpp" #include "Helpers.hpp" #include "netio3-backend/Netio3Backend.hpp" namespace netio3::libfabric { class SendSocketZeroCopy : public SendSocket { public: SendSocketZeroCopy(EndPointAddress address, const ConnectionParameters& connection_params, NetworkMode mode, fid_fabric* fabric, DomainContext& domain); SendSocketZeroCopy(const SendSocketZeroCopy&) = delete; SendSocketZeroCopy(SendSocketZeroCopy&&) = delete; SendSocketZeroCopy& operator=(const SendSocketZeroCopy&) = delete; SendSocketZeroCopy& operator=(SendSocketZeroCopy&&) = delete; ~SendSocketZeroCopy(); [[nodiscard]] auto operator<=>(const SendSocketZeroCopy& other) const { return get_endpoint().cqfd <=> other.get_endpoint().cqfd; } [[nodiscard]] NetioStatus send_data(std::span data, std::span header_data, std::uint64_t key); [[nodiscard]] NetioStatus send_data(std::span iov, std::span header_data, std::uint64_t key); [[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: void init_buffers(DomainContext& domain); EndPointAddress m_addr; ConnectionParameters m_conn_parameters{}; Buffer m_mr; HeaderBuffer m_header_buffer; }; } // namespace netio3::libfabric #endif // NETIO3BACKEND_BACKENDLIBFABRIC_SENDSOCKETZEROCOPY_HPP