FairMQ
1.4.33
C++ Message Queuing Library and Framework
|
9 #ifndef FAIRMQTRANSPORTFACTORY_H_
10 #define FAIRMQTRANSPORTFACTORY_H_
12 #include <FairMQMessage.h>
13 #include <FairMQPoller.h>
14 #include <FairMQSocket.h>
15 #include <FairMQUnmanagedRegion.h>
16 #include <fairmq/MemoryResources.h>
17 #include <fairmq/Transports.h>
22 #include <unordered_map>
27 namespace fair::mq {
class ProgOptions; }
33 const std::string fkId;
43 auto GetId()
const ->
const std::string {
return fkId; };
71 virtual FairMQMessagePtr
CreateMessage(
void* data,
const size_t size, fairmq_free_fn* ffn,
void* hint =
nullptr) = 0;
77 virtual FairMQMessagePtr
CreateMessage(FairMQUnmanagedRegionPtr& unmanagedRegion,
void* data,
const size_t size,
void* hint = 0) = 0;
80 virtual FairMQSocketPtr
CreateSocket(
const std::string& type,
const std::string& name) = 0;
83 virtual FairMQPollerPtr
CreatePoller(
const std::vector<FairMQChannel>& channels)
const = 0;
85 virtual FairMQPollerPtr
CreatePoller(
const std::vector<FairMQChannel*>& channels)
const = 0;
87 virtual FairMQPollerPtr
CreatePoller(
const std::unordered_map<std::string, std::vector<FairMQChannel>>& channelsMap,
const std::vector<std::string>& channelList)
const = 0;
95 virtual FairMQUnmanagedRegionPtr
CreateUnmanagedRegion(
const size_t size, FairMQRegionCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) = 0;
96 virtual FairMQUnmanagedRegionPtr
CreateUnmanagedRegion(
const size_t size, FairMQRegionBulkCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) = 0;
104 virtual FairMQUnmanagedRegionPtr
CreateUnmanagedRegion(
const size_t size,
const int64_t userFlags, FairMQRegionCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) = 0;
105 virtual FairMQUnmanagedRegionPtr
CreateUnmanagedRegion(
const size_t size,
const int64_t userFlags, FairMQRegionBulkCallback callback =
nullptr,
const std::string& path =
"",
int flags = 0) = 0;
116 virtual std::vector<FairMQRegionInfo> GetRegionInfo() = 0;
119 virtual fair::mq::Transport
GetType()
const = 0;
121 virtual void Interrupt() = 0;
122 virtual void Resume() = 0;
123 virtual void Reset() = 0;
127 static auto CreateTransportFactory(
const std::string& type,
const std::string&
id =
"",
const fair::mq::ProgOptions* config =
nullptr) -> std::shared_ptr<FairMQTransportFactory>;
129 static void FairMQNoCleanup(
void* ,
void* )
134 static void FairMQSimpleMsgCleanup(
void* ,
void* obj)
136 delete static_cast<T*
>(obj);
140 FairMQMessagePtr NewSimpleMessage(
const T& data)
144 T* dataCopy =
new T(data);
145 return CreateMessage(dataCopy,
sizeof(T), FairMQSimpleMsgCleanup<T>, dataCopy);
148 template<std::
size_t N>
149 FairMQMessagePtr NewSimpleMessage(
const char(&data)[N])
151 std::string* msgStr =
new std::string(data);
152 return CreateMessage(
const_cast<char*
>(msgStr->c_str()), msgStr->length(), FairMQSimpleMsgCleanup<std::string>, msgStr);
155 FairMQMessagePtr NewSimpleMessage(
const std::string& str)
158 std::string* msgStr =
new std::string(str);
159 return CreateMessage(
const_cast<char*
>(msgStr->c_str()), msgStr->length(), FairMQSimpleMsgCleanup<std::string>, msgStr);
163 FairMQMessagePtr NewStaticMessage(
const T& data)
165 return CreateMessage(data,
sizeof(T), FairMQNoCleanup,
nullptr);
168 FairMQMessagePtr NewStaticMessage(
const std::string& str)
170 return CreateMessage(
const_cast<char*
>(str.c_str()), str.length(), FairMQNoCleanup,
nullptr);
Definition: FairMQMessage.h:25
Definition: ProgOptions.h:41
virtual void UnsubscribeFromRegionEvents()=0
Unsubscribe from region events.
virtual FairMQMessagePtr CreateMessage(fair::mq::Alignment alignment)=0
Create empty FairMQMessage (for receiving), align received buffer to specified alignment.
virtual FairMQPollerPtr CreatePoller(const std::unordered_map< std::string, std::vector< FairMQChannel >> &channelsMap, const std::vector< std::string > &channelList) const =0
Create a poller for specific channels (all subchannels)
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23
virtual FairMQMessagePtr CreateMessage(const size_t size)=0
Create new FairMQMessage of specified size.
virtual FairMQMessagePtr CreateMessage(const size_t size, fair::mq::Alignment alignment)=0
Create new FairMQMessage of specified size and alignment.
virtual FairMQMessagePtr CreateMessage(void *data, const size_t size, fairmq_free_fn *ffn, void *hint=nullptr)=0
Create new FairMQMessage with user provided buffer and size.
FairMQTransportFactory(const std::string &id)
Definition: FairMQTransportFactory.cxx:26
virtual FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr &unmanagedRegion, void *data, const size_t size, void *hint=0)=0
create a message with the buffer located within the corresponding unmanaged region
fair::mq::ChannelResource * GetMemoryResource()
Get a pointer to the associated polymorphic memory resource.
Definition: FairMQTransportFactory.h:46
virtual FairMQSocketPtr CreateSocket(const std::string &type, const std::string &name)=0
Create a socket.
Definition: MemoryResources.h:58
virtual fair::mq::Transport GetType() const =0
Get transport type.
virtual FairMQUnmanagedRegionPtr CreateUnmanagedRegion(const size_t size, const int64_t userFlags, FairMQRegionCallback callback=nullptr, const std::string &path="", int flags=0)=0
Create new UnmanagedRegion.
virtual FairMQPollerPtr CreatePoller(const std::vector< FairMQChannel * > &channels) const =0
Create a poller for specific channels.
virtual FairMQPollerPtr CreatePoller(const std::vector< FairMQChannel > &channels) const =0
Create a poller for a single channel (all subchannels)
virtual FairMQUnmanagedRegionPtr CreateUnmanagedRegion(const size_t size, FairMQRegionCallback callback=nullptr, const std::string &path="", int flags=0)=0
Create new UnmanagedRegion.
Wrapper class for FairMQSocket and related methods.
Definition: FairMQChannel.h:35
virtual FairMQMessagePtr CreateMessage()=0
Create empty FairMQMessage (for receiving)
virtual void SubscribeToRegionEvents(FairMQRegionEventCallback callback)=0
Subscribe to region events (creation, destruction, ...)
Definition: FairMQTransportFactory.h:178
Definition: FairMQTransportFactory.h:30
virtual bool SubscribedToRegionEvents()=0
Check if there is an active subscription to region events.
privacy