Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xdr_create(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

read(2)

write(2)

rpc(3N)

fclose(3S)

xdr_create(3N)                                               xdr_create(3N)

NAME
     xdrcreate: xdrdestroy, xdrmemcreate, xdrreccreate, xdrstdiocreate
     - Bibliotheksroutinen zur Erzeugung von Handles für die externe Daten-
     darstellung

BESCHREIBUNG
     XDR-Bibliotheksroutinen ermöglichen C-Programmierern die maschinenun-
     abhängige Darstellung beliebiger Datenstrukturen. Protokolle wie RPC
     verwenden diese Routinen für die Beschreibung ihrer Datenformate.

     Diese Routinen haben mit der Erzeugung von XDR-Handles zu tun. Bevor
     Daten in ein XDR-Format umgesetzt werden können, müssen XDR-Handles
     erzeugt werden.

     Wenn Sie eine der XDR-Funktionen verwenden, müssen Sie bei der Über-
     setzung die Bibliothek libnsl dazubinden (cc -lnsl).

   Routinen

     Die Definition der Datenstrukturen XDR, CLIENT und SVCXPRT ist in
     rpc(3N) zu finden.

     #include <rpc/xdr.h>

     void
     xdrdestroy(XDR *xdrs);

          Dies ist ein Makro, das die Löschroutine für den XDR-Handle xdrs
          aufruft. Das Löschen schließt gewöhnlich die Freigabe privater
          Datenstrukturen, die mit dem Stream verbunden sind, mit ein. Die
          Benutzung von xdrs ist nach einem Aufruf von xdrdestroy nicht
          definiert.

     void
     xdrmemcreate(XDR *xdrs, const caddrt addr,
          const uint size, const enum xdrop op);

          Diese Routine initialisiert den XDR-Handle, auf den xdrs ver-
          weist. Die Daten des Handle werden von einem Puffer gelesen bzw.
          auf ein Pufferstück geschrieben, das sich bei addr befindet und
          die Länge size besitzt. op bestimmt die anfängliche Operation auf
          den Daten (entweder XDRENCODE, XDRDECODE oder XDRFREE).













Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

xdr_create(3N)                                               xdr_create(3N)

     void
     xdrreccreate(XDR *xdrs, const uint sendsz,
          const uint recvsz, const caddrt handle,
          const int (*readit)(const void *, char *, const int),
          const int (*writeit)(const void *, const char *, const int));

          Diese Routine initialisiert den XDR-Handle, auf den xdrs ver-
          weist. Der Schreibpuffer für XDR-kodierte Daten ist sendsz Bytes
          groß. Der Wert 0 zeigt an, daß das System einen geeigneten Stan-
          dardwert wählen soll. Die Größe des Lesepuffers beträgt recvsz
          Bytes und kann ebenfalls durch Angabe von 0 auf einen Standard-
          wert gesetzt werden. Die Funktion writeit wird aufgerufen, wenn
          der Schreibpuffer voll ist. Umgekehrt wird die Funktion readit
          aufgerufen, wenn der Lesepuffer leer ist und mit Daten gefüllt
          werden soll. Das Verhalten dieser beiden Routinen ist den System-
          aufrufen read(2) und write(2) sehr ähnlich, mit dem Unterschied,
          daß statt Dateideskriptoren an die zwei Routinen ein handle
          (CLIENT oder SVCXPRT) als erster Parameter übergeben wird.

          Hinweis: Das Feld op des XDR-Handle muß vom Aufrufer gesetzt wer-
          den.

          Warnung:

          xdrreccreate() erzeugt einen XDR-Handle, der die XDR-Daten in
          Sätze aufteilt. In die eigentlichen Daten sind daher Satzmarken
          eingebettet.

     void
     xdrstdiocreate(XDR *xdrs, FILE *file, const enum xdrop op);

          Diese Routine initialisiert den XDR-Handle, auf den xdrs ver-
          weist. Der Handle verweist auf die XDR-Daten. Die Daten des XDR-
          Handle werden auf den Standard-E/A-Stream file geschrieben bzw.
          werden von ihm gelesen. Der Parameter op bestimmt die anfängliche
          Operation auf den Daten (entweder XDRENCODE, XDRDECODE oder
          XDRFREE).

          Warnung:

          Die Löschroutine dieser XDR-Handle ruft auf dem file-Stream
          fflush auf, jedoch niemals ein fclose(3S).

SIEHE AUCH
     read(2), write(2), rpc(3N), xdradmin(3N), xdrcomplex(3N),
     xdrsimple(3N), fclose(3S).








Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026