18.2.7.1. History

class History

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

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

Public Functions

inline bool reserve_Cache(CacheChange_t **change, const std::function<uint32_t()> &calculateSizeFunc)

Reserve a CacheChange_t from the CacheChange pool.

Warning

This method has been deprecated and will be removed on v3.0.0

Parameters
  • change[out] Pointer to pointer to the CacheChange_t to reserve

  • calculateSizeFunc[in] Function to calculate the size of the payload.

Returns

True if reserved

inline bool reserve_Cache(CacheChange_t **change, uint32_t dataSize)

Reserve a CacheChange_t from the CacheChange pool.

Warning

This method has been deprecated and will be removed on v3.0.0

Parameters
  • change[out] Pointer to pointer to the CacheChange_t to reserve

  • dataSize[in] Required size for the payload.

Returns

True if reserved

inline void release_Cache(CacheChange_t *ch)

release a previously reserved CacheChange_t.

Warning

This method has been deprecated and will be removed on v3.0.0

Parameters

ch – Pointer to the CacheChange_t.

inline bool isFull()

Check if the history is full

Returns

true if the History is full.

inline size_t getHistorySize()

Get the History size.

Returns

Size of the history.

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 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 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.

bool remove_all_changes()

Remove all changes from the History

Returns

True if everything was correctly removed.

bool remove_change(CacheChange_t *ch)

Remove a specific change from the history.

Parameters

ch – Pointer to the CacheChange_t.

Returns

True if removed.

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 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 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 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 iterator changesBegin()

Get the beginning of the changes history iterator.

Returns

Iterator to the beginning of the vector.

inline iterator changesEnd()

Get the end of the changes history iterator.

Returns

Iterator to the end of the vector.

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.

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 uint32_t getTypeMaxSerialized()

Get the maximum serialized payload size

Returns

Maximum serialized payload size

inline RecursiveTimedMutex *getMutex() const

Get the mutex.

Returns

Mutex

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.