Networking Services Library Functions xdradmin(3NSL)
NAME
xdradmin, xdrcontrol, xdrgetpos, xdrinline,
xdrrecendofrecord, xdrreceof, xdrrecreadbytes,
xdrrecskiprecord, xdrsetpos, xdrsizeof - library routines
for external data representation
DESCRIPTION
XDR library routines allow C programmers to describe arbi-
trary data structures in a machine-independent fashion. Pro-
tocols such as remote procedure calls (RPC) use these rou-
tines to describe the format of the data.
These routines deal specifically with the management of the
XDR stream.
Routines
See rpc(3NSL) for the definition of the XDR data structure.
Note that any buffers passed to the XDR routines must be
properly aligned. It is suggested either that malloc(3C) be
used to allocate these buffers, or that the programmer
insure that the buffer address is divisible evenly by four.
#include
boolt xdrcontrol( XDR *xdrs, int req, void *info);
A function macro to change or retrieve various informa-
tion about an XDR stream. req indicates the type of
operation and info is a pointer to the information. The
supported values of req is XDRGETBYTESAVAIL and its
argument type is xdrbytesrec *. They return the number
of bytes left unconsumed in the stream and a flag indi-
cating whether or not this is the last fragment.
uintt xdrgetpos(const XDR *xdrs);
A macro that invokes the get-position routine associated
with the XDR stream, xdrs. The routine returns an
unsigned integer, which indicates the position of the
XDR byte stream. A desirable feature of XDR streams is
that simple arithmetic works with this number, although
the XDR stream instances need not guarantee this. There-
fore, applications written for portability should not
depend on this feature.
long *xdrinline(XDR *xdrs, const int len);
A macro that invokes the in-line routine associated with
SunOS 5.11 Last change: 30 Dec 1996 1
Networking Services Library Functions xdradmin(3NSL)
the XDR stream, xdrs. The routine returns a pointer to a
contiguous piece of the stream's buffer; len is the byte
length of the desired buffer. Note: pointer is cast to
long *.
Warning: xdrinline() may return NUL (0) if it cannot
allocate a contiguous piece of a buffer. Therefore the
behavior may vary among stream instances; it exists for
the sake of efficiency, and applications written for
portability should not depend on this feature.
boolt xdrrecendofrecord(XDR *xdrs, int sendnow);
This routine can be invoked only on streams created by
xdrreccreate(). See xdrcreate(3NSL). The data in the
output buffer is marked as a completed record, and the
output buffer is optionally written out if sendnow is
non-zero. This routine returns TRUE if it succeeds,
FALSE otherwise.
boolt xdrreceof(XDR *xdrs);
This routine can be invoked only on streams created by
xdrreccreate(). After consuming the rest of the current
record in the stream, this routine returns TRUE if there
is no more data in the stream's input buffer. It returns
FALSE if there is additional data in the stream's input
buffer.
int xdrrecreadbytes(XDR *xdrs, caddrt addr, uintt
nbytes);
This routine can be invoked only on streams created by
xdrreccreate(). It attempts to read nbytes bytes from
the XDR stream into the buffer pointed to by addr. Upon
success this routine returns the number of bytes read.
Upon failure, it returns -1. A return value of 0 indi-
cates an end of record.
boolt xdrrecskiprecord(XDR *xdrs);
This routine can be invoked only on streams created by
xdrreccreate(). See xdrcreate(3NSL). It tells the
XDR implementation that the rest of the current record
in the stream's input buffer should be discarded. This
routine returns TRUE if it succeeds, FALSE otherwise.
SunOS 5.11 Last change: 30 Dec 1996 2
Networking Services Library Functions xdradmin(3NSL)
boolt xdrsetpos(XDR *xdrs, const uintt pos);
A macro that invokes the set position routine associated
with the XDR stream xdrs. The parameter pos is a posi-
tion value obtained from xdrgetpos(). This routine
returns TRUE if the XDR stream was repositioned, and
FALSE otherwise.
Warning: it is difficult to reposition some types of XDR
streams, so this routine may fail with one type of
stream and succeed with another. Therefore, applications
written for portability should not depend on this
feature.
unsigned long xdrsizeof(xdrproct func, void *data);
This routine returns the number of bytes required to
encode data using the XDR filter function func, exclud-
ing potential overhead such as RPC headers or record
markers. 0 is returned on error. This information might
be used to select between transport protocols, or to
determine the buffer size for various lower levels of
RPC client and server creation routines, or to allocate
storage when XDR is used outside of the RPC subsystem.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
MT-Level Safe
SEE ALSO
malloc(3C), rpc(3NSL), xdrcomplex(3NSL), xdrcreate(3NSL),
xdrsimple(3NSL), attributes(5)
SunOS 5.11 Last change: 30 Dec 1996 3
|