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