LCOV - code coverage report
Current view: top level - vnsw/agent/port_ipc - config_stale_cleaner.cc (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 13 33 39.4 %
Date: 2026-08-03 02:19:58 Functions: 5 9 55.6 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #include <cfg/cfg_init.h>
       6             : #include <cfg/cfg_types.h>
       7             : #include <port_ipc/port_ipc_types.h>
       8             : #include "config_stale_cleaner.h"
       9             : #include "port_ipc_handler.h"
      10             : #include "port_subscribe_table.h"
      11             : 
      12           3 : ConfigStaleCleaner::ConfigStaleCleaner(Agent *agent, TimerCallback callback) :
      13           3 :     agent_(agent),
      14           3 :     timeout_(kConfigStaleTimeout), audit_callback_(callback) {
      15           3 : }
      16             : 
      17           3 : ConfigStaleCleaner::~ConfigStaleCleaner() {
      18             :     // clean up the running timers
      19           3 :     for (std::set<Timer *>::iterator it = running_timer_list_.begin();
      20           3 :          it != running_timer_list_.end(); ++it) {
      21           0 :         TimerManager::DeleteTimer(*it);
      22             :     }
      23           3 : }
      24             : 
      25           0 : void ConfigStaleCleaner::StartStaleCleanTimer(int32_t version) {
      26             :     // create timer, to be deleted on completion
      27             :     Timer *timer =
      28           0 :         TimerManager::CreateTimer(
      29           0 :             *(agent_->event_manager())->io_service(), "Stale cleanup timer",
      30           0 :             TaskScheduler::GetInstance()->GetTaskId("db::DBTable"), 0, true);
      31           0 :     running_timer_list_.insert(timer);
      32           0 :     timer->Start(timeout_,
      33             :                  boost::bind(&ConfigStaleCleaner::StaleEntryTimeout, this,
      34             :                              version, timer));
      35           0 : }
      36             : 
      37           0 : bool ConfigStaleCleaner::StaleEntryTimeout(int32_t version, Timer *timer) {
      38           0 :     if (!audit_callback_.empty()) {
      39           0 :         audit_callback_(version);
      40             :     }
      41           0 :     running_timer_list_.erase(timer);
      42           0 :     return false;
      43             : }
      44             : 
      45             : ////////////////////////////////////////////////////////////////////////////////
      46             : 
      47           3 : InterfaceConfigStaleCleaner::InterfaceConfigStaleCleaner(Agent *agent) :
      48           3 :     ConfigStaleCleaner(agent, NULL) {
      49           3 : }
      50             : 
      51           6 : InterfaceConfigStaleCleaner::~InterfaceConfigStaleCleaner() {
      52           6 : }
      53             : 
      54             : bool
      55           0 : InterfaceConfigStaleCleaner::OnInterfaceConfigStaleTimeout(int32_t version) {
      56             :     PortSubscribeTable *table =
      57           0 :         agent_->port_ipc_handler()->port_subscribe_table();
      58           0 :     if (!table) {
      59           0 :         return false;
      60             :     }
      61             : 
      62           0 :     CONFIG_TRACE(PortInfo, "InterfaceConfigStaleCleaner Walk invoked.");
      63           0 :     table->StaleWalk(version);
      64           0 :     return false;
      65             : }

Generated by: LCOV version 1.14