2020-05-29 16:37:46 +02:00
|
|
|
#ifndef FRAMEWORK_STORAGEMANAGER_POOLMANAGER_TPP_
|
|
|
|
#define FRAMEWORK_STORAGEMANAGER_POOLMANAGER_TPP_
|
|
|
|
|
2020-05-29 16:44:31 +02:00
|
|
|
#ifndef FRAMEWORK_STORAGEMANAGER_POOLMANAGER_H_
|
2020-05-29 16:50:37 +02:00
|
|
|
#error Include PoolManager.h before PoolManager.tpp!
|
2020-05-29 16:44:31 +02:00
|
|
|
#endif
|
|
|
|
|
2020-05-29 16:37:46 +02:00
|
|
|
template<uint8_t NUMBER_OF_POOLS>
|
|
|
|
inline PoolManager<NUMBER_OF_POOLS>::PoolManager(object_id_t setObjectId,
|
|
|
|
const uint16_t element_sizes[NUMBER_OF_POOLS],
|
|
|
|
const uint16_t n_elements[NUMBER_OF_POOLS]) :
|
|
|
|
LocalPool<NUMBER_OF_POOLS>(setObjectId, element_sizes, n_elements, true) {
|
|
|
|
mutex = MutexFactory::instance()->createMutex();
|
|
|
|
}
|
|
|
|
|
|
|
|
template<uint8_t NUMBER_OF_POOLS>
|
|
|
|
inline PoolManager<NUMBER_OF_POOLS>::~PoolManager(void) {
|
|
|
|
MutexFactory::instance()->deleteMutex(mutex);
|
|
|
|
}
|
|
|
|
|
|
|
|
template<uint8_t NUMBER_OF_POOLS>
|
|
|
|
inline ReturnValue_t PoolManager<NUMBER_OF_POOLS>::reserveSpace(
|
|
|
|
const uint32_t size, store_address_t* address, bool ignoreFault) {
|
2020-06-04 20:21:52 +02:00
|
|
|
MutexHelper mutexHelper(mutex,MutexIF::BLOCKING);
|
2020-05-29 16:37:46 +02:00
|
|
|
ReturnValue_t status = LocalPool<NUMBER_OF_POOLS>::reserveSpace(size,
|
|
|
|
address,ignoreFault);
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
|
|
|
template<uint8_t NUMBER_OF_POOLS>
|
|
|
|
inline ReturnValue_t PoolManager<NUMBER_OF_POOLS>::deleteData(
|
|
|
|
store_address_t packet_id) {
|
|
|
|
// debug << "PoolManager( " << translateObject(getObjectId()) <<
|
|
|
|
// " )::deleteData from store " << packet_id.pool_index <<
|
|
|
|
// ". id is "<< packet_id.packet_index << std::endl;
|
2020-06-04 20:21:52 +02:00
|
|
|
MutexHelper mutexHelper(mutex,MutexIF::BLOCKING);
|
2020-05-29 16:37:46 +02:00
|
|
|
ReturnValue_t status = LocalPool<NUMBER_OF_POOLS>::deleteData(packet_id);
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
|
|
|
template<uint8_t NUMBER_OF_POOLS>
|
|
|
|
inline ReturnValue_t PoolManager<NUMBER_OF_POOLS>::deleteData(uint8_t* buffer,
|
|
|
|
size_t size, store_address_t* storeId) {
|
2020-06-04 20:21:52 +02:00
|
|
|
MutexHelper mutexHelper(mutex,MutexIF::BLOCKING);
|
2020-05-29 16:37:46 +02:00
|
|
|
ReturnValue_t status = LocalPool<NUMBER_OF_POOLS>::deleteData(buffer,
|
|
|
|
size, storeId);
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
2020-05-20 14:40:50 +02:00
|
|
|
|
2020-05-29 16:37:46 +02:00
|
|
|
#endif
|