blob: ef54742bfc4f9cd1df72613e1ebb2321d43529f9 [file] [log] [blame]
#ifndef NLSR_RT_HPP
#define NLSR_RT_HPP
#include<iostream>
#include<utility>
#include<string>
#include "nlsr_rte.hpp"
class nlsr;
class NextHop;
using namespace std;
class RoutingTable
{
public:
RoutingTable()
: NO_NEXT_HOP(-12345)
{
}
void calculate(nlsr& pnlsr);
void addNextHop(string destRouter, NextHop& nh);
void printRoutingTable();
void addNextHopToDryTable(string destRouter, NextHop& nh);
void printDryRoutingTable();
std::pair<RoutingTableEntry&, bool> findRoutingTableEntry(string destRouter);
void scheduleRoutingTableCalculation(nlsr& pnlsr);
private:
void calculateLsRoutingTable(nlsr& pnlsr);
void calculateHypRoutingTable(nlsr& pnlsr);
void calculateHypDryRoutingTable(nlsr&pnlsr);
void clearRoutingTable();
void clearDryRoutingTable();
const int NO_NEXT_HOP;
std::list< RoutingTableEntry > rTable;
std::list< RoutingTableEntry > dryTable;
};
#endif