Differences between revisions 1 and 2
Revision 1 as of 2009-04-08 18:35:21
Size: 2809
Editor: anonymous
Comment:
Revision 2 as of 2009-04-08 20:37:45
Size: 3154
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
E' implementata come una derivata de la classe Map, il cui dataclass è RouteNode. E' implementata come una derivata della [[/ClasseMap|classe Map]], il cui dataclass è {{{RouteNode}}}.
Line 7: Line 7:
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. 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.
Line 9: Line 9:
Essendo una Map (vedi la classe Map), emette di conseguenza i signal NODE_NEW e NODE_DELETED e ME_CHANGED. Essendo una Map (vedi [[/ClasseMap|la classe Map]]), emette di conseguenza i signal {{{NODE_NEW}}} e {{{NODE_DELETED}}} e {{{ME_CHANGED}}}.
Line 11: Line 11:
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. --(Utilizzando come dataclass la classe {{{RouteNode}}}, ha la possibilità di emettere i signal {{{ROUTE_NEW, ROUTE_DELETED, ROUTE_REM_CHGED}}}.)--
Line 13: Line 13:
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. Inoltre emette in proprio i signal {{{ROUTE_NEW}}}, {{{ROUTE_DELETED}}}, {{{ROUTE_REM_CHGED}}}.
Line 15: Line 15:
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. Di seguito emette il segnale ROUTE_NEW o ROUTE_REM_CHANGED. 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 [[/ClasseRouteNode|classe RouteNode]].
<<BR>>
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}}}.
Line 17: Line 19:
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 dati riguardanti la dimensione della mappa (levels, gsize) e il posto occupato da me medesimo (me) che servono alla classe base (vedi la [[/ClasseMap|classe Map]]) sono passati al costruttore di {{{MapRoute}}}.
Line 19: Line 21:
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. 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.
Line 21: Line 23:
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). Il metodo {{{routeneigh_get}}} prende un oggetto neigh, cioè la rappresentazione di un vicino di LAN (vedi il [[/ModuloRadar|modulo radar]]) e recupera il relativo posto nella maproute (sotto forma di lvl, dst).
Line 23: Line 25:
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. 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}}}.
Line 25: Line 27:
Questi metodi sono chiamati dalla classe Etp (vedi il modulo qspn) in risposta ai relativi eventi {{{della}}} classe Neigbour (vedi il modulo Radar) Questi metodi sono chiamati dalla classe Etp (vedi il [[/ModuloQSPN|modulo qspn]]) in risposta ai relativi eventi della classe Neigbour (vedi il [[/ModuloRadar|modulo Radar]])
Line 27: Line 29:
Il metodo bestroutes_get() Il metodo {{{bestroutes_get()}}}

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.

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()

  • Let L be the returned list, then L[lvl] is the list of all the best routes of level lvl of the map. An element of this latter list is a tuple (dst, gw, rem), where dst is the destination of the route, gw its gateway.

Netsukuku/ita/ClasseMapRoute (last edited 2009-05-21 13:01:00 by lukisi)