XDR_CREATE(3NSL) Networking Services Library Functions XDR_CREATE(3NSL)

NAME


xdr_create, xdr_destroy, xdrmem_create, xdrrec_create,
xdrstdio_create - library routines for external data representation
stream creation

SYNOPSIS


#include <rpc/xdr.h>

void xdr_destroy(XDR *xdrs);


void xdrmem_create(XDR *xdrs, const caddr_t addr, const uint_t size,
const enum xdr_op op);


void xdrrec_create(XDR *xdrs, const uint_t sendsz, const uint_t recvsz,
const caddr_t handle, const int (*readit)const void *read_handle,
char *buf, const int len, const int (*writeit)
const void *write_handle, const char *buf, const int len);


void xdrstdio_create(XDR *xdrs, FILE *
file, const enum xdr_op op);


DESCRIPTION


The 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 streams, which must be
created before any data can be translated into XDR format.

Routines


See rpc(3NSL) for the definition of the XDR CLIENT and SVCXPRT data
structures. Any buffers passed to the XDR routines must be properly
aligned. Use malloc(3C) to allocate these buffers or be sure that the
buffer address is divisible evenly by four.

xdr_destroy()
A macro that invokes the destroy routine
associated with the XDR stream, xdrs. Private
data structures associated with the stream are
freed. Using xdrs after xdr_destroy() is
invoked is undefined.


xdrmem_create()
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 less than size
bytes long. The op determines the direction of
the XDR stream. The value of op can be either
XDR_ENCODE, XDR_DECODE, or XDR_FREE.


xdrrec_create()
This routine initializes the read-oriented 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, xdrrec_create() calls readit.
The behavior of these two routines is similar to
the system calls read() and write(), except
that an appropriate handle, read_handle or
write_handle, is passed to the former routines
as the first parameter instead of a file
descriptor. See read(2) and write(2),
respectively. The XDR stream's op field must be
set by the caller.

This XDR stream implements an intermediate
record stream. Therefore, additional bytes in
the stream are provided for record boundary
information.


xdrstdio_create()
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. The value of op can be either
XDR_ENCODE, XDR_DECODE, or XDR_FREE.

The destroy routine associated with XDR streams
calls fflush() on the file stream, but never
fclose(). See fclose(3C).


A failure of any of these functions can be detected by first
initializing the x_ops field in the XDR structure (xdrs-> x_ops) to
NULL before calling the xdr*_create() function. If the x_ops field
is still NULL, after the return from the xdr*_create() function, the
call has failed. If the x_ops field contains some other value,
assume that the call has succeeded.

ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+---------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------+
|MT-Level | MT-Safe |
+---------------+-----------------+

SEE ALSO


read(2), write(2), fclose(3C), malloc(3C), rpc(3NSL),
xdr_admin(3NSL), xdr_complex(3NSL), xdr_simple(3NSL), attributes(7)

September 26, 2000 XDR_CREATE(3NSL)

tribblix@gmail.com :: GitHub :: Privacy