コード例 #1
0
ファイル: RouteTable.cpp プロジェクト: wrren/sdrp
	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() );
	}
コード例 #2
0
ファイル: RouteTable.cpp プロジェクト: wrren/sdrp
	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;
	}