xdr_create(3N) NETWORK 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
Last change: 1
xdr_create(3N) NETWORK FUNCTIONS xdr_create(3N)
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
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).
Last change: 2