61 :
rModule(parent, _nAddr, _domain, _addr) {
69 if(up == NULL) {
return false; }
72 string node = it->first;
73 if(
netState[node].sId < it->second.sId){
87 void LS::addFlow(
const Address &_nAddr,
const std::string &_addr,
const unsigned short &_metric){
88 nei[_nAddr] = _metric;
96 myEntry->
links[_addr] = _metric;
110 myEntry->
links.erase(_addr);
122 myEntry->
links[_addr] = 0;
134 myEntry->
links.erase(_addr);
153 if(ret.
entries[tIt->first] == tIt->second){
177 if(msg->isSelfMessage()){
224 for(
s2mIt it = links->begin(); it !=links->end(); it++){
225 waiting[it->first] =
psT(&t, it->second);
229 while(!waiting.empty()){
230 unsigned short min = UINT16_MAX;
233 for (
wMapIt it = waiting.begin(); it != waiting.end(); it++){
234 if(it->second.metric < min){
235 min = it->second.metric;
238 if(it->second.metric == min){
239 mins.push_back(it->first);
243 while(!mins.empty()){
244 string addr = mins.back();
247 psT ps = waiting[addr];
251 ps.
p->
chl.insert(nt);
257 for(
s2mIt it = links->begin(); it !=links->end(); it++){
258 string daddr = it->first;
259 if(added.find(daddr) == added.end()){
260 wMapIt eI = waiting.find(daddr);
261 if(eI == waiting.end()){
262 waiting[daddr] =
psT(nt, ps.
metric + it->second);
263 }
else if(eI->second.metric > ps.
metric + it->second){
264 eI->second.metric = ps.
metric + it->second;
277 ret[(*it)->addr] = next;
void addFlow(const Address &_nAddr, const std::string &_addr, const unsigned short &_metric)
linksSt::iterator linksStIt
LS(Routing *parent, const Address &_nAddr, const std::string &_domain, const std::string &_addr)
void setInfMetric(const unsigned short &inf)
void chSendUpdate(RoutingUpdate *update)
void removeFlow(const Address &_nAddr, const std::string &_addr)
void addAddr(const std::string &_addr)
void addEntry(const std::string &_addr, linksU _neig)
bool processUpdate(RoutingUpdate *update)
void setEntries(linksSt _entries)
std::map< std::string, psT > wMap
void handleMessage(cMessage *msg)
std::set< TreeNode * > chl
void scheduleAt(const double &time, cMessage *)
linksSt getChangedEntries()
std::set< TreeNode * >::iterator TreeNodeIt
std::map< std::string, Address > s2A
std::map< std::string, linksU > linksSt
void addRecursive(s2A &ret, const Address &next, TreeNode *t)
std::map< std::string, unsigned short > s2m
std::vector< std::string > sList
neighMetric::iterator neighMetricIt
Address class holds IPC Process identification.
void removeAddr(const std::string &_addr)
LSUpdate(const Address &_addr, const std::string &_domain)