Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xdrrec_create(3N) — svr4 — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fclose(3S)

read(2)

rpc(3N)

write(2)

xdr_admin(3N)

xdr_complex(3N)

xdr_simple(3N)



XDRCREATE(3N-SVR4) RISC/os Reference Manual  XDRCREATE(3N-SVR4)



NAME
     xdr_create: xdr_destroy, xdrmem_create, xdrrec_create,
          xdrstdio_create - library routines for external data
          representation stream creation

DESCRIPTION
     XDR library routines allow C programmers to describe arbi-
     trary data structures in a machine-independent fashion.
     Protocols such as remote procedure calls (RPC) use these
     routines to describe the format of the data.

     These routines deal with the creation of XDR streams.  XDR
     streams have to be created before any data can be translated
     into XDR format.

   Routines
     See rpc(3N) for the definition of the XDR, CLIENT, and
     SVCXPRT data structures.

     #include <rpc/xdr.h>

     void
     xdrdestroy(XDR *xdrs);

          A macro that invokes the destroy routine associated
          with the XDR stream, xdrs.  Destruction usually
          involves freeing private data structures associated
          with the stream.  Using xdrs after invoking xdr_destroy
          is undefined.

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

          This routine initializes the XDR stream object pointed
          to by xdrs.  The stream's data is written to, or read
          from, a chunk of memory at location addr whose length
          is no more than size bytes long.  The op determines the
          direction of the XDR stream (either XDR_ENCODE,
          XDR_DECODE, or XDR_FREE).

     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));

          This routine initializes the XDR stream object pointed
          to by xdrs.  The stream's data is written to a buffer
          of size sendsz; a value of 0 indicates the system
          should use a suitable default.  The stream's data is
          read from a buffer of size recvsz; it too can be set to



                        Printed 11/19/92                   Page 1





XDRCREATE(3N-SVR4) RISC/os Reference Manual  XDRCREATE(3N-SVR4)



          a suitable default by passing a 0 value.  When a
          stream's output buffer is full, writeit is called.
          Similarly, when a stream's input buffer is empty,
          readit is called.  The behavior of these two routines
          is similar to the system calls read and write [see
          read(2) and write(2), respectively], except that handle
          (CLIENT or SVCXPRT) is passed to the former routines as
          the first parameter instead of a file descriptor.
          Note:  the XDR stream's op field must be set by the
          caller.

          Warning:  this XDR stream implements an intermediate
          record stream.  Therefore, there are additional bytes
          in the stream to provide record boundary information.

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

          This routine initializes the XDR stream object pointed
          to by xdrs.  The XDR stream data is written to, or read
          from, the standard I/O stream file.  The parameter op
          determines the direction of the XDR stream (either
          XDR_ENCODE, XDR_DECODE, or XDR_FREE).

          Warning:  the destroy routine associated with such XDR
          streams calls fflush on the file stream, but never
          fclose [see fclose(3S)].

SEE ALSO
     fclose(3S), read(2), rpc(3N), write(2), xdr_admin(3N),
     xdr_complex(3N), xdr_simple(3N).
























 Page 2                 Printed 11/19/92



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