LCOV - code coverage report
Current view: top level - DCPS - DisjointSequence.inl (source / functions) Hit Total Coverage
Test: coverage.info Lines: 31 34 91.2 %
Date: 2023-04-30 01:32:43 Functions: 13 13 100.0 %

          Line data    Source code
       1             : /*
       2             :  *
       3             :  *
       4             :  * Distributed under the OpenDDS License.
       5             :  * See: http://www.opendds.org/license.html
       6             :  */
       7             : 
       8             : OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
       9             : 
      10             : namespace OpenDDS {
      11             : namespace DCPS {
      12             : 
      13             : ACE_INLINE SequenceNumber
      14          30 : DisjointSequence::low() const
      15             : {
      16          30 :   return sequences_.begin()->first;
      17             : }
      18             : 
      19             : ACE_INLINE SequenceNumber
      20          26 : DisjointSequence::high() const
      21             : {
      22          26 :   return sequences_.rbegin()->second;
      23             : }
      24             : 
      25             : ACE_INLINE SequenceNumber
      26          40 : DisjointSequence::cumulative_ack() const
      27             : {
      28          40 :   return sequences_.empty()
      29           0 :     ? SequenceNumber::SEQUENCENUMBER_UNKNOWN()
      30          80 :     : sequences_.begin()->second;
      31             : }
      32             : 
      33             : ACE_INLINE SequenceNumber
      34           5 : DisjointSequence::last_ack() const
      35             : {
      36           5 :   return sequences_.empty()
      37           0 :     ? SequenceNumber::SEQUENCENUMBER_UNKNOWN()
      38          10 :     : sequences_.rbegin()->first;
      39             : }
      40             : 
      41             : ACE_INLINE bool
      42           9 : DisjointSequence::empty() const
      43             : {
      44           9 :   return sequences_.empty();
      45             : }
      46             : 
      47             : ACE_INLINE bool
      48          62 : DisjointSequence::disjoint() const
      49             : {
      50          62 :   return sequences_.size() > 1;
      51             : }
      52             : 
      53             : ACE_INLINE
      54         191 : DisjointSequence::DisjointSequence()
      55             : {
      56         191 : }
      57             : 
      58             : ACE_INLINE void
      59          11 : DisjointSequence::reset()
      60             : {
      61          11 :   sequences_.clear();
      62          11 : }
      63             : 
      64             : ACE_INLINE bool
      65         442 : DisjointSequence::insert(SequenceNumber value)
      66             : {
      67         442 :   return insert_i(SequenceRange(value, value));
      68             : }
      69             : 
      70             : ACE_INLINE bool
      71          37 : DisjointSequence::insert(const SequenceRange& range)
      72             : {
      73          37 :   return insert_i(range);
      74             : }
      75             : 
      76             : ACE_INLINE bool
      77           5 : DisjointSequence::insert(const SequenceRange& range,
      78             :                          OPENDDS_VECTOR(SequenceRange)& gaps)
      79             : {
      80           5 :   return insert_i(range, &gaps);
      81             : }
      82             : 
      83             : ACE_INLINE bool
      84             : DisjointSequence::insert_filtered(const SequenceRange& range, const DisjointSequence& filter)
      85             : {
      86             :   for (SequenceNumber i = range.first; i <= range.second; ++i) {
      87             :     if (filter.contains(i) && !insert(i)) {
      88             :       return false;
      89             :     }
      90             :   }
      91             :   return true;
      92             : }
      93             : 
      94             : ACE_INLINE OPENDDS_VECTOR(SequenceRange)
      95           8 : DisjointSequence::present_sequence_ranges() const
      96             : {
      97           8 :   OPENDDS_VECTOR(SequenceRange) present;
      98           8 :   std::copy(sequences_.begin(), sequences_.end(), std::back_inserter(present));
      99           8 :   return present;
     100           0 : }
     101             : 
     102             : ACE_INLINE bool
     103          59 : DisjointSequence::contains(SequenceNumber value) const
     104             : {
     105          59 :   return sequences_.has(value);
     106             : }
     107             : 
     108             : ACE_INLINE bool
     109             : DisjointSequence::contains_any(const SequenceRange& range) const
     110             : {
     111             :   return sequences_.has_any(range);
     112             : }
     113             : 
     114             : } // namespace DCPS
     115             : } // namespace OpenDDS
     116             : 
     117             : OPENDDS_END_VERSIONED_NAMESPACE_DECL

Generated by: LCOV version 1.16