xdr_create(3N) 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 handles. XDR handles have
to be created before any data can be translated into XDR format.
If you use one of the XDR functions, you must link the libnsl library
at compilation (cc -lnsl).
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
handle, 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 handle 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 handle (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 handle 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
Page 1 Reliant UNIX 5.44 Printed 11/98
xdr_create(3N) xdr_create(3N)
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 handle'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 stan-
dard 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
read(2), write(2), rpc(3N), xdradmin(3N), xdrcomplex(3N),
xdrsimple(3N), fclose(3S).
Page 2 Reliant UNIX 5.44 Printed 11/98