void RouteTable::Add( const Route& newRoute ) { for( RouteList::iterator i = m_routes.begin(); i != m_routes.end(); ++i ) { if( i->Server() == newRoute.Server() && i->NextHop() == newRoute.NextHop() ) { ( *i ) = newRoute; return; } } m_routes.push_back( newRoute ); std::stringstream stream; for( RDServiceIdentifier i = 0; i < 10; i++ ) { if( newRoute.Services().Contains( i ) ) { stream << i << ", "; } } RDUInt32 hops = newRoute.Hops(); RD_NLOG( "Have Route to Service Filter with Server " << newRoute.Server() << " in " << hops << " Hops through Node " << newRoute.NextHop() << " with Services: " << stream.str() ); }
bool RouteTable::HaveSuperiorRoute( const Route& newRoute ) const { std::set<Route> routes; for( RouteList::const_iterator i = m_routes.begin(); i != m_routes.end(); ++i ) { if( i->Server() != newRoute.Server() && i->Services().Contains( newRoute.Services() ) && i->Hops() < newRoute.Hops() ) { return true; } } return false; }