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;