9 #ifndef FAIR_MQ_OFI_TRANSPORTFACTORY_H
10 #define FAIR_MQ_OFI_TRANSPORTFACTORY_H
12 #include <FairMQTransportFactory.h>
13 #include <fairmq/ProgOptions.h>
14 #include <fairmq/ofi/Context.h>
18 namespace fair::mq::ofi
31 TransportFactory(
const TransportFactory&) =
delete;
32 TransportFactory operator=(
const TransportFactory&) =
delete;
36 auto CreateMessage(
const std::size_t size) -> MessagePtr
override;
38 auto CreateMessage(
void* data,
const std::size_t size, fairmq_free_fn* ffn,
void* hint =
nullptr) -> MessagePtr
override;
39 auto CreateMessage(UnmanagedRegionPtr& region,
void* data,
const std::size_t size,
void* hint =
nullptr) -> MessagePtr
override;
41 auto CreateSocket(
const std::string& type,
const std::string& name) -> SocketPtr
override;
43 auto CreatePoller(
const std::vector<FairMQChannel>& channels)
const -> PollerPtr
override;
44 auto CreatePoller(
const std::vector<FairMQChannel*>& channels)
const -> PollerPtr
override;
45 auto CreatePoller(
const std::unordered_map<std::string, std::vector<FairMQChannel>>& channelsMap,
const std::vector<std::string>& channelList)
const -> PollerPtr
override;
47 auto CreateUnmanagedRegion(
const size_t size, RegionCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) -> UnmanagedRegionPtr
override;
48 auto CreateUnmanagedRegion(
const size_t size, RegionBulkCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) -> UnmanagedRegionPtr
override;
49 auto CreateUnmanagedRegion(
const size_t size, int64_t userFlags, RegionCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) -> UnmanagedRegionPtr
override;
50 auto CreateUnmanagedRegion(
const size_t size, int64_t userFlags, RegionBulkCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) -> UnmanagedRegionPtr
override;
52 void SubscribeToRegionEvents(RegionEventCallback )
override { LOG(error) <<
"SubscribeToRegionEvents not yet implemented for OFI"; }
53 bool SubscribedToRegionEvents()
override { LOG(error) <<
"Region event subscriptions not yet implemented for OFI";
return false; }
55 std::vector<FairMQRegionInfo> GetRegionInfo()
override { LOG(error) <<
"GetRegionInfo not yet implemented for OFI, returning empty vector";
return std::vector<FairMQRegionInfo>(); }
57 auto GetType() const -> Transport override;
59 void Interrupt()
override { fContext.Interrupt(); }
60 void Resume()
override { fContext.Resume(); }
61 void Reset()
override { fContext.Reset(); }
64 mutable Context fContext;
65 asiofi::allocated_pool_resource fMemoryResource;