.. _program_listing_file__tmp_ws_src_fastrtps_include_fastdds_rtps_history_ReaderHistory.h: Program Listing for File ReaderHistory.h ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/fastrtps/include/fastdds/rtps/history/ReaderHistory.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima). // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef _FASTDDS_RTPS_READERHISTORY_H_ #define _FASTDDS_RTPS_READERHISTORY_H_ #include #include #include namespace eprosima { namespace fastrtps { namespace rtps { class WriterProxy; class RTPSReader; class ReaderHistory : public History { friend class RTPSReader; ReaderHistory( ReaderHistory&&) = delete; ReaderHistory& operator =( ReaderHistory&&) = delete; public: RTPS_DllAPI ReaderHistory( const HistoryAttributes& att); RTPS_DllAPI ~ReaderHistory() override; RTPS_DllAPI virtual bool can_change_be_added_nts( const GUID_t& writer_guid, uint32_t total_payload_size, size_t unknown_missing_changes_up_to, bool& will_never_be_accepted) const; RTPS_DllAPI virtual bool received_change( CacheChange_t* change, size_t unknown_missing_changes_up_to); RTPS_DllAPI virtual bool received_change( CacheChange_t* change, size_t unknown_missing_changes_up_to, fastdds::dds::SampleRejectedStatusKind& rejection_reason) { rejection_reason = fastdds::dds::NOT_REJECTED; return received_change(change, unknown_missing_changes_up_to); } RTPS_DllAPI bool virtual completed_change( rtps::CacheChange_t* change) { (void)change; return true; } RTPS_DllAPI virtual bool completed_change( CacheChange_t* change, size_t unknown_missing_changes_up_to, fastdds::dds::SampleRejectedStatusKind& rejection_reason) { (void)change; (void)unknown_missing_changes_up_to; (void)rejection_reason; return true; } RTPS_DllAPI bool add_change( CacheChange_t* a_change); RTPS_DllAPI iterator remove_change_nts( const_iterator removal, bool release = true) override; RTPS_DllAPI bool matches_change( const CacheChange_t* inner, CacheChange_t* outer) override; using History::remove_change; RTPS_DllAPI bool remove_changes_with_guid( const GUID_t& a_guid); bool remove_fragmented_changes_until( const SequenceNumber_t& seq_num, const GUID_t& writer_guid); RTPS_DllAPI bool get_min_change_from( CacheChange_t** min_change, const GUID_t& writerGuid); RTPS_DllAPI virtual void writer_unmatched( const GUID_t& writer_guid, const SequenceNumber_t& last_notified_seq); RTPS_DllAPI virtual void writer_update_its_ownership_strength_nts( const GUID_t& writer_guid, const uint32_t ownership_strength) { static_cast(writer_guid); static_cast(ownership_strength); } protected: RTPS_DllAPI bool do_reserve_cache( CacheChange_t** change, uint32_t size) override; RTPS_DllAPI void do_release_cache( CacheChange_t* ch) override; template inline void remove_changes_with_pred( Pred pred) { assert(nullptr != mp_reader); assert(nullptr != mp_mutex); std::lock_guard guard(*mp_mutex); std::vector::iterator chit = m_changes.begin(); while (chit != m_changes.end()) { if (pred(*chit)) { chit = remove_change_nts(chit); } else { ++chit; } } } RTPSReader* mp_reader; }; } // namespace rtps } // namespace fastrtps } // namespace eprosima #endif /* _FASTDDS_RTPS_READERHISTORY_H_ */