10) Come funziona in dettaglio la registerrpc?

primitiva registerrpc:

int registerrpc(n_prog,n_vers,n_proc,proc_name,inproc,outproc)

u_long n_prog,n_vers,n_proc; /*identificazione procedura*/

char *(*proc_name)() /*puntatore alla procedura da attivare*/

xdrproc_t inproc; /*funzione xdr per il tipo di argomento*/

xdrproc_t outproc; /*funzione xdr per il tipo di risultato*/

Viene eseguita dal server che la vuole rendere nota ed invocabile da clienti remoti. Una entry per ogni registrazione. Vengono quindi usati diversi processi servitori che contengono i servizi e rimangono in attesa.

Dopo la registrazione della procedura, il processo attende chiamate invocando la primitiva svc_run(), che non termina mai! (se termina è un errore).

Le procedure così registrate sono compatibili con chiamate realizzate da primitive basate su meccanismi di trasporto UDP senza connessione, ma incompatibili con TCP a stream.

La registerrpc restituisce successo ( =0) o -1 in caso di insuccesso .

 


Back
Index
Next