31#ifndef ETL_REFERENCE_COUNTED_MESSAGE_POOL_INCLUDED
32#define ETL_REFERENCE_COUNTED_MESSAGE_POOL_INCLUDED
38#include "reference_counted_message.h"
39#include "static_assert.h"
90 template <
typename TCounter>
121 if (p != ETL_NULLPTR)
135 template <
typename TMessage>
149 if (p != ETL_NULLPTR)
162 template <
typename TMessage>
176 if (p != ETL_NULLPTR)
178 ::new(p)
rcm_t(*
this);
207 struct pool_message_parameters
215 static constexpr size_t size2 = pool_message_parameters<
TMessages...>::max_size;
233 template <
typename TMessage1>
234 struct pool_message_parameters<TMessage1>
248 template <
typename TMessage1,
typename TMessage2 = TMessage1,
typename TMessage3 = TMessage1,
typename TMessage4 = TMessage1,
249 typename TMessage5 = TMessage1,
typename TMessage6 = TMessage1,
typename TMessage7 = TMessage1,
typename TMessage8 = TMessage1>
295 template <
typename TCounter>
299 template <
typename TCounter>
305 template <
typename TCounter>
310 template <
typename TCounter>
317#if ETL_USING_CPP11 && ETL_HAS_ATOMIC
The interface for a memory block pool.
Definition imemory_block_allocator.h:44
bool release(const void *const p)
Definition imemory_block_allocator.h:81
bool is_owner_of(const void *const p) const
Definition imemory_block_allocator.h:103
void * allocate(size_t required_size, size_t required_alignment)
Definition imemory_block_allocator.h:58
Interface for a reference counted message pool.
Definition ireference_counted_message_pool.h:44
virtual void unlock()
Definition ireference_counted_message_pool.h:65
virtual void lock()
Definition ireference_counted_message_pool.h:56
Definition reference_counted_message.h:48
Exception if the allocation failed.
Definition reference_counted_message_pool.h:65
Exception type for etl::reference_counted_message_pool.
Definition reference_counted_message_pool.h:52
Exception if the release failed.
Definition reference_counted_message_pool.h:78
A pool for allocating reference counted messages.
Definition reference_counted_message_pool.h:92
void release(const etl::ireference_counted_message &rcmessage)
Destruct a message and send it back to the allocator.
Definition reference_counted_message_pool.h:189
reference_counted_message_pool(etl::imemory_block_allocator &memory_block_allocator_)
Constructor.
Definition reference_counted_message_pool.h:98
etl::reference_counted_message< TMessage, TCounter > * allocate(const TMessage &message)
Allocate a reference counted message from the pool.
Definition reference_counted_message_pool.h:136
etl::reference_counted_message< TMessage, TCounter > * allocate()
Allocate a reference counted message from the pool.
Definition reference_counted_message_pool.h:163
#define ETL_ASSERT(b, e)
Definition error_handler.h:356
Definition exception.h:47
add_rvalue_reference
Definition type_traits_generator.h:1322
is_base_of
Definition type_traits_generator.h:1247
bitset_ext
Definition absolute.h:38
size_t max_size() const
Returns the maximum number of items in the variant_pool.
Definition variant_pool_generator.h:395
ETL_CONSTEXPR TContainer::size_type size(const TContainer &container)
Definition iterator.h:1187
pair holds two objects of arbitrary type
Definition utility.h:164
Definition reference_counted_message_pool.h:251