= La classe Hook =
Questa classe ascolta i segnali {{{ETP_EXECUTED}}} e {{{NET_COLLISION}}} di {{{Etp}}}.
Come detto nel [[../ModuloQSPN|modulo QSPN]], la classe {{{Etp}}} processa, nel suo metodo {{{etp_exec}}}, gli ETP ricevuti dai suoi vicini.
<
>
Durante questa processazione potrebbe rilevare la collisione di due distinte reti Netsukuku. In questo caso genera l'evento {{{NET_COLLISION}}} e si interrompe.
<
>
Altrimenti prosegue e, se non ignora l'ETP perché lo aveva già incontrato, processa le informazioni. Questo può comportare delle modifiche alla propria mappa di route (vedi la [[../ClasseMapRoute|classe MapRoute]]). Alla fine genera un evento {{{ETP_EXECUTED}}}.
Entrambe queste situazioni portano a operazioni svolte dalla classe Hook.
In seguito ad un evento {{{ETP_EXECUTED}}}:
* Si avvia l'esecuzione della microfunc communicating_vessels. Essendo una microfunc, essa viene avviata in un nuovo microthread. La prima cosa che esegue è la [[../GnodesSplit|funzione gnodes_split]], che quindi viene eseguita nel microthread appena creato. Se questa rileva uno split e avvia di conseguenza la [[../MicrofuncHook|microfunc hook]] (in un nuovo microthread), la communicating_vessels si ferma.
* Altrimenti la [[../CommunicatingVessels|communicating_vessels]] prosegue.
In seguito ad un evento {{{NET_COLLISION}}}:
* Si avvia l'esecuzione della [[../MicrofuncHook|microfunc hook]].