Differences between revisions 1 and 2
Revision 1 as of 2009-04-08 21:49:23
Size: 1728
Editor: anonymous
Comment:
Revision 2 as of 2009-04-15 10:14:42
Size: 1774
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
Quindi si aspettano maxwait secondi. In questo tempo (se nella rete c'è qualcuno) si generano un numero di richieste RPC al metodo time_register. Questo metodo riceve la struttura {{{CallerInfo}}} dalla quale si estrapola l'IP del chiamante e il net_device (interfaccia) attraverso il quale è stato raggiunto; inoltre accetta i parametri radar_id e netid, il primo per sapere a quale radar-scan si riferisce la risposta e il secondo per assegnare l'identificativo che permette di evitare le collisioni. Quindi si aspettano maxwait secondi. In questo tempo (se nella rete c'è qualcuno) si generano un numero di richieste RPC al metodo time_register. Questo metodo riceve la struttura {{{CallerInfo}}} dalla quale si estrapola l'IP del chiamante e il net_device (interfaccia) attraverso il quale è stato raggiunto; inoltre accetta i parametri radar_id e netid, il primo per sapere a quale radar-scan si riferisce la risposta e il secondo per comunicare l'ID della rete di appartenenza (per rilevare eventuali [[../NetworkCollision|collisioni di rete]]).

Funzionamento del Radar

Ogni volta che viene richiamato il metodo radar() della classe Radar (vedi il modulo Radar) vengono inviati in broadcast n pacchetti.
Questo avviene richiamando nei nodi vicini di LAN (usando una istanza di BcastClient - vedi il modulo RPC) il metodo radar.reply(self.ntkd_id, self.radar_id). In esso, tramite le informazioni del CallerInfo, (vedi sempre il modulo RPC) viene richiamato "indietro" al chiamante il metodo radar.time_register(radar_id, self.netid) - grazie all'identificativo radar_id la chiamata a time_register viene ignorata dagli altri nodi della LAN. (In effetti il FakeRmt TCPClient dopo aver inviato il messaggio resta in ascolto sul socket per la risposta e la restituisce al chiamante locale, mentre il FakeRmt BcastClient dopo aver inviato il messaggio ritorna subito senza aspettare risposta. Per questo viene usata la chiamata di ritorno al metodo time_register.)
Quindi si aspettano maxwait secondi. In questo tempo (se nella rete c'è qualcuno) si generano un numero di richieste RPC al metodo time_register. Questo metodo riceve la struttura CallerInfo dalla quale si estrapola l'IP del chiamante e il net_device (interfaccia) attraverso il quale è stato raggiunto; inoltre accetta i parametri radar_id e netid, il primo per sapere a quale radar-scan si riferisce la risposta e il secondo per comunicare l'ID della rete di appartenenza (per rilevare eventuali collisioni di rete).
Scaduto il tempo si aggiorna la propria ip_table, si incrementa il numero di radar inviati, si emette il signal SCAN_DONE con argomento numero di radar inviati.

Netsukuku/ita/FunzionamentoDelRadar (last edited 2009-04-15 10:14:42 by anonymous)