20 #ifndef SUBSCRIBERHISTORY_H_
21 #define SUBSCRIBERHISTORY_H_
22 #ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC
24 #include <fastdds/dds/topic/TopicDataType.hpp>
25 #include <fastdds/rtps/resources/ResourceManagement.h>
26 #include <fastrtps/qos/ReaderQos.h>
27 #include <fastdds/rtps/history/ReaderHistory.h>
28 #include <fastrtps/qos/QosPolicies.h>
29 #include <fastrtps/common/KeyedChanges.h>
30 #include <fastrtps/subscriber/SampleInfo.h>
31 #include <fastrtps/attributes/TopicAttributes.h>
57 fastdds::dds::TopicDataType* type,
60 rtps::MemoryManagementPolicy_t mempolicy);
72 rtps::CacheChange_t* change,
73 size_t unknown_missing_changes_up_to);
86 std::chrono::steady_clock::time_point& max_blocking_time);
91 std::chrono::steady_clock::time_point& max_blocking_time);
108 rtps::CacheChange_t* change);
117 const rtps::InstanceHandle_t& handle,
118 const std::chrono::steady_clock::time_point& next_deadline_us);
127 rtps::InstanceHandle_t& handle,
128 std::chrono::steady_clock::time_point& next_deadline_us);
132 using t_m_Inst_Caches = std::map<rtps::InstanceHandle_t, KeyedChanges>;
135 t_m_Inst_Caches keyed_changes_;
137 std::chrono::steady_clock::time_point next_deadline_us_;
145 fastdds::dds::TopicDataType* type_;
150 void* get_key_object_;
153 std::function<bool(rtps::CacheChange_t*,
size_t)> receive_fn_;
162 rtps::CacheChange_t* a_change,
163 t_m_Inst_Caches::iterator* map_it);
171 bool find_key_for_change(
172 rtps::CacheChange_t* a_change,
173 t_m_Inst_Caches::iterator& map_it);
182 bool received_change_keep_all_no_key(
184 rtps::CacheChange_t* change,
185 size_t unknown_missing_changes_up_to);
187 bool received_change_keep_last_no_key(
188 rtps::CacheChange_t* change,
189 size_t unknown_missing_changes_up_to);
191 bool received_change_keep_all_with_key(
192 rtps::CacheChange_t* change,
193 size_t unknown_missing_changes_up_to);
195 bool received_change_keep_last_with_key(
196 rtps::CacheChange_t* change,
197 size_t unknown_missing_changes_up_to);
200 bool add_received_change(
201 rtps::CacheChange_t* a_change);
203 bool add_received_change_with_key(
204 rtps::CacheChange_t* a_change,
205 std::vector<rtps::CacheChange_t*>& instance_changes);
207 bool deserialize_change(
208 rtps::CacheChange_t* change,
209 uint32_t ownership_strength,