Class SubscriberHistory

Inheritance Relationships

Base Type

Class Documentation

class SubscriberHistory : public eprosima::fastrtps::rtps::ReaderHistory

Class SubscriberHistory, container of the different CacheChanges of a subscriber

Read or take data methods.

Methods to read or take data from the History.

param data:

Pointer to the object where you want to read or take the information.

param info:

Pointer to a SampleInfo_t object where you want

param max_blocking_time:

Maximum time the function can be blocked. to store the information about the retrieved data

bool readNextData(void *data, SampleInfo_t *info, std::chrono::steady_clock::time_point &max_blocking_time)
bool takeNextData(void *data, SampleInfo_t *info, std::chrono::steady_clock::time_point &max_blocking_time)

Variants of incoming change processing.

Will be called with the history mutex taken.

param change:

[in] The received change

param unknown_missing_changes_up_to:

Number of missing changes before this one

return:

Public Functions

SubscriberHistory(const TopicAttributes &topic_att, fastdds::dds::TopicDataType *type, const fastrtps::ReaderQos &qos, uint32_t payloadMax, rtps::MemoryManagementPolicy_t mempolicy)

Constructor. Requires information about the subscriber.

Parameters:
  • topic_attTopicAttributes.

  • type – TopicDataType.

  • qos – ReaderQoS policy.

  • payloadMax – Maximum payload size per change.

  • mempolicy – Set whether the payloads ccan dynamically resized or not.

~SubscriberHistory() override
virtual 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 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 bool can_change_be_added_nts(const rtps::GUID_t &writer_guid, uint32_t total_payload_size, size_t unknown_missing_changes_up_to, bool &will_never_be_accepted) const override

Check if a new change can be added to this history.

Parameters:
  • writer_guid[in] GUID of the writer where the change came from.

  • total_payload_size[in] Total payload size of the incoming change.

  • unknown_missing_changes_up_to[in] The number of changes from the same writer with a lower sequence number that could potentially be received in the future.

  • will_never_be_accepted[out] When the method returns false, this parameter will inform whether the change could be accepted in the future or not.

Pre:

change should not be present in the history

Returns:

Whether a call to received_change will succeed when called with the same arguments.

virtual bool received_change(rtps::CacheChange_t *change, size_t unknown_missing_changes_up_to) override

Called when a change is received by the Subscriber. Will add the change to the history.

Parameters:
  • change[in] The received change

  • unknown_missing_changes_up_to – Number of missing changes before this one

Pre:

Change should not be already present in the history.

Returns:

virtual bool completed_change(rtps::CacheChange_t *change) override

Called when a fragmented change is received completely by the Subscriber. Will find its instance and store it.

Parameters:

change[in] The received change

Pre:

Change should be already present in the history.

Returns:

bool get_first_untaken_info(SampleInfo_t *info)

Returns information about the first untaken sample.

Parameters:

info[out] Pointer to a SampleInfo_t structure to store first untaken sample information.

Returns:

true if sample info was returned. false if there is no sample to take.

bool remove_change_sub(rtps::CacheChange_t *change)

This method is called to remove a change from the SubscriberHistory.

Parameters:

change – Pointer to the CacheChange_t.

Returns:

True if removed.

bool remove_change_sub(rtps::CacheChange_t *change, iterator &it)

This method is called to remove a change from the SubscriberHistory.

Parameters:
  • change[in] Pointer to the CacheChange_t.

  • it[inout] Iterator pointing to change on input. Will point to next valid change on output.

Returns:

True if removed.

bool set_next_deadline(const rtps::InstanceHandle_t &handle, const std::chrono::steady_clock::time_point &next_deadline_us)

A method to set the next deadline for the given instance.

Parameters:
  • handle – The handle to the instance

  • next_deadline_us – The time point when the deadline will occur

Returns:

True if the deadline was set correctly

bool get_next_deadline(rtps::InstanceHandle_t &handle, std::chrono::steady_clock::time_point &next_deadline_us)

A method to get the next instance handle that will miss the deadline and the time when the deadline will occur.

Parameters:
  • handle – The handle to the instance

  • next_deadline_us – The time point when the instance will miss the deadline

Returns:

True if the deadline was retrieved successfully