improved grouter routing algorithm using network simulator

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7264 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2014-04-11 21:56:10 +00:00
parent d1e526cdf7
commit dd72809f2d
6 changed files with 260 additions and 170 deletions

View file

@ -28,13 +28,13 @@ NetworkSimulatorGUI::NetworkSimulatorGUI(Network& net)
void NetworkSimulatorGUI::updateSelectedNode(int node_id)
{
_turtle_router_statistics->setTurtleRouter( _viewer->network().node(node_id).turtle_service() ) ;
_global_router_statistics->setGlobalRouter( _viewer->network().node(node_id).global_router_service() ) ;
const RsTurtle *turtle = _viewer->network().node(node_id).turtle_service() ;
const RsGRouter *grouter = _viewer->network().node(node_id).global_router_service() ;
_turtle_router_statistics->updateDisplay() ;
_global_router_statistics->updateDisplay() ;
_turtle_router_statistics->setTurtleRouter( turtle ) ;
_global_router_statistics->setGlobalRouter( grouter ) ;
std::cerr << "Selected objects: turtle=" << std::hex << _viewer->network().node(node_id).turtle_service() << ", grouter=" << _viewer->network().node(node_id).global_router_service() << std::dec << std::endl;
std::cerr << "Selected objects: turtle=" << std::hex << turtle << ", grouter=" << grouter << std::dec << std::endl;
}
void NetworkSimulatorGUI::toggleNetworkTraffic(bool b)

View file

@ -20,5 +20,7 @@ void MonitoredGRouterClient::sendMessage(const GRouterKeyId& destination_key_id)
item->data_size = 1000 + (RSRandom::random_u32()%1000) ;
item->data_bytes = (unsigned char *)malloc(item->data_size) ;
RSRandom::random_bytes(item->data_bytes,item->data_size) ;
_grouter->sendData(destination_key_id,item) ;
}

View file

@ -73,22 +73,28 @@ void Network::tick()
for(uint32_t i=0;i<n_nodes();++i)
node(i).tick() ;
// Get items for each components and send them to their destination.
//
for(uint32_t i=0;i<n_nodes();++i)
try
{
RsRawItem *item ;
while( (item = node(i).outgoing()) != NULL)
// Get items for each components and send them to their destination.
//
for(uint32_t i=0;i<n_nodes();++i)
{
std::cerr << "Tick: send item from " << item->PeerId() << " to " << Network::node(i).id() << std::endl;
RsRawItem *item ;
PeerNode& node = node_by_id(item->PeerId()) ;
item->PeerId(Network::node(i).id()) ;
while( (item = node(i).outgoing()) != NULL)
{
std::cerr << "Tick: send item from " << item->PeerId() << " to " << Network::node(i).id() << std::endl;
node.incoming(item) ;
PeerNode& node = node_by_id(item->PeerId()) ;
item->PeerId(Network::node(i).id()) ;
node.incoming(item) ;
}
}
}
catch(...)
{
}
}
PeerNode& Network::node_by_id(const RsPeerId& id)