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> 27 #include <type_traits> 28 #include <unordered_map> 35 using byte =
unsigned char;
36 namespace pmr = boost::container::pmr;
49 virtual FairMQMessagePtr
getMessage(
void *p) = 0;
50 virtual void *setMessage(FairMQMessagePtr) = 0;
52 virtual size_t getNumberOfMessages()
const noexcept = 0;
67 boost::container::flat_map<void *, FairMQMessagePtr> messageMap;
78 throw std::runtime_error(
"Tried to construct from a nullptr FairMQTransportFactory");
84 auto mes = std::move(messageMap[p]);
89 void *setMessage(FairMQMessagePtr message)
override 91 void *addr = message->GetData();
92 messageMap[addr] = std::move(message);
98 size_t getNumberOfMessages() const noexcept
override {
return messageMap.size(); }
101 void *
do_allocate(std::size_t bytes, std::size_t alignment)
override;
102 void do_deallocate(
void *p, std::size_t , std::size_t )
override 107 bool do_is_equal(
const pmr::memory_resource &other)
const noexcept
override 109 return this == &other;
virtual FairMQMessagePtr getMessage(void *p)=0
Definition: FairMQTransportFactory.h:28
Definition: MemoryResources.h:41
FairMQMessagePtr getMessage(void *p) override
Definition: MemoryResources.h:82
Definition: MemoryResources.h:60
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23
void * do_allocate(std::size_t bytes, std::size_t alignment) override
Memory allocators and interfaces related to managing memory via the trasport layer.
Definition: MemoryResources.cxx:18