Program Listing for File BackendLibfabric.hpp
↰ Return to documentation for file (BackendLibfabric/BackendLibfabric.hpp
)
#ifndef NETIO3BACKEND_BACKENDLIBFABRIC_BACKENDLIBFABRIC_HPP
#define NETIO3BACKEND_BACKENDLIBFABRIC_BACKENDLIBFABRIC_HPP
#include "ConnectionManager.hpp"
#include "netio3-backend/NetworkBuffer.hpp"
namespace netio3::libfabric {
class BackendLibfabric : public NetworkBackend
{
public:
BackendLibfabric(const NetworkConfig& config, std::shared_ptr<BaseEventLoop> evloop);
void open_send_endpoint(const EndPointAddress& address,
const ConnectionParameters& connection_params) override;
[[nodiscard]] EndPointAddress open_listen_endpoint(
const EndPointAddress& address,
const ConnectionParametersRecv& connection_params) override;
void close_send_endpoint(const EndPointAddress& address) override;
void close_listen_endpoint(const EndPointAddress& address) override;
[[nodiscard]] NetioStatus send_data(const EndPointAddress& address,
std::span<std::uint8_t> data,
std::span<const std::uint8_t> header_data,
std::uint64_t key) override;
[[nodiscard]] NetioStatus send_data(const EndPointAddress& address,
std::span<const iovec> iov,
std::span<const std::uint8_t> header_data,
std::uint64_t key) override;
[[nodiscard]] NetioStatus send_data_copy(const EndPointAddress& address,
std::span<const std::uint8_t> data,
std::span<const std::uint8_t> header_data,
std::uint64_t key) override;
[[nodiscard]] NetioStatus send_data_copy(const EndPointAddress& address,
std::span<const iovec> iov,
std::span<const std::uint8_t> header_data,
std::uint64_t key) override;
[[nodiscard]] NetworkBuffer* get_buffer(const EndPointAddress& address) override;
[[nodiscard]] NetioStatus send_buffer(const EndPointAddress& address,
NetworkBuffer* buffer) override;
[[nodiscard]] std::size_t get_num_available_buffers(const EndPointAddress& address) override;
private:
static bool check_ip_address(const EndPointAddress& address);
std::shared_ptr<libfabric::ConnectionManager> m_connection_manager;
};
} // namespace netio3::libfabric
#endif // NETIO3BACKEND_BACKENDLIBFABRIC_BACKENDLIBFABRIC_HPP