OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
config_stale_cleaner.cc
Go to the documentation of this file.
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 
13  agent_(agent),
14  timeout_(kConfigStaleTimeout), audit_callback_(callback) {
15 }
16 
18  // clean up the running timers
19  for (std::set<Timer *>::iterator it = running_timer_list_.begin();
20  it != running_timer_list_.end(); ++it) {
22  }
23 }
24 
26  // create timer, to be deleted on completion
27  Timer *timer =
29  *(agent_->event_manager())->io_service(), "Stale cleanup timer",
30  TaskScheduler::GetInstance()->GetTaskId("db::DBTable"), 0, true);
31  running_timer_list_.insert(timer);
32  timer->Start(timeout_,
33  boost::bind(&ConfigStaleCleaner::StaleEntryTimeout, this,
34  version, timer));
35 }
36 
38  if (!audit_callback_.empty()) {
39  audit_callback_(version);
40  }
41  running_timer_list_.erase(timer);
42  return false;
43 }
44 
46 
48  ConfigStaleCleaner(agent, NULL) {
49 }
50 
52 }
53 
54 bool
56  PortSubscribeTable *table =
58  if (!table) {
59  return false;
60  }
61 
62  CONFIG_TRACE(PortInfo, "InterfaceConfigStaleCleaner Walk invoked.");
63  table->StaleWalk(version);
64  return false;
65 }
PortSubscribeTable * port_subscribe_table() const
#define CONFIG_TRACE(obj,...)
Definition: cfg_init.h:236
PortIpcHandler * port_ipc_handler() const
Definition: agent.cc:1005
int GetTaskId(const std::string &name)
Definition: task.cc:856
Definition: agent.h:358
static TaskScheduler * GetInstance()
Definition: task.cc:547
EventManager * event_manager() const
Definition: agent.h:1103
static Timer * CreateTimer(boost::asio::io_context &service, const std::string &name, int task_id=Timer::GetTimerTaskId(), int task_instance=Timer::GetTimerInstanceId(), bool delete_on_completion=false)
Definition: timer.cc:201
virtual void StartStaleCleanTimer(int32_t version)
TimerCallback audit_callback_
bool Start(int time, Handler handler, ErrorHandler error_handler=NULL)
Definition: timer.cc:108
void StaleWalk(uint64_t version)
boost::function< void(uint32_t)> TimerCallback
std::set< Timer * > running_timer_list_
Definition: timer.h:54
ConfigStaleCleaner(Agent *agent, TimerCallback callback)
virtual bool OnInterfaceConfigStaleTimeout(int32_t version)
virtual bool StaleEntryTimeout(int32_t version, Timer *timer)
static bool DeleteTimer(Timer *Timer)
Definition: timer.cc:222