9 #ifndef FAIR_MQ_OFI_CONTEXT_H 10 #define FAIR_MQ_OFI_CONTEXT_H 12 #include <FairMQLogger.h> 13 #include <FairMQTransportFactory.h> 15 #include <asiofi/domain.hpp> 16 #include <asiofi/fabric.hpp> 17 #include <asiofi/info.hpp> 18 #include <boost/asio/io_context.hpp> 20 #include <netinet/in.h> 34 enum class ConnectionType : bool { Bind, Connect };
40 friend auto operator<<(std::ostream& os,
const Address& a) -> std::ostream&
42 return os << a.Protocol <<
"://" << a.Ip <<
":" << a.Port;
44 friend auto operator==(
const Address& lhs,
const Address& rhs) ->
bool 46 return (lhs.Protocol == rhs.Protocol) && (lhs.Ip == rhs.Ip) && (lhs.Port == rhs.Port);
61 int numberIoThreads = 1);
64 auto GetAsiofiVersion()
const -> std::string;
65 auto GetIoContext() -> boost::asio::io_context& {
return fIoContext; }
66 static auto ConvertAddress(std::string address) ->
Address;
67 static auto ConvertAddress(
Address address) -> sockaddr_in;
68 static auto ConvertAddress(sockaddr_in address) ->
Address;
69 static auto VerifyAddress(
const std::string& address) ->
Address;
70 auto Interrupt() ->
void { LOG(debug) <<
"OFI transport: Interrupted (NOOP - not implemented)."; }
71 auto Resume() ->
void { LOG(debug) <<
"OFI transport: Resumed (NOOP - not implemented)."; }
73 auto MakeReceiveMessage(
size_t size) -> MessagePtr;
74 auto MakeSendMessage(
size_t size) -> MessagePtr;
75 auto GetSizeHint() ->
size_t {
return fSizeHint; }
76 auto SetSizeHint(
size_t size) ->
void { fSizeHint = size; }
79 boost::asio::io_context fIoContext;
80 boost::asio::io_context::work fIoWork;
81 std::vector<std::thread> fThreadPool;
86 auto InitThreadPool(
int numberIoThreads) -> void;
89 struct ContextError : std::runtime_error {
using std::runtime_error::runtime_error; };
Transport-wide context.
Definition: Context.h:56
Definition: FairMQTransportFactory.h:30
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23