.. _program_listing_file_BackendLibfabric_Helpers.cpp: Program Listing for File Helpers.cpp ==================================== |exhale_lsh| :ref:`Return to documentation for file ` (``BackendLibfabric/Helpers.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "Helpers.hpp" #include #include #include #include #include "Issues.hpp" std::string netio3::libfabric::get_provider(NetworkMode mode) { switch (mode) { case NetworkMode::TCP: return "sockets"; case NetworkMode::RDMA: return "verbs"; default: throw LibFabricError(ERS_HERE, "Unknown network mode"); } } netio3::EndPointAddress netio3::libfabric::peer_address(fid_ep* ep) { ZoneScoped; std::array address{}; auto addrlen = address.size(); const auto ret = fi_getpeer(ep, address.data(), &addrlen); ERS_DEBUG(2, std::format("ret={} Peer address length={}", ret, addrlen)); for (size_t ch = 0; ch < addrlen; ++ch) { ERS_DEBUG(3, std::format("Peer address val={:#x}", address.at(ch))); } if (ret != 0) { ers::error(LibFabricError(ERS_HERE, std::format("fi_getpeer failed: {}", fi_strerror(-ret)))); } static std::array namebuf; static std::array servbuf; const int errcode = getnameinfo(reinterpret_cast(address.data()), addrlen, namebuf.data(), BUFSIZ, servbuf.data(), BUFSIZ, NI_NUMERICHOST | NI_NUMERICSERV); if (errcode != 0) { if (errcode != EAI_SYSTEM) { ers::error(LibFabricError( ERS_HERE, std::format("getnameinfo for {} failed: {}", address.data(), gai_strerror(errcode)))); } else { ers::error(LibFabricError(ERS_HERE, std::format("getnameinfo for {} failed: {}", address.data(), utility::error_message(errno)))); } } return {std::string(namebuf.data()), static_cast(atoi(servbuf.data()))}; }