Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xdr_create(3n) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fclose(3S)

read(2)

rpc(3N)

write(2)



xdr_create(3N)          LIBRARY FUNCTIONS          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  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 for-
     mat.

  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



                                                                1





xdr_create(3N)          LIBRARY FUNCTIONS          xdr_create(3N)



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

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






























                                                                2



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