81. Kodowanie i dekodowanie struktur z wskaźnikami 82. Wymiana

Transkrypt

81. Kodowanie i dekodowanie struktur z wskaźnikami 82. Wymiana
81. Kodowanie i dekodowanie struktur z wskaźnikami
- kodowanie
W razie zdefiniowania w XDR(External Data Representation), struktury zawierającej
wskaźniki na inne struktury, podczas kodowania sprawdzane jest, czy dany wskaźnik jest
równy NULL, a jeśli nie, to wywoływany jest odpowiedni filtr, kodujący wskazywaną
strukturę.
Nie nadaje się do struktur cyklicznych ze względu na rekurencyjne wywoływanie
kolejnych filtrów (przepełnienie stosu).
- dekodowanie
Podczas dekodowania struktury, jeśli wskaźnik nie był NULL, to przydzielana jest pamięć dla
wskazywanej struktury i wywoływany jest filtr dekodujący ją.
Tak niejawnie przydzieloną pamięć naleŜy zwalniać wywołując funkcję:
void xdr_free(xdrproc_t proc, char *objp)
– proc – filtr, który dekodował dane,
– objp – wskaźnik na dekodowana strukturę
82. Wymiana danych i identyfikatory procedur w RPC
- wymiana
Wszystkie filtry są skojarzone(via xdrrec_create) z funkcjami transmisji danych via gniazdka
IP.
Mechanizm jest ukryty przed programistą w funkcjach bibliotecznych
Rozproszona natura aplikacji narzuca ograniczenia na języki definicji RPC.
- identyfikatory
1. Identyfikowanie procedury przez nazwę jest niewystarczające.
2. Numer programu, wykonującego zdalną procedurę:
– wg firmy Sun numery 0x20 000 000 – 0x3F FFF FFF zalecane są do wykorzystania.
3. Numer wersji w obrębie programu.
4. Numer procedury w ramach wersji:
– numer 0 jest zastrzeŜony (rpcgen dodaje taką procedurę standardowo do testowania
działania serwera).
83. Ograniczenia RPC.
1. Zdalna procedura przyjmuje tylko jeden argument (moŜe on być struktura).
2. Wszelkie zmiany dokonane przez procedurę w obrębie jej argumentu pozostają lokalne
i nie są przekazywane z powrotem do klienta.
3. Do klienta przekazywany jest wynik procedury jako dowolny typ XDR –
np. takŜe struktura.
84. Schemat tworzenia aplikacji rozproszonej wykorzystującej RPC.
85. Identyfikowanie serwerów RPC.
1. Katalog serwerów – obowiązkowy serwis odwzorowujący parę {identyfikator_programu,
identyfikator_wersji} w konkretny numer portu (gniazdka IP).
2. Program, uruchamiany przy starcie systemu i nasłuchujący na porcie 111, przechowuje
katalog serwerów i odpowiadających im portów:
– Linux: portmap
- Solaris: rpcbind.

Podobne dokumenty