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