MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


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



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™