15 #ifndef FAIR_MQ_MEMORY_RESOURCES_H
16 #define FAIR_MQ_MEMORY_RESOURCES_H
18 #include <fairmq/FairMQMessage.h>
21 #include <boost/container/container_fwd.hpp>
22 #include <boost/container/flat_map.hpp>
23 #include <boost/container/pmr/memory_resource.hpp>
32 using byte =
unsigned char;
33 namespace pmr = boost::container::pmr;
47 virtual void *setMessage(FairMQMessagePtr) = 0;
49 virtual
size_t getNumberOfMessages() const noexcept = 0;
64 boost::container::flat_map<void *, FairMQMessagePtr> messageMap;
75 throw std::runtime_error(
"Tried to construct from a nullptr FairMQTransportFactory");
81 auto mes = std::move(messageMap[p]);
86 void *setMessage(FairMQMessagePtr message)
override
88 void *addr = message->GetData();
89 messageMap[addr] = std::move(message);
95 size_t getNumberOfMessages() const noexcept
override {
return messageMap.size(); }
98 void *do_allocate(std::size_t bytes, std::size_t alignment)
override;
99 void do_deallocate(
void *p, std::size_t , std::size_t )
override
104 bool do_is_equal(
const pmr::memory_resource &other)
const noexcept
override
106 return this == &other;