Differences between revisions 1 and 2
Revision 1 as of 2009-04-09 11:37:42
Size: 910
Editor: anonymous
Comment:
Revision 2 as of 2009-04-09 15:04:38
Size: 3777
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
Bisogna poi vedere quali di questi metodi si possono veramente richiamare. Questo si controlla appunto specificando quali metodi della classe sono remotable. Bisogna poi vedere quali di questi metodi si possono veramente richiamare. Questo si controlla appunto specificando quali metodi di una data classe sono remotable.

== Oggetto radice e suoi attributi ==

La root_instance fornita dal demone di Netsukuku è l'unica istanza della [[../ClasseNtkNode|classe NtkNode]].

Tra i suoi attributi sono:
 . {{{self.radar = radar.Radar(...)}}}
 . {{{self.neighbour = self.radar.neigh}}}
 . {{{self.maproute = maproute.MapRoute(...)}}}
 . {{{self.etp = qspn.Etp(...)}}}
 . {{{self.p2p = p2p.P2PAll(...)}}}
 . {{{self.coordnode = coord.Coord(...)}}}
 . {{{self.hook = hook.Hook(...)}}}
 
In particolare l'attributo {{{p2p}}} è un oggetto {{{P2PAll}}}. Questo ha un numero dinamico di attributi interessanti, perché richiamando un suo attributo con nome {{{PID_}}}''{{{n}}}'' (dove ''{{{n}}}'' è un qualsiasi intero) si ottiene un oggetto della classe {{{P2P}}}.

I {{{TCPClient}}} sono memorizzati sull'attributo {{{ntkd}}} dell'oggetto {{{Neigh}}}.
<<BR>>
Gli oggetti {{{Neigh}}} si passano insieme agli eventi {{{NEIGH_NEW}}}, {{{NEIGH_REM_CHGED}}}, {{{NEIGH_DELETED}}} oppure si richiedono alla istanza locale di {{{Neighbour}}} con il metodo {{{neigh_list}}}.

