21) Come viene implementato il broadcast nel modello RPC?

Tramite la primitiva clnt_broadcast():

è analoga alla callrpc, tranne che la call è inviata in broadcast. Ogni volta che viene ricevuta una risposta viene invocata la eachresult (funzione referenziata come ultimo argomento)

viene ritornato un booleano che specifica se il client aspetta nuove risposte (0=aspetta, ¹ 0=il broadcast deve terminare e la primitiva ritorna lo status appropriato). Se eachresults non fornisce un valore vero entro 55 secondi, clnt_broadcast restituisce RPC_TIMEOUT

enum clnt_stat clnt_broadcast (prog, vers, proc, xargs,

argsp, xresults, resultsp, eachresult)

u_long prog, vers, proc;

xdrproc_t xargs; /* tipo argomenti */

caddr_t argsp; /* lunghezza argomenti */

xdrproc_t xresults; /* routine per decodificare i risultati */

caddr_t resultsp; /* dove mettere i risultati */

bool_t (* eachresult)();

bool_t eachresult (resultsp, raddr)

caddr_t resultsp; /* come sopra */

struct sockaddr_in * raddr; /* indirizzo della macchina remota che

invia il risultato */

 


Back
Index
Next