= 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}}}.