21#ifndef HEDGEHOG_MANAGED_MEMORY_H_
22#define HEDGEHOG_MANAGED_MEMORY_H_
34class ManagedMemory :
public std::enable_shared_from_this<ManagedMemory> {
62 throw (std::runtime_error(
"The data you are trying to return is not linked to a memory manager."));
Abstraction used to manage an user type with a memory manager.
virtual bool canBeRecycled()
Accessor to test if the data can be cleaned and sent back to the Pool, true by default.
ManagedMemory()=default
Default constructor.
AbstractMemoryManager * memoryManager() const
Memory manager accessor.
bool isMemoryManagerConnected()
Test is a memory manager has been connected to the managed memory.
void returnToMemoryManager()
Return the data to the memory manager.
AbstractMemoryManager * memoryManager_
Link to the Memory Manager.
virtual void clean()
Mechanism to clean data.
virtual void preProcess()
Mechanism to pre process the data.
virtual ~ManagedMemory()=default
Default destructor.
virtual void postProcess()
Mechanism called by Hedgehog when the node returns the memory before it is tested for being recycled ...
void memoryManager(AbstractMemoryManager *memoryManager)
Memory manager setter.
virtual void recycleMemory(std::shared_ptr< ManagedMemory > const &managedMemory)=0
Recycle memory.