src: decouple classes from Nlsr object

refs: #1952, #2803, #3960, #4288

Change-Id: Ibe3ac3820f11e8107ee4b13e510d53c27467a6cb
diff --git a/src/route/routing-table.cpp b/src/route/routing-table.cpp
index 48ef422..4e2fa86 100644
--- a/src/route/routing-table.cpp
+++ b/src/route/routing-table.cpp
@@ -35,39 +35,44 @@
 
 INIT_LOGGER(route.RoutingTable);
 
-RoutingTable::RoutingTable(ndn::Scheduler& scheduler)
+RoutingTable::RoutingTable(ndn::Scheduler& scheduler, Fib& fib, Lsdb& lsdb,
+                           NamePrefixTable& namePrefixTable, ConfParameter& confParam)
   : afterRoutingChange{std::make_unique<AfterRoutingChange>()}
   , m_scheduler(scheduler)
+  , m_fib(fib)
+  , m_lsdb(lsdb)
+  , m_namePrefixTable(namePrefixTable)
   , m_NO_NEXT_HOP{-12345}
-  , m_routingCalcInterval{static_cast<uint32_t>(ROUTING_CALC_INTERVAL_DEFAULT)}
+  , m_routingCalcInterval{confParam.getRoutingCalcInterval()}
+  , m_isRoutingTableCalculating(false)
+  , m_isRouteCalculationScheduled(false)
+  , m_confParam(confParam)
 {
 }
 
 void
