9 #ifndef FAIRMQTRANSPORTFACTORY_H_ 10 #define FAIRMQTRANSPORTFACTORY_H_ 12 #include <FairMQLogger.h> 13 #include <FairMQMessage.h> 14 #include <FairMQPoller.h> 15 #include <FairMQSocket.h> 16 #include <FairMQUnmanagedRegion.h> 17 #include <fairmq/MemoryResources.h> 18 #include <fairmq/Transports.h> 23 #include <unordered_map> 28 namespace fair {
namespace mq {
class ProgOptions; } }
34 const std::string fkId;
44 auto GetId()
const ->
const std::string {
return fkId; };
52 virtual FairMQMessagePtr CreateMessage() = 0;
56 virtual FairMQMessagePtr CreateMessage(
const size_t size) = 0;
63 virtual FairMQMessagePtr CreateMessage(
void* data,
const size_t size, fairmq_free_fn* ffn,
void* hint =
nullptr) = 0;
69 virtual FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& unmanagedRegion,
void* data,
const size_t size,
void* hint = 0) = 0;
72 virtual FairMQSocketPtr CreateSocket(
const std::string& type,
const std::string& name) = 0;
75 virtual FairMQPollerPtr CreatePoller(
const std::vector<FairMQChannel>& channels)
const = 0;
77 virtual FairMQPollerPtr CreatePoller(
const std::vector<FairMQChannel*>& channels)
const = 0;
79 virtual FairMQPollerPtr CreatePoller(
const std::unordered_map<std::string, std::vector<FairMQChannel>>& channelsMap,
const std::vector<std::string>& channelList)
const = 0;
87 virtual FairMQUnmanagedRegionPtr CreateUnmanagedRegion(
const size_t size, FairMQRegionCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0)
const = 0;
95 virtual FairMQUnmanagedRegionPtr CreateUnmanagedRegion(
const size_t size,
const int64_t userFlags, FairMQRegionCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0)
const = 0;
99 virtual void SubscribeToRegionEvents(FairMQRegionEventCallback callback) = 0;
101 virtual void UnsubscribeFromRegionEvents() = 0;
103 virtual std::vector<FairMQRegionInfo> GetRegionInfo() = 0;
106 virtual fair::mq::Transport GetType()
const = 0;
108 virtual void Interrupt() = 0;
109 virtual void Resume() = 0;
110 virtual void Reset() = 0;
114 static auto CreateTransportFactory(
const std::string& type,
const std::string&
id =
"",
const fair::mq::ProgOptions* config =
nullptr) -> std::shared_ptr<FairMQTransportFactory>;
116 static void FairMQNoCleanup(
void* ,
void* )
121 static void FairMQSimpleMsgCleanup(
void* ,
void* obj)
123 delete static_cast<T*
>(obj);
127 FairMQMessagePtr NewSimpleMessage(
const T& data)
131 T* dataCopy =
new T(data);
132 return CreateMessage(dataCopy,
sizeof(T), FairMQSimpleMsgCleanup<T>, dataCopy);
135 template<std::
size_t N>
136 FairMQMessagePtr NewSimpleMessage(
const char(&data)[N])
138 std::string* msgStr =
new std::string(data);
139 return CreateMessage(const_cast<char*>(msgStr->c_str()), msgStr->length(), FairMQSimpleMsgCleanup<std::string>, msgStr);
142 FairMQMessagePtr NewSimpleMessage(
const std::string& str)
145 std::string* msgStr =
new std::string(str);
146 return CreateMessage(const_cast<char*>(msgStr->c_str()), msgStr->length(), FairMQSimpleMsgCleanup<std::string>, msgStr);
150 FairMQMessagePtr NewStaticMessage(
const T& data)
152 return CreateMessage(data,
sizeof(T), FairMQNoCleanup,
nullptr);
155 FairMQMessagePtr NewStaticMessage(
const std::string& str)
157 return CreateMessage(const_cast<char*>(str.c_str()), str.length(), FairMQNoCleanup,
nullptr);
Definition: FairMQTransportFactory.h:167
Definition: FairMQTransportFactory.h:30
Definition: FairMQChannel.h:30
Definition: ProgOptions.h:36
fair::mq::ChannelResource * GetMemoryResource()
Get a pointer to the associated polymorphic memory resource.
Definition: FairMQTransportFactory.h:47
Definition: MemoryResources.h:56
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23