9 #ifndef FAIRMQTRANSPORTFACTORY_H_ 10 #define FAIRMQTRANSPORTFACTORY_H_ 12 #include <FairMQMessage.h> 13 #include <FairMQSocket.h> 14 #include <FairMQPoller.h> 15 #include <FairMQUnmanagedRegion.h> 16 #include <FairMQLogger.h> 17 #include <fairmq/Transports.h> 22 #include <unordered_map> 31 const std::string fkId;
38 auto GetId()
const ->
const std::string {
return fkId; };
46 virtual FairMQMessagePtr
CreateMessage(
const size_t size)
const = 0;
53 virtual FairMQMessagePtr
CreateMessage(
void* data,
const size_t size, fairmq_free_fn* ffn,
void* hint =
nullptr)
const = 0;
55 virtual FairMQMessagePtr
CreateMessage(FairMQUnmanagedRegionPtr& unmanagedRegion,
void* data,
const size_t size,
void* hint = 0)
const = 0;
58 virtual FairMQSocketPtr
CreateSocket(
const std::string& type,
const std::string& name)
const = 0;
61 virtual FairMQPollerPtr
CreatePoller(
const std::vector<FairMQChannel>& channels)
const = 0;
63 virtual FairMQPollerPtr
CreatePoller(
const std::vector<const FairMQChannel*>& channels)
const = 0;
65 virtual FairMQPollerPtr
CreatePoller(
const std::unordered_map<std::string, std::vector<FairMQChannel>>& channelsMap,
const std::vector<std::string>& channelList)
const = 0;
69 virtual FairMQUnmanagedRegionPtr CreateUnmanagedRegion(
const size_t size, FairMQRegionCallback callback =
nullptr)
const = 0;
72 virtual fair::mq::Transport
GetType()
const = 0;
74 virtual void Interrupt() = 0;
75 virtual void Resume() = 0;
79 static auto CreateTransportFactory(
const std::string& type,
const std::string&
id =
"",
const FairMQProgOptions* config =
nullptr) -> std::shared_ptr<FairMQTransportFactory>;
81 static void FairMQNoCleanup(
void* ,
void* )
86 static void FairMQSimpleMsgCleanup(
void* ,
void* obj)
88 delete static_cast<T*
>(obj);
92 FairMQMessagePtr NewSimpleMessage(
const T& data)
const 96 T* dataCopy =
new T(data);
97 return CreateMessage(dataCopy,
sizeof(T), FairMQSimpleMsgCleanup<T>, dataCopy);
100 template<std::
size_t N>
101 FairMQMessagePtr NewSimpleMessage(
const char(&data)[N])
const 103 std::string* msgStr =
new std::string(data);
104 return CreateMessage(const_cast<char*>(msgStr->c_str()), msgStr->length(), FairMQSimpleMsgCleanup<std::string>, msgStr);
107 FairMQMessagePtr NewSimpleMessage(
const std::string& str)
const 110 std::string* msgStr =
new std::string(str);
111 return CreateMessage(const_cast<char*>(msgStr->c_str()), msgStr->length(), FairMQSimpleMsgCleanup<std::string>, msgStr);
115 FairMQMessagePtr NewStaticMessage(
const T& data)
const 117 return CreateMessage(data,
sizeof(T), FairMQNoCleanup,
nullptr);
120 FairMQMessagePtr NewStaticMessage(
const std::string& str)
const 122 return CreateMessage(const_cast<char*>(str.c_str()), str.length(), FairMQNoCleanup,
nullptr);
Definition: FairMQTransportFactory.h:131
Definition: FairMQTransportFactory.h:27
virtual FairMQMessagePtr CreateMessage() const =0
Create empty FairMQMessage.
Definition: FairMQChannel.h:24
FairMQTransportFactory(const std::string &id)
Definition: FairMQTransportFactory.cxx:25
Definition: FairMQProgOptions.h:41
virtual FairMQPollerPtr CreatePoller(const std::vector< FairMQChannel > &channels) const =0
Create a poller for a single channel (all subchannels)
Definition: FairMQSocket.h:18
Definition: DeviceRunner.h:23
virtual FairMQSocketPtr CreateSocket(const std::string &type, const std::string &name) const =0
Create a socket.
virtual fair::mq::Transport GetType() const =0
Get transport type.