From: Richard Whitehouse Date: Tue, 17 May 2011 19:37:22 +0000 (+0100) Subject: Converge state tables X-Git-Url: https://git.richardwhiuk.com/?a=commitdiff_plain;h=3824994996c115079cdf03eef51ec517e8da6b2c;p=ns-moose.git Converge state tables --- diff --git a/src/devices/bridge/model/moose-bridge-state.cc b/src/devices/bridge/model/moose-bridge-state.cc index 28f28c1..326b40c 100644 --- a/src/devices/bridge/model/moose-bridge-state.cc +++ b/src/devices/bridge/model/moose-bridge-state.cc @@ -70,11 +70,11 @@ void MooseBridgeState::Learn(MooseSuffixAddress addr, Ptr p Time now = Simulator::Now (); - Port &state = m_portState[addr]; + Suffix *state = m_sufSuffixState[addr]; // Only update if the expiration is not in the future - if(now + m_time > state.time){ - state.port = port; - state.time = now + m_time; + if(now + m_time > state->time){ + state->port = port; + state->time = now + m_time; } } @@ -127,6 +127,7 @@ MooseSuffixAddress MooseBridgeState::GetSuffix(Mac48Address addr, MoosePrefixAdd state.ethernet = addr; state.suffix = moose.GetMooseSuffix(); state.time = now + m_time; + state.port = NULL; NS_LOG_LOGIC("Allocating New MOOSE Suffix: (" << moose.GetMoosePrefix().GetInt() << "," << moose.GetMooseSuffix().GetInt() << ") for " << addr); m_sufSuffixState[state.suffix] = &m_ethSuffixState[addr]; @@ -163,6 +164,7 @@ MooseSuffixAddress MooseBridgeState::GetSuffix(Mac48Address addr, MoosePrefixAdd state.ethernet = addr; state.suffix = moose.GetMooseSuffix(); state.time = now + m_time; + state.port = NULL; NS_LOG_LOGIC("Expired MOOSE Suffix: (" << prefix.GetInt() << "," << state.suffix.GetInt() << ")"); @@ -194,11 +196,11 @@ Ptr MooseBridgeState::GetPort(MooseSuffixAddress addr){ Time now = Simulator::Now(); - std::map::iterator iter = m_portState.find(addr); + std::map::iterator iter = m_sufSuffixState.find(addr); - if(iter != m_portState.end() && iter->second.time > now){ + if(iter != m_sufSuffixState.end() && iter->second->time > now){ - return iter->second.port; + return iter->second->port; } return NULL; @@ -206,7 +208,7 @@ Ptr MooseBridgeState::GetPort(MooseSuffixAddress addr){ } unsigned long MooseBridgeState::GetSize(){ - return m_prefixState.size() + m_portState.size(); + return m_prefixState.size() + m_sufSuffixState.size(); } std::ostream& operator<<(std::ostream& file, MooseBridgeState& state){ @@ -216,18 +218,11 @@ std::ostream& operator<<(std::ostream& file, MooseBridgeState& state){ file << iter->first.GetInt() << std::endl << iter->second.port << std::endl << iter->second.time << std::endl; } - file << state.m_ethSuffixState.size() << std::endl; + file << state.m_ethSuffixState.size(); for(std::map::iterator iter = state.m_ethSuffixState.begin(); iter != state.m_ethSuffixState.end(); ++iter){ - file << iter->first << std::endl << iter->second.suffix.GetInt() << std::endl << iter->second.time << std::endl; + file << std::endl << iter->first << std::endl << iter->second.suffix.GetInt() << std::endl << iter->second.port << iter->second.time; } - - file << state.m_portState.size(); - - for(std::map::iterator iter = state.m_portState.begin(); iter != state.m_portState.end(); ++iter){ - file << std::endl << iter->first.GetInt() << std::endl << iter->second.port << std::endl << iter->second.time; - } - } diff --git a/src/devices/bridge/model/moose-bridge-state.h b/src/devices/bridge/model/moose-bridge-state.h index 7262808..fe6d807 100644 --- a/src/devices/bridge/model/moose-bridge-state.h +++ b/src/devices/bridge/model/moose-bridge-state.h @@ -70,10 +70,6 @@ private: struct Suffix { Mac48Address ethernet; MooseSuffixAddress suffix; - Time time; - }; - - struct Port { Ptr port; Time time; }; @@ -83,7 +79,6 @@ private: std::map m_prefixState; std::map m_ethSuffixState; std::map m_sufSuffixState; - std::map m_portState; friend std::ostream& operator<<(std::ostream&, MooseBridgeState&);