Il modulo qspn
Nel modulo qspn.py viene definita la classe Etp.
Questa viene istanziata nel costruttore della classe NtkNode. Si mette in ascolto degli eventi prodotti dalla classe Neighbour (vedi il modulo Radar). In particolare è interessata agli eventi NEIGH_NEW, NEIGH_REM_CHGED e NEIGH_DELETED, che sono emessi quando viene rilevato un nuovo vicino, oppure cambia l'efficienza del link ad un vicino, oppure un vicino abbandona la rete.
In risposta a questi eventi:
Aggiorna la mappa delle routes note chiamando i metodi routeneigh_xxx della classe MapRoute;
- Genera gli ETP;
- Tramite i TCPClient li invia ai vicini interessati.
Inoltre emette i segnali ETP_EXECUTED e NET_COLLISION. Entrambi sono gestiti dalla classe Hook, entrambi con funzioni microfunc di tipo "con dispatcher".
Caso "vicino con REM modificata"
In questo evento la classe intraprende le seguenti azioni:
Aggiorna la mappa con la nuova REM del vicino.
Avvalendosi del metodo bestroutes_get della classe MapRoute, crea la lista M|; è una lista di 4 liste, una per ogni livello; ogni lista contiene le migliori routes per ogni destinazione, tra tutte quelle conosciute.
Filtra questa lista M| eliminando quelle che hanno come gateway il vicino stesso.