LCOV - code coverage report
Current view: top level - ifmap - ifmap_update.cc (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 83 97 85.6 %
Date: 2026-06-08 02:02:55 Functions: 24 29 82.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #include "ifmap/ifmap_update.h"
       6             : 
       7             : #include "base/time_util.h"
       8             : #include "ifmap/ifmap_node.h"
       9             : 
      10           0 : IFMapObjectPtr::IFMapObjectPtr()
      11           0 :     : type(NIL) {
      12           0 :       u.ptr = NULL;
      13           0 : }
      14             : 
      15        3032 : IFMapObjectPtr::IFMapObjectPtr(IFMapNode *node)
      16        3032 :     : type(NODE) {
      17        3032 :       u.node = node;
      18        3032 : }
      19             : 
      20        3338 : IFMapObjectPtr::IFMapObjectPtr(IFMapLink *link)
      21        3338 :     : type(LINK) {
      22        3338 :       u.link = link;
      23        3338 : }
      24             : 
      25        1694 : void IFMapListEntry::set_queue_insert_at_to_now() {
      26        1694 :     queue_insert_at = UTCTimestampUsec();
      27        1694 : }
      28             : 
      29           0 : std::string IFMapListEntry::queue_insert_ago_str() {
      30           0 :     return duration_usecs_to_string(UTCTimestampUsec() - queue_insert_at);
      31             : }
      32             : 
      33         655 : IFMapUpdate::IFMapUpdate(IFMapNode *node, bool positive)
      34             :     : IFMapListEntry(positive ? UPDATE : DEL),
      35         655 :       data_(node) {
      36         655 : }
      37             : 
      38         626 : IFMapUpdate::IFMapUpdate(IFMapLink *link, bool positive)
      39             :     : IFMapListEntry(positive ? UPDATE : DEL),
      40         626 :       data_(link) {
      41         626 : }
      42             : 
      43         903 : std::string IFMapUpdate::ConfigName() {
      44         903 :     std::string name;
      45         903 :     if (data().type == IFMapObjectPtr::NODE) {
      46         435 :         IFMapNode *node = data().u.node;
      47         435 :         name = node->ToString();
      48         468 :     } else if (data().type == IFMapObjectPtr::LINK) {
      49         468 :         IFMapLink *link = data().u.link;
      50         468 :         name = link->ToString();
      51             :     }
      52         903 :     return name;
      53           0 : }
      54             : 
      55           0 : std::string IFMapUpdate::ToString() {
      56           0 :     return TypeToString() + ":" + ConfigName();
      57             : }
      58             : 
      59        1977 : void IFMapUpdate::AdvertiseReset(const BitSet &set) {
      60        1977 :     advertise_.Reset(set);
      61        1977 : }
      62             : 
      63        1168 : void IFMapUpdate::AdvertiseOr(const BitSet &set) {
      64        1168 :     advertise_ |= set;
      65        1168 : }
      66             : 
      67         199 : void IFMapUpdate::SetAdvertise(const BitSet &set) {
      68         199 :     advertise_ = set;
      69         199 : }
      70             : 
      71         213 : IFMapMarker::IFMapMarker()
      72         213 :     : IFMapListEntry(MARKER) {
      73         213 : }
      74             : 
      75          49 : std::string IFMapMarker::ToString() {
      76          98 :     return std::string("Marker:") + mask.ToNumberedString();
      77             : }
      78             : 
      79        2377 : IFMapState::IFMapState(IFMapNode *node)
      80        2377 :     : sig_(kInvalidSig), data_(node), crc_(0) {
      81        2377 : }
      82             : 
      83        2712 : IFMapState::IFMapState(IFMapLink *link)
      84        2712 :     : sig_(kInvalidSig), data_(link), crc_(0) {
      85        2712 : }
      86             : 
      87        5089 : IFMapState::~IFMapState() {
      88        5089 :     assert(update_list_.empty());
      89        5089 : }
      90             : 
      91       15676 : IFMapUpdate *IFMapState::GetUpdate(IFMapListEntry::EntryType type) {
      92       15676 :     for (UpdateList::iterator iter = update_list_.begin();
      93       35116 :          iter != update_list_.end(); ++iter) {
      94        3442 :         IFMapUpdate *update = iter.operator->();
      95        3442 :         if (update->type == type) {
      96        1560 :             return update;
      97             :         }
      98             :     }
      99       14116 :     return NULL;
     100             : }
     101             : 
     102        1239 : void IFMapState::Insert(IFMapUpdate *update) {
     103        1239 :     update_list_.push_front(*update);
     104        1239 : }
     105             : 
     106        1197 : void IFMapState::Remove(IFMapUpdate *update) {
     107        2394 :     update_list_.erase(update_list_.s_iterator_to(*update));
     108        1197 : }
     109             : 
     110          86 : IFMapNode *IFMapState::GetIFMapNode() const {
     111          86 :     if (data_.IsNode()) {
     112          86 :         return data_.u.node;
     113             :     } else {
     114           0 :         return NULL;
     115             :     }
     116             : }
     117             : 
     118           0 : IFMapLink *IFMapState::GetIFMapLink() const {
     119           0 :     if (data_.IsLink()) {
     120           0 :         return data_.u.link;
     121             :     } else {
     122           0 :         return NULL;
     123             :     }
     124             : }
     125             : 
     126        2377 : IFMapNodeState::IFMapNodeState(IFMapNode *node)
     127        2377 :     : IFMapState(node) {
     128        2377 : }
     129             : 
     130         126 : bool IFMapNodeState::HasDependents() const {
     131         126 :     return !dependents_.empty();
     132             : }
     133             : 
     134        2712 : IFMapLinkState::IFMapLinkState(IFMapLink *link)
     135        2712 :     : IFMapState(link), left_(link), right_(link) {
     136        2712 : }
     137             : 
     138        2714 : void IFMapLinkState::SetDependency(IFMapNodeState *first,
     139             :                                    IFMapNodeState *second) {
     140        2714 :     left_.reset(first);
     141        2714 :     right_.reset(second);
     142        2714 : }
     143             : 
     144          43 : void IFMapLinkState::RemoveDependency() {
     145          43 :     left_.clear();
     146          43 :     right_.clear();
     147          43 : }
     148             : 
     149         748 : bool IFMapLinkState::HasDependency() const {
     150         748 :     return left_.get() != NULL;
     151             : }
     152             : 

Generated by: LCOV version 1.14