Class History

Inheritance Relationships

Derived Types

Class Documentation

class History

Class History, container of the different CacheChanges and the methods to access them.

Subclassed by eprosima::fastdds::rtps::ReaderHistory, eprosima::fastdds::rtps::WriterHistory

Public Types

using iterator = std::vector<CacheChange_t*>::iterator
using reverse_iterator = std::vector<CacheChange_t*>::reverse_iterator
using const_iterator = std::vector<CacheChange_t*>::const_iterator

Public Functions

inline FASTDDS_EXPORTED_API bool isFull ()

Check if the history is full

Returns:

true if the History is full.

inline FASTDDS_EXPORTED_API size_t getHistorySize ()

Get the History size.

Returns:

Size of the history.

FASTDDS_EXPORTED_API const_iterator find_change_nts (CacheChange_t *ch)

Find a specific change in the history using the matches_change method criteria. No Thread Safe

Parameters:

ch – Pointer to the CacheChange_t to search for.

Returns:

an iterator if a suitable change is found

virtual FASTDDS_EXPORTED_API iterator remove_change_nts (const_iterator removal, bool release=true)

Remove a specific change from the history. No Thread Safe

Parameters:
  • removal – iterator to the CacheChange_t to remove.

  • release – defaults to true and hints if the CacheChange_t should return to the pool

Returns:

iterator to the next CacheChange_t or end iterator.

virtual FASTDDS_EXPORTED_API iterator remove_change_nts (const_iterator removal, const std::chrono::time_point< std::chrono::steady_clock > &max_blocking_time, bool release=true)

Remove a specific change from the history. No Thread Safe

Parameters:
  • removal – iterator to the CacheChange_t to remove.

  • max_blocking_time[in] Maximum time this method has to complete the task.

  • release – defaults to true and hints if the CacheChange_t should return to the pool

Returns:

iterator to the next CacheChange_t or end iterator.

FASTDDS_EXPORTED_API bool remove_all_changes ()

Remove all changes from the History

Returns:

True if everything was correctly removed.

FASTDDS_EXPORTED_API bool remove_change (CacheChange_t *ch)

Remove a specific change from the history.

Parameters:

ch – Pointer to the CacheChange_t.

Returns:

True if removed.

FASTDDS_EXPORTED_API bool remove_change (CacheChange_t *ch, const std::chrono::time_point< std::chrono::steady_clock > &max_blocking_time)

Remove a specific change from the history.

Parameters:
  • ch – Pointer to the CacheChange_t.

  • max_blocking_time[in] Maximum time this method has to complete the task.

Returns:

True if removed.

inline FASTDDS_EXPORTED_API const_iterator find_change (CacheChange_t *ch)

Find a specific change in the history using the matches_change method criteria.

Parameters:

ch – Pointer to the CacheChange_t to search for.

Returns:

an iterator if a suitable change is found

virtual FASTDDS_EXPORTED_API bool matches_change (const CacheChange_t *ch_inner, CacheChange_t *ch_outer)

Verifies if an element of the changes collection matches a given change Derived classes have more info on how to identify univocally a change and should override.

Parameters:
  • ch_inner – element of the collection to compare with the given change

  • ch_outer – Pointer to the CacheChange_t to identify.

Returns:

true if the iterator identifies this change.

inline FASTDDS_EXPORTED_API iterator remove_change (const_iterator removal, bool release=true)

Remove a specific change from the history.

Parameters:
  • removal – iterator to the CacheChange_t to remove.

  • release – defaults to true and hints if the CacheChange_t should return to the pool

Returns:

iterator to the next CacheChange_t or end iterator.

inline FASTDDS_EXPORTED_API iterator changesBegin ()

Get the beginning of the changes history iterator.

Returns:

Iterator to the beginning of the vector.

inline FASTDDS_EXPORTED_API reverse_iterator changesRbegin ()
inline FASTDDS_EXPORTED_API iterator changesEnd ()

Get the end of the changes history iterator.

Returns:

Iterator to the end of the vector.

inline FASTDDS_EXPORTED_API reverse_iterator changesRend ()
FASTDDS_EXPORTED_API bool get_min_change (CacheChange_t **min_change)

Get the minimum CacheChange_t.

Parameters:

min_change – Pointer to pointer to the minimum change.

Returns:

True if correct.

FASTDDS_EXPORTED_API bool get_max_change (CacheChange_t **max_change)

Get the maximum CacheChange_t.

Parameters:

max_change – Pointer to pointer to the maximum change.

Returns:

True if correct.

inline FASTDDS_EXPORTED_API uint32_t getTypeMaxSerialized ()

Get the maximum serialized payload size

Returns:

Maximum serialized payload size

inline FASTDDS_EXPORTED_API RecursiveTimedMutex * getMutex () const

Get the mutex

Returns:

Mutex

FASTDDS_EXPORTED_API bool get_change (const SequenceNumber_t &seq, const GUID_t &guid, CacheChange_t **change) const
const_iterator get_change_nts(const SequenceNumber_t &seq, const GUID_t &guid, CacheChange_t **change, const_iterator hint) const
bool get_earliest_change(CacheChange_t **change)

A method to get the change with the earliest timestamp.

Parameters:

change – Pointer to pointer to earliest change

Returns:

True on success

Public Members

HistoryAttributes m_att

Attributes of the History.

Protected Functions

History(const HistoryAttributes &att)
History(History&&) = delete
History &operator=(History&&) = delete
virtual ~History()
void print_changes_seqNum2()

Print the seqNum of the changes in the History (for debuggisi, mng purposes).

virtual FASTDDS_EXPORTED_API void do_release_cache (CacheChange_t *ch)=0
History::iterator remove_iterator_constness(const_iterator c_it)

Removes the constness of a const_iterator to obtain a regular iterator.

This function takes a const_iterator as input and returns a regular iterator by removing the constness.

Parameters:

c_it – The const_iterator to remove constness from.

Returns:

An iterator with the same position as the input const_iterator.

Protected Attributes

std::vector<CacheChange_t*> m_changes

Vector of pointers to the CacheChange_t.

bool m_isHistoryFull = false

Variable to know if the history is full without needing to block the History mutex.

RecursiveTimedMutex *mp_mutex = nullptr

Mutex for the History.