Chiamate a metodi remoti

Nel programma Netsukuku esistono delle funzioni (metodi) richiamabili da remoto 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 e dei MicroUDPServer (un UDP per ogni scheda di rete), 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:

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.

Invece il BcastClient viene istanziato e memorizzato sull'attributo broadcast dell'oggetto Radar.
Oppure si può istanziare un BcastClient all'abbisogna.

Quindi sul codice si trovano pezzi simili a questo:
    self.broadcast.radar.reply(...)
self.broadcast è un oggetto BcastClient attraverso il quale si esegue una chiamata RPC in broadcast. La root_instance (su tutti gli host Netsukuku della LAN) è l'oggetto NtkNode, il quale ha un attributo radar che è una istanza della classe Radar. La classe Radar ha la funzione remotable reply. La chiamata quindi risulta corretta.

Elenco delle funzioni remotable

Modulo radar

Modulo qspn

Modulo hook

Modulo p2p

Modulo coord