Quindi sul codice si trovano pezzi simili a questo:
<<BR>>
{{{ neigh.ntkd.etp.etp_exec(...)}}}
<<BR>>
'''{{{neigh}}}''' è un oggetto {{{Neigh}}} ricevuto attraverso un evento. Attraverso l'attributo '''{{{ntkd}}}''' esegue una chiamata RPC. La root_instance (sull'host remoto) è l'oggetto {{{NtkNode}}}, il quale ha un attributo '''{{{etp}}}''' che è una istanza della classe {{{Etp}}}. La classe {{{Etp}}} ha la funzione remotable '''{{{etp_exec}}}'''. La chiamata quindi risulta corretta.

Altro esempio potrebbe essere:
<<BR>>
{{{ n.ntkd.p2p.PID_12.msg_send(...)}}}
<<BR>>
'''{{{n}}}''' è un oggetto {{{Neigh}}} richiesto alla istanza locale di {{{Neighbour}}}. Attraverso l'attributo '''{{{ntkd}}}''' esegue una chiamata RPC. La root_instance (sull'host remoto) è l'oggetto {{{NtkNode}}}, il quale ha un attributo '''{{{p2p}}}''' che è una istanza della classe {{{P2PAll}}}. La classe {{{P2PAll}}} ha un attributo (dinamico) '''{{{PID_12}}}''' che è una istanza della classe {{{P2P}}}. La classe {{{P2P}}} ha la funzione remotable '''{{{msg_send}}}'''. La chiamata quindi risulta corretta.
Line 15: Line 46:
=== Modulo Radar === === Modulo radar ===
Line 17: Line 48:
 . radar.reply
 . radar.time_register
 . neigh.ip_change
 . ~+{{{class Radar(object)}}}+~
  . {{{reply}}}
  . {{{time_register}}}

 . ~+{{{class Neighbour(object)}}}+~
  . {{{ip_change}}}

 . ~+{{{class MapRoute(Map)}}}+~
  . {{{free_nodes_nb}}}

=== Modulo qspn ===

 . ~+{{{class Etp}}}+~
  . {{{etp_exec}}}

=== Modulo hook ===

 . ~+{{{class Hook(object)}}}+~
  . {{{communicating_vessels}}}
  . {{{highest_free_nodes}}}

=== Modulo p2p ===

 . ~+{{{class P2P(RPCDispatcher)}}}+~
  . {{{partecipant_add}}}
  . {{{msg_send}}}

 . ~+{{{class P2PAll(object)}}}+~
  . {{{pid_getall}}}

=== Modulo coord ===

 . ~+{{{class MapCache(Map)}}}+~
  . {{{map_data_merge}}}

 . ~+{{{class Coord(P2P)}}}+~
  . {{{going_out}}}
  . {{{going_out_ok}}}
  . {{{going_in}}}

Remotable Functions

Sono le funzioni (metodi) richiamabili attraverso il meccanismo RPC (vedi il modulo RPC).

Si può specificare quali metodi di una certa classe sono remotable.

A partire da un certo oggetto (istanza di una classe) chiamato root_instance, che viene specificato al momento dell'avvio del MicroTCPServer o MicroUDPServer, tutti i suoi attributi si possono "accedere" da remoto. E per ogni attributo che contiene un oggetto, di nuovo tutti i suoi attributi si possono "accedere" da remoto.

Dicendo che "si può accedere" si intende che si possono richiamare i suoi metodi.

Bisogna poi vedere quali di questi metodi si possono veramente richiamare. Questo si controlla appunto specificando quali metodi di una data classe sono remotable.

Oggetto radice e suoi attributi

La root_instance fornita dal demone di Netsukuku è l'unica istanza della classe NtkNode.

Tra i suoi attributi sono:

  • self.radar = radar.Radar(...)

  • self.neighbour = self.radar.neigh

  • self.maproute = maproute.MapRoute(...)

  • self.etp = qspn.Etp(...)

  • self.p2p = p2p.P2PAll(...)

  • self.coordnode = coord.Coord(...)

  • self.hook = hook.Hook(...)

In particolare l'attributo p2p è un oggetto P2PAll. Questo ha un numero dinamico di attributi interessanti, perché richiamando un suo attributo con nome PID_n (dove n è un qualsiasi intero) si ottiene un oggetto della classe P2P.

I TCPClient sono memorizzati sull'attributo ntkd dell'oggetto Neigh.
Gli oggetti Neigh si passano insieme agli eventi NEIGH_NEW, NEIGH_REM_CHGED, NEIGH_DELETED oppure si richiedono alla istanza locale di Neighbour con il metodo neigh_list.

Quindi sul codice si trovano pezzi simili a questo:
    neigh.ntkd.etp.etp_exec(...)
neigh è un oggetto Neigh ricevuto attraverso un evento. Attraverso l'attributo ntkd esegue una chiamata RPC. La root_instance (sull'host remoto) è l'oggetto NtkNode, il quale ha un attributo etp che è una istanza della classe Etp. La classe Etp ha la funzione remotable etp_exec. La chiamata quindi risulta corretta.

Altro esempio potrebbe essere:
    n.ntkd.p2p.PID_12.msg_send(...)
n è un oggetto Neigh richiesto alla istanza locale di Neighbour. Attraverso l'attributo ntkd esegue una chiamata RPC. La root_instance (sull'host remoto) è l'oggetto NtkNode, il quale ha un attributo p2p che è una istanza della classe P2PAll. La classe P2PAll ha un attributo (dinamico) PID_12 che è una istanza della classe P2P. La classe P2P ha la funzione remotable msg_send. La chiamata quindi risulta corretta.

Elenco delle funzioni remotable

Modulo radar

  • class Radar(object)

    • reply

    • time_register

  • class Neighbour(object)

    • ip_change

  • class MapRoute(Map)

    • free_nodes_nb

Modulo qspn

  • class Etp

    • etp_exec

Modulo hook

  • class Hook(object)

    • communicating_vessels

    • highest_free_nodes

Modulo p2p

  • class P2P(RPCDispatcher)

    • partecipant_add

    • msg_send

  • class P2PAll(object)

    • pid_getall

Modulo coord

  • class MapCache(Map)

    • map_data_merge

  • class Coord(P2P)

    • going_out

    • going_out_ok

    • going_in

Netsukuku/ita/ElencoRemotableFunctions (last edited 2009-05-25 17:02:52 by lukisi)