Differences between revisions 2 and 3
Revision 2 as of 2009-04-08 20:37:45
Size: 3154
Editor: anonymous
Comment:
Revision 3 as of 2009-04-08 20:55:48
Size: 3172
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Rappresenta una mappa di route (vedi la [[/ClasseRouteNode|classe RouteNode]]), tutte dello stesso tipo di rem (vedi la [[/ClasseREM|classe REM]]). Rappresenta una mappa di route (vedi la [[../ClasseRouteNode|classe RouteNode]]), tutte dello stesso tipo di rem (vedi la [[../ClasseREM|classe REM]]).
Line 5: Line 5:
E' implementata come una derivata della [[/ClasseMap|classe Map]], il cui dataclass è {{{RouteNode}}}. E' implementata come una derivata della [[../ClasseMap|classe Map]], il cui dataclass è {{{RouteNode}}}.
Line 9: Line 9:
Essendo una Map (vedi [[/ClasseMap|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 15: Line 15:
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]]. 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]].
Line 19: 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 [[/ClasseMap|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 23: Line 23:
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). 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 27: Line 27:
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]]) 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]])

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)