Class real_time_tools::SingletypeThreadsafeObject¶
-
template<typename Type, size_t SIZE>
class SingletypeThreadsafeObject¶ The SingletypeThreadsafeObject is a thread safe object.
- Template Parameters:
Type – is the data type to store in the buffer.
SIZE – is the size of the buffer. It is better to know it at compile time to be 100% real time safe.
Public Functions
-
SingletypeThreadsafeObject()¶
Construct a new SingletypeThreadsafeObject object.
-
SingletypeThreadsafeObject(const std::vector<std::string> &names)¶
Construct a new SingletypeThreadsafeObject object.
- Parameters:
names –
-
void wait_for_update(const size_t &index) const¶
Wait until the data at the given index is modified.
- Parameters:
index –
-
inline void wait_for_update(const std::string &name) const¶
Wait until the data at the given name is modified.
- Parameters:
name –
-
size_t wait_for_update() const¶
Wait unitl any data has been changed and return its index.
- Returns:
size_t
-
inline size_t size()¶
Getters.
get size.
- Returns:
size_t
-
inline Type get(const size_t &index = 0) const¶
Get the data by its index in the buffer.
- Parameters:
index –
- Returns:
Type
-
inline Type get(const std::string &name) const¶
Get the data by its name in the buffer.
- Parameters:
name –
- Returns:
Type
-
template<int INDEX = 0>
inline Type get() const¶ Get the data by its index in the buffer.
Index is solved during compile time
- Template Parameters:
INDEX=0 –
- Returns:
Type
-
void set(const Type &datum, const size_t &index = 0)¶
Setters.
Set one element at a designated index.
- Parameters:
datum –
index –
-
template<int INDEX = 0>
inline void set(Type datum)¶ Set one element at a designated index.
Warning the index is resolved at compile time. This is used for backward comaptibility.
- Todo:
”This is used for backward comaptibility.”, Manuel Which bakward?
- Template Parameters:
INDEX=0 –
- Parameters:
datum –
Private Members
-
std::shared_ptr<std::array<size_t, SIZE>> modification_counts_¶
This is counting the data modification occurences for each individual buffers.
-
std::shared_ptr<size_t> total_modification_count_¶
This is counting the all data modification occurences for all buffer.
/todo Can’t we just some the modification_counts_ array whenever needed?
-
std::map<std::string, size_t> name_to_index_¶
This is the map that allow to deal with data by their names.
-
mutable std::shared_ptr<std::condition_variable> condition_¶
This condition variable is used to wait untils any data has been changed.
-
mutable std::shared_ptr<std::mutex> condition_mutex_¶
This is the mutex of the condition varaible.