La classe MapRoute

Rappresenta una mappa di route (vedi la classe RouteNode), tutte dello stesso tipo di rem (vedi la classe Rem).
E' implementata come una derivata della classe Map, il cui dataclass è RouteNode.

In pratica un nodo ha una MapRoute. Quando vuole raggiungere un certo nodo o gnodo, quindi (lvl,id), ottiene tramite la MapRoute un RouteNode. In esso trova le possibili route, al massimo una per gateway, e ha di ognuna una misurazione comparabile dell'efficienza.

Essendo una Map (vedi la classe Map), emette di conseguenza i signal NODE_NEW e NODE_DELETED e ME_CHANGED.
Utilizzando come dataclass la classe RouteNode, ha la possibilità di emettere i signal ROUTE_NEW, ROUTE_DELETED, ROUTE_REM_CHGED.
Inoltre emette in proprio i signal ROUTE_NEW, ROUTE_DELETED, ROUTE_REM_CHGED.
Gli eventi ROUTE_XXX sono distinti dai NODE_XXX, perché ogni nodo può essere raggiungibile tramite più routes. Infatti la dataclass della mappa di route è la classe RouteNode.
Ad esempio, il metodo route_add richiama il metodo node_get della classe base. Poi, solo se prima non era conosciuta nessuna route verso quel nodo, richiama il metodo node_add della classe base, generando così il segnale NODE_NEW; altrimenti non viene emesso il segnale NODE_NEW se esisteva già almeno una route. Ma in entrambi i casi di seguito emette il segnale ROUTE_NEW o ROUTE_REM_CHANGED.
Quando viene emesso il segnale ROUTE_XXX la classe KrnlRoute si incarica di utilizzare i metodi forniti dalla classe Route (vedi il package network) per modificare di conseguenza la tabelle di routing del kernel.

I dati riguardanti la dimensione della mappa (levels, gsize) e il posto occupato da me medesimo (me) che servono alla classe base (vedi la classe Map) sono passati al costruttore di MapRoute.

I metodi route_add e route_del e route_rem accettano tra i parametri lvl e dst (gli indici della mappa). Richiamando i metodi analoghi nella giusta istanza di RouteNode, aggiornano le route verso un certo g-nodo. Inoltre emettono, se non espressamente vietato, gli eventi ROUTE_NEW etc.

Il metodo routeneigh_get prende un oggetto neigh, cioè la rappresentazione di un vicino di LAN (vedi il modulo radar) e recupera il relativo posto nella maproute (sotto forma di lvl, dst).

I metodi routeneigh_add, routeneigh_rem e routeneigh_del invece gestiscono le routes verso i vicini di LAN. Accettano come parametro un neigh. Usano il metodo routeneigh_get per recuperarne lvl e dst. Di seguito usano i metodi route_add e route_del e route_rem.
Questi metodi sono chiamati dalla classe Etp (vedi il modulo qspn) in risposta ai relativi eventi della classe Neigbour (vedi il modulo Radar)

Il metodo bestroutes_get()