mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-02 06:06:10 -04:00
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:
parent
d1e526cdf7
commit
dd72809f2d
6 changed files with 260 additions and 170 deletions
|
@ -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)
|
||||
|
|
|
@ -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) ;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue