Class WriterHistory

Inheritance Relationships

Base Type

Class Documentation

class WriterHistory : public eprosima::fastdds::rtps::History

Class WriterHistory, container of the different CacheChanges of a writer

Public Functions

FASTDDS_EXPORTED_API WriterHistory(const HistoryAttributes &att)

Construct a WriterHistory.

Parameters:

att – Attributes configuring the WriterHistory.

FASTDDS_EXPORTED_API WriterHistory(const HistoryAttributes &att, const std::shared_ptr<IPayloadPool> &payload_pool)

Construct a WriterHistory with a custom payload pool.

Parameters:
FASTDDS_EXPORTED_API WriterHistory(const HistoryAttributes &att, const std::shared_ptr<IPayloadPool> &payload_pool, const std::shared_ptr<IChangePool> &change_pool)

Construct a WriterHistory with custom payload and change pools.

Parameters:
virtual FASTDDS_EXPORTED_API ~WriterHistory() override
FASTDDS_EXPORTED_API const std::shared_ptr< IPayloadPool > & get_payload_pool () const

Get the payload pool used by this history.

Returns:

Reference to the payload pool used by this history.

FASTDDS_EXPORTED_API const std::shared_ptr< IChangePool > & get_change_pool () const

Get the change pool used by this history.

Returns:

Reference to the change pool used by this history.

FASTDDS_EXPORTED_API CacheChange_t * create_change (ChangeKind_t change_kind, InstanceHandle_t handle=c_InstanceHandle_Unknown)

Create a new CacheChange_t object.

Parameters:
  • change_kind – Kind of the change.

  • handleInstanceHandle_t of the change.

Returns:

Pointer to the new CacheChange_t object.

Pre:

A writer has been associated with this history

FASTDDS_EXPORTED_API CacheChange_t * create_change (uint32_t payload_size, ChangeKind_t change_kind, InstanceHandle_t handle=c_InstanceHandle_Unknown)

Create a new CacheChange_t object with a specific payload size.

Parameters:
  • payload_size – Size of the payload.

  • change_kind – Kind of the change.

  • handleInstanceHandle_t of the change.

Returns:

Pointer to the new CacheChange_t object.

Pre:

A writer has been associated with this history

FASTDDS_EXPORTED_API bool add_change (CacheChange_t *a_change)

Add a CacheChange_t to the WriterHistory.

Parameters:

a_change – Pointer to the CacheChange_t to be added.

Returns:

True if added.

FASTDDS_EXPORTED_API bool add_change (CacheChange_t *a_change, WriteParams &wparams)

Add a CacheChange_t to the WriterHistory.

Parameters:
  • a_change – Pointer to the CacheChange_t to be added.

  • wparams – Extra write parameters.

Returns:

True if added.

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

Remove a specific change from the history. No Thread Safe

Parameters:
  • removal – iterator to the change for removal

  • release – specifies if the change should be return to the pool

Returns:

iterator to the next change if any

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) override

Remove a specific change from the history. No Thread Safe

Parameters:
  • removal – iterator to the change for removal

  • release – specifies if the change should be return to the pool

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

Returns:

iterator to the next change if any

virtual FASTDDS_EXPORTED_API bool matches_change (const CacheChange_t *inner, CacheChange_t *outer) override

Criteria to search a specific CacheChange_t on history

Parameters:
  • inner – change to compare

  • outer – change for comparison

Returns:

true if inner matches outer criteria

virtual FASTDDS_EXPORTED_API bool remove_change_g (CacheChange_t *a_change)
virtual FASTDDS_EXPORTED_API bool remove_change_g (CacheChange_t *a_change, const std::chrono::time_point< std::chrono::steady_clock > &max_blocking_time)
FASTDDS_EXPORTED_API bool remove_change (const SequenceNumber_t &sequence_number)
FASTDDS_EXPORTED_API CacheChange_t * remove_change_and_reuse (const SequenceNumber_t &sequence_number)
FASTDDS_EXPORTED_API bool remove_min_change ()

Remove the CacheChange_t with the minimum sequenceNumber.

Returns:

True if correctly removed.

FASTDDS_EXPORTED_API bool remove_min_change (const std::chrono::time_point< std::chrono::steady_clock > &max_blocking_time)

Remove the CacheChange_t with the minimum sequenceNumber.

Parameters:

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

Returns:

True if correctly removed.

inline FASTDDS_EXPORTED_API SequenceNumber_t next_sequence_number () const
FASTDDS_EXPORTED_API bool release_change (CacheChange_t *ch)

Release a change when it is not being used anymore.

Parameters:

ch – Pointer to the cache change to be released.

Returns:

whether the operation succeeded or not

Pre:

  • A writer has been associated with this history

  • ch is not nullptr

  • ch points to a cache change obtained from a call to this->create_change

Post:

memory pointed to by ch is not accessed

FASTDDS_EXPORTED_API bool remove_change (CacheChange_t *ch)

Introduce base class method into scope.

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

Introduce base class method into scope.

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

Introduce base class method into scope.

Protected Functions

virtual FASTDDS_EXPORTED_API void do_release_cache (CacheChange_t *ch) override
bool add_change_(CacheChange_t *a_change, WriteParams &wparams, std::chrono::time_point<std::chrono::steady_clock> max_blocking_time = std::chrono::steady_clock::now() + std::chrono::hours(24))

Introduce a change into the history, and let the associated writer send it.

Parameters:
  • a_change[inout] The change to be added. Its sequenceNumber and sourceTimestamp will be filled by this method. Its wparams will be filled from parameter wparams.

  • wparams[inout] On input, it holds the WriteParams to be copied into a_change. On output, will be filled with the sample identity assigned to a_change.

  • max_blocking_time[in] Maximum time point the writer is allowed to be blocked till the change is put into the wire or the sending queue.

Returns:

whether a_change could be added to the history.

template<typename PreCommitHook>
inline bool add_change_with_commit_hook(CacheChange_t *a_change, WriteParams &wparams, PreCommitHook pre_commit, std::chrono::time_point<std::chrono::steady_clock> max_blocking_time)

Introduce a change into the history, and let the associated writer send it.

Parameters:
  • a_change[inout] The change to be added. Its sequenceNumber and sourceTimestamp will be filled by this method. Its wparams will be filled from parameter wparams.

  • wparams[inout] On input, it holds the WriteParams to be copied into a_change. On output, will be filled with the sample identity assigned to a_change.

  • pre_commit[in] Functor called after a_change has been added to the history, and its information has been filled, but before the writer is notified of the insertion.

  • max_blocking_time[in] Maximum time point the writer is allowed to be blocked till the change is put into the wire or the sending queue.

Returns:

whether a_change could be added to the history.

Protected Attributes

SequenceNumber_t m_lastCacheChangeSeqNum = {}

Last CacheChange Sequence Number added to the History.

BaseWriter *mp_writer = nullptr

Pointer to the associated writer.

uint32_t high_mark_for_frag_ = 0