= Il modulo Radar = Nel modulo Radar vengono definite le classi Radar, Neighbour e Neigh. Servono a gestire la conoscenza del proprio vicinato da parte dell'host corrente. Cioè quali sono gli altri nodi della sua LAN. ~+La classe Radar+~, quando viene istanziata, si memorizza il numero massimo di vicini memorizzati (gestiti in una nuova istanza della classe Neighbour) e il numero di pacchetti nel bouquet (li prende dalla [[../VariabileGlobaleSettings|variabile globale settings]]). Il suo metodo {{{radar()}}} manda ''n'' pacchetti in broadcast e calcola delle statistiche (la media dei RTT degli ''n'' pacchetti inviati - vedi il metodo {{{get_avg_rtt}}}) che poi passa all'istanza di Neighbour, tramite il suo metodo {{{store(ip_table)}}} (vedi [[../FunzionamentoDelRadar|Funzionamento del Radar]]). <
> Queste statistiche sono in forma di un dictionary di {{{ip -> Neigh}}}, dove: . {{{ip}}} = intero rappresentante il NIP . in {{{neigh}}} vengono memorizzati solo {{{devs}}} e {{{bestdev}}} ~+La classe Neighbour+~ nel suo metodo store fa il merge dell'ip_table passata con quella di cui era già a conoscenza. Oltre a ricordare gli ip dei suoi vicini, assegna ad ognuno un id univoco all'interno di questo host. A questo serve la sua translation_table. <
> Nel gestire la sua ip_table, questa classe emette i signal {{{NEIGH_NEW}}}, {{{NEIGH_DEL}}} e {{{NEIGH_REM_CHGED}}}. ~+La classe Neigh+~ rappresenta un nodo vicino di LAN. Viene usata per passare (ad esempio negli eventi, o nel metodo neigh_list) le informazioni che riguardano un nodo. Ne memorizza queste informazioni: . '''ip''': neighbour's ip; si tratta di un intero che rappresenta tutti i byte dell'indirizzo IP, e.g. 185999660; . '''nip''': neighbour's nip; si tratta di una sequenza, e.g. [44, 33, 22, 11]; . '''ntkd''': neighbour's ntk remote instance; si tratta di un TCPClient (vedi il [[../ModuloRPC|modulo RPC]]) istanziato nei metodi store() o ip_change() della classe Neighbour; . '''idn''': neighbour's id; id univoco all'interno di questo host, associato al ip nella translation_table; . '''devs''': a dict which maps a device to the average rtt . '''bestdev''': a pair (d, avg_rtt), where devs[d] is the best element of devs. . '''netid''': network id come è conosciuto da questo vicino; si tratta di un identificativo della rete usato per rilevare la [[../NetworkCollision|collisione]] di 2 reti Netsukuku nate separatamente. Anche per rappresentare un nodo all'interno della {{{ip_table}}} della classe {{{Neighbour}}} si usa la classe {{{Neigh}}}, ma valorizzando solo i membri {{{devs}}} e {{{bestdev}}}.