Size: 773
Comment:
|
Size: 1411
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
Questa classe ascolta --(i segnali {{{NODE_NEW}}} e {{{NODE_DELETED}}} di {{{MapRoute}}} e)-- i segnali {{{ETP_EXECED}}} e {{{NET_COLLISION}}} di {{{Etp}}}. Quando un segnale di {{{ETP_EXECED}}} viene emesso (gestito dalla microfunc [[../CommunicatingVessels|communicating_vessels]]), vengono inviati {{{old_node_nb}}} e {{{cur_node_nb}}}. Questi sono usati per tentare uno split del gnodo ([[../GnodesSplit|gnodes_split]]) e solo all'abbisogna viene eseguito il resto della funzione, che a sua volta all'abbisogna richiama la microfunc [[../MicrofuncHook|hook]]. | Questa classe ascolta i segnali {{{ETP_EXECUTED}}} e {{{NET_COLLISION}}} di {{{Etp}}}. Come detto nel [[../ModuloQSPN|modulo QSPN]], la classe {{{Etp}}} genera un evento {{{ETP_EXECUTED}}} dopo aver processato un ETP ricevuto da un vicino. Questo potrebbe aver comportato delle modifiche alla propria mappa di route (vedi la [[../ClasseMapRoute|classe MapRoute]]). |
Line 5: | Line 7: |
La classe {{{MapRoute}}} ha il membro {{{node_nb}}} che è una lista con il numero di nodi presenti nei vari livelli della mappa. Quando il modulo QSPN processa un ETP si memorizza una copia di questo elenco prima e dopo aver modificato la mappa. Questi due elenchi vengono passati come argomenti {{{old_node_nb}}} e {{{cur_node_nb}}} dell'evento {{{ETP_EXECUTED}}}. <<BR>> Nel modulo hook, la classe Hook registra il suo metodo microfunc [[../CommunicatingVessels|communicating_vessels]] come gestore dell'evento e riceve {{{old_node_nb}}} e {{{cur_node_nb}}} '''''TODO''': proseguire l'analisi'' - Cosa ci fa? li usa per tentare uno split del gnodo... ([[../GnodesSplit|gnodes_split]]) e solo all'abbisogna viene eseguito il resto della funzione, che a sua volta all'abbisogna richiama la microfunc [[../MicrofuncHook|hook]]. |
|
Line 6: | Line 16: |
<<BR>> |
La classe Hook
Questa classe ascolta i segnali ETP_EXECUTED e NET_COLLISION di Etp.
Come detto nel modulo QSPN, la classe Etp genera un evento ETP_EXECUTED dopo aver processato un ETP ricevuto da un vicino. Questo potrebbe aver comportato delle modifiche alla propria mappa di route (vedi la classe MapRoute).
La classe MapRoute ha il membro node_nb che è una lista con il numero di nodi presenti nei vari livelli della mappa. Quando il modulo QSPN processa un ETP si memorizza una copia di questo elenco prima e dopo aver modificato la mappa. Questi due elenchi vengono passati come argomenti old_node_nb e cur_node_nb dell'evento ETP_EXECUTED.
Nel modulo hook, la classe Hook registra il suo metodo microfunc communicating_vessels come gestore dell'evento e riceve old_node_nb e cur_node_nb
TODO: proseguire l'analisi - Cosa ci fa? li usa per tentare uno split del gnodo...
(gnodes_split) e solo all'abbisogna viene eseguito il resto della funzione, che a sua volta all'abbisogna richiama la microfunc hook.
Quando un segnale NET_COLLISION viene emesso viene richiamata la microfunc hook.
La microfunc hook alla fine emette il segnale HOOKED.