15 #ifndef FAIR_MQ_MEMORY_RESOURCES_H 16 #define FAIR_MQ_MEMORY_RESOURCES_H 18 #include <fairmq/FairMQMessage.h> 21 #include <boost/container/flat_map.hpp> 22 #include <boost/container/pmr/memory_resource.hpp> 23 #include <boost/container/pmr/monotonic_buffer_resource.hpp> 24 #include <boost/container/pmr/polymorphic_allocator.hpp> 31 using byte =
unsigned char;
32 namespace pmr = boost::container::pmr;
45 virtual FairMQMessagePtr
getMessage(
void *p) = 0;
46 virtual void *setMessage(FairMQMessagePtr) = 0;
48 virtual size_t getNumberOfMessages()
const noexcept = 0;
63 boost::container::flat_map<void *, FairMQMessagePtr> messageMap;
74 throw std::runtime_error(
"Tried to construct from a nullptr FairMQTransportFactory");
80 auto mes = std::move(messageMap[p]);
85 void *setMessage(FairMQMessagePtr message)
override 87 void *addr = message->GetData();
88 messageMap[addr] = std::move(message);
94 size_t getNumberOfMessages()
const noexcept
override {
return messageMap.size(); }
97 void *do_allocate(std::size_t bytes, std::size_t alignment)
override;
98 void do_deallocate(
void *p, std::size_t , std::size_t )
override 103 bool do_is_equal(
const pmr::memory_resource &other)
const noexcept
override 105 return this == &other;
virtual FairMQMessagePtr getMessage(void *p)=0
Definition: FairMQTransportFactory.h:30
Definition: MemoryResources.h:37
FairMQMessagePtr getMessage(void *p) override
Definition: MemoryResources.h:78
Definition: MemoryResources.h:56
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23