Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xdr_create(3N) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fclose(3S)

read(2)

rpc(3N)

write(2)



xdr_create(3N)                   UNIX System V                   xdr_create(3N)


NAME
      xdrcreate:   xdrdestroy, xdrmemcreate, xdrreccreate, xdrstdiocreate
      - library routines for external data representation stream creation

DESCRIPTION
      XDR library routines allow C programmers to describe arbitrary 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
            xdrdestroy 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 XDRENCODE,
            XDRDECODE, or XDRFREE).

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


10/89                                                                    Page 1







xdr_create(3N)                   UNIX System V                   xdr_create(3N)


            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.

            Note:  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 XDRENCODE, XDRDECODE, or XDRFREE).

            Note:  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), xdradmin(3N), xdrcomplex(3N),
      xdrsimple(3N)
































Page 2                                                                    10/89





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