-RoutingTable::calculate(Nlsr& pnlsr)
+RoutingTable::calculate()
 {
-  pnlsr.getLsdb().writeCorLsdbLog();
-  pnlsr.getLsdb().writeNameLsdbLog();
-  pnlsr.getLsdb().writeAdjLsdbLog();
-  pnlsr.getNamePrefixTable().writeLog();
-  if (pnlsr.getIsRoutingTableCalculating() == false) {
-    //setting routing table calculation
-    pnlsr.setIsRoutingTableCalculating(true);
+  m_lsdb.writeCorLsdbLog();
+  m_lsdb.writeNameLsdbLog();
+  m_lsdb.writeAdjLsdbLog();
+  m_namePrefixTable.writeLog();
+  if (m_isRoutingTableCalculating == false) {
+    // setting routing table calculation
+    m_isRoutingTableCalculating = true;
 
-    bool isHrEnabled = pnlsr.getConfParameter().getHyperbolicState() != HYPERBOLIC_STATE_OFF;
+    bool isHrEnabled = m_confParam.getHyperbolicState() != HYPERBOLIC_STATE_OFF;
 
-    if ((!isHrEnabled
-         &&
-         pnlsr.getLsdb()
-         .doesLsaExist(ndn::Name{pnlsr.getConfParameter().getRouterPrefix()}
+    if ((!isHrEnabled &&
+         m_lsdb
+         .doesLsaExist(ndn::Name{m_confParam.getRouterPrefix()}
                        .append(std::to_string(Lsa::Type::ADJACENCY)), Lsa::Type::ADJACENCY))
         ||
-        (isHrEnabled
-         &&
-         pnlsr.getLsdb()
-         .doesLsaExist(ndn::Name{pnlsr.getConfParameter().getRouterPrefix()}
+        (isHrEnabled &&
+         m_lsdb
+         .doesLsaExist(ndn::Name{m_confParam.getRouterPrefix()}
                        .append(std::to_string(Lsa::Type::COORDINATE)), Lsa::Type::COORDINATE))) {
-      if (pnlsr.getIsBuildAdjLsaSheduled() != 1) {
+      if (m_lsdb.getIsBuildAdjLsaSheduled() != 1) {
         NLSR_LOG_TRACE("Clearing old routing table");
         clearRoutingTable();
         // for dry run options
@@ -76,24 +81,24 @@
         NLSR_LOG_DEBUG("Calculating routing table");
 
         // calculate Link State routing
-        if ((pnlsr.getConfParameter().getHyperbolicState() == HYPERBOLIC_STATE_OFF)
-            || (pnlsr.getConfParameter().getHyperbolicState() == HYPERBOLIC_STATE_DRY_RUN)) {
-          calculateLsRoutingTable(pnlsr);
+        if ((m_confParam.getHyperbolicState() == HYPERBOLIC_STATE_OFF)
+            || (m_confParam.getHyperbolicState() == HYPERBOLIC_STATE_DRY_RUN)) {
+          calculateLsRoutingTable();
         }
-        // calculate hyperbolic
-        if (pnlsr.getConfParameter().getHyperbolicState() == HYPERBOLIC_STATE_ON) {
-          calculateHypRoutingTable(pnlsr, false);
+        // calculate hyperbolic routing
+        if (m_confParam.getHyperbolicState() == HYPERBOLIC_STATE_ON) {
+          calculateHypRoutingTable(false);
         }
-        //calculate dry hyperbolic routing
-        if (pnlsr.getConfParameter().getHyperbolicState() == HYPERBOLIC_STATE_DRY_RUN) {
-          calculateHypRoutingTable(pnlsr, true);
+        // calculate dry hyperbolic routing
+        if (m_confParam.getHyperbolicState() == HYPERBOLIC_STATE_DRY_RUN) {
+          calculateHypRoutingTable(true);
         }
         // Inform the NPT that updates have been made
         NLSR_LOG_DEBUG("Calling Update NPT With new Route");
         (*afterRoutingChange)(m_rTable);
-        writeLog(pnlsr.getConfParameter().getHyperbolicState());
-        pnlsr.getNamePrefixTable().writeLog();
-        pnlsr.getFib().writeLog();
+        writeLog();
+        m_namePrefixTable.writeLog();
+        m_fib.writeLog();
       }
       else {
         NLSR_LOG_DEBUG("Adjacency building is scheduled, so"
@@ -108,61 +113,60 @@
       // need to update NPT here
       NLSR_LOG_DEBUG("Calling Update NPT With new Route");
       (*afterRoutingChange)(m_rTable);
-      writeLog(pnlsr.getConfParameter().getHyperbolicState());
-      pnlsr.getNamePrefixTable().writeLog();
-      pnlsr.getFib().writeLog();
-      //debugging purpose end
+      writeLog();
+      m_namePrefixTable.writeLog();
+      m_fib.writeLog();
+      // debugging purpose end
     }
-    pnlsr.setIsRouteCalculationScheduled(false); //clear scheduled flag
-    pnlsr.setIsRoutingTableCalculating(false); //unsetting routing table calculation
+    m_isRouteCalculationScheduled = false; // clear scheduled flag
+    m_isRoutingTableCalculating = false; // unsetting routing table calculation
   }
   else {
-    scheduleRoutingTableCalculation(pnlsr);
+    scheduleRoutingTableCalculation();
   }
 }
 
 void
-RoutingTable::calculateLsRoutingTable(Nlsr& nlsr)
+RoutingTable::calculateLsRoutingTable()
 {
   NLSR_LOG_DEBUG("RoutingTable::calculateLsRoutingTable Called");
 
   Map map;
-  map.createFromAdjLsdb(nlsr.getLsdb().getAdjLsdb().begin(), nlsr.getLsdb().getAdjLsdb().end());
+  map.createFromAdjLsdb(m_lsdb.getAdjLsdb().begin(), m_lsdb.getAdjLsdb().end());
   map.writeLog();
 
   size_t nRouters = map.getMapSize();
 
   LinkStateRoutingTableCalculator calculator(nRouters);
 
-  calculator.calculatePath(map, *this, nlsr);
+  calculator.calculatePath(map, *this, m_confParam, m_lsdb.getAdjLsdb());
 }
 
 void
-RoutingTable::calculateHypRoutingTable(Nlsr& nlsr, bool isDryRun)
+RoutingTable::calculateHypRoutingTable(bool isDryRun)
 {
   Map map;
-  map.createFromCoordinateLsdb(nlsr.getLsdb().getCoordinateLsdb().begin(),
-                               nlsr.getLsdb().getCoordinateLsdb().end());
+  map.createFromCoordinateLsdb(m_lsdb.getCoordinateLsdb().begin(),
+                               m_lsdb.getCoordinateLsdb().end());
   map.writeLog();
 
   size_t nRouters = map.getMapSize();
 
-  HyperbolicRoutingCalculator calculator(nRouters, isDryRun,
-                                         nlsr.getConfParameter().getRouterPrefix());
+  HyperbolicRoutingCalculator calculator(nRouters, isDryRun, m_confParam.getRouterPrefix());
 
-  calculator.calculatePath(map, *this, nlsr.getLsdb(), nlsr.getAdjacencyList());
+  calculator.calculatePath(map, *this, m_lsdb, m_confParam.getAdjacencyList());
 }
 
 void
-RoutingTable::scheduleRoutingTableCalculation(Nlsr& pnlsr)
+RoutingTable::scheduleRoutingTableCalculation()
 {
-  if (pnlsr.getIsRouteCalculationScheduled() != true) {
+  if (m_isRouteCalculationScheduled != true) {
     NLSR_LOG_DEBUG("Scheduling routing table calculation in " << m_routingCalcInterval);
 
     m_scheduler.scheduleEvent(m_routingCalcInterval,
-                              std::bind(&RoutingTable::calculate, this, std::ref(pnlsr)));
+                              std::bind(&RoutingTable::calculate, this));
 
-    pnlsr.setIsRouteCalculationScheduled(true);
+    m_isRouteCalculationScheduled = true;
   }
 }
 
@@ -202,23 +206,21 @@
 }
 
 void
-RoutingTable::writeLog(int hyperbolicState)
+RoutingTable::writeLog()
 {
   NLSR_LOG_DEBUG("---------------Routing Table------------------");
-  for (std::list<RoutingTableEntry>::iterator it = m_rTable.begin() ;
-       it != m_rTable.end(); ++it) {
-    NLSR_LOG_DEBUG("Destination: " << (*it).getDestination());
+  for (const auto& rte : m_rTable) {
+    NLSR_LOG_DEBUG("Destination: " << rte.getDestination());
     NLSR_LOG_DEBUG("Nexthops: ");
-    (*it).getNexthopList().writeLog();
+    rte.getNexthopList().writeLog();
   }
 
-  if (hyperbolicState == HYPERBOLIC_STATE_DRY_RUN) {
+  if (m_confParam.getHyperbolicState() == HYPERBOLIC_STATE_DRY_RUN) {
     NLSR_LOG_DEBUG("--------Hyperbolic Routing Table(Dry)---------");
-    for (std::list<RoutingTableEntry>::iterator it = m_dryTable.begin() ;
-        it != m_dryTable.end(); ++it) {
-      NLSR_LOG_DEBUG("Destination: " << (*it).getDestination());
+    for (const auto& rte : m_dryTable) {
+      NLSR_LOG_DEBUG("Destination: " << rte.getDestination());
       NLSR_LOG_DEBUG("Nexthops: ");
-      (*it).getNexthopList().writeLog();
+      rte.getNexthopList().writeLog();
     }
   }
 }