*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->HP-UX 11i man pages -> t_rcv (3)              
Title
Content
Arch
Section
 

Contents


 t_rcv(3)                                                           t_rcv(3)




 NAME    [Toc]    [Back]
      t_rcv() - receive data or expedited data sent over a connection

 SYNOPSIS    [Toc]    [Back]
      #include <xti.h>            /* for X/OPEN Transport Interface - XTI */
      /* or */
      #include <tiuser.h>         /* for Transport Layer Interface - TLI  */

      int t_rcv (fd, buf, nbytes, flags);
      int fd;
      char *buf;
      unsigned nbytes;
      int *flags;

 DESCRIPTION    [Toc]    [Back]
      The t_rcv() function receives either normal or expedited data. fd
      identifies the local transport endpoint through which data will
      arrive. buf points to a receive buffer where user data will be placed.
      nbytes specifies the size of the receive buffer. flags may be set on
      return from t_rcv() and specifies optional flags as described below.

      By default, t_rcv() operates in synchronous mode and will wait for
      data to arrive if none is currently available.  However, if O_NONBLOCK
      is set (via t_open() or fcntl()), t_rcv() will execute in asynchronous
      mode and will fail if no data is available.  (See [TNODATA] below.)

      On return from the call, if T_MORE is set in flags, this indicates
      that there is more data.  Thus, the current transport service data
      unit (TSDU) or expedited transport service data unit (ETSDU) must be
      received in multiple t_rcv() calls.  In the asynchronous mode, the
      T_MORE flag may be set on return from the t_rcv() call even when the
      number of bytes received is less than the size of the the receive
      buffer specified.  Each t_rcv() with the T_MORE flag set indicates
      that another t_rcv() must follow immediately to get more data for the
      current TSDU. The end of the TSDU is identified by the return of a
      t_rcv() call with the T_MORE flag not set.  If the transport provider
      does not support the concept of a TSDU as indicated in the info
      argument on return from t_open() or t_getinfo(), the T_MORE flag is
      not meaningful and should be ignored.  If nbytes is greater than zero
      on the call to t_rcv(), t_rcv() will return 0 only if the end of a
      TSDU is being returned to the user.

      On return, the data returned is expedited data if T_EXPEDITED is set
      in flags.  If the number of bytes of expedited data exceeds nbytes,
      t_rcv() will set T_EXPEDITED and T_MORE on return from the initial
      call.  Subsequent calls to retrieve the remaining ETSDU will have
      T_EXPEDITED set on return.  The end of the ETSDU is identified by the
      return of a t_rcv() call with the T_MORE flag not set.

      If expedited data arrives after part of a TSDU has been retrieved,
      receipt of the remainder of the TSDU will be suspended until the ETSDU



 Hewlett-Packard Company            - 1 -   HP-UX 11i Version 2: August 2003






 t_rcv(3)                                                           t_rcv(3)




      has been processed.  Only after the full ETSDU has been retrieved
      (T_MORE not set) will the remainder of the TSDU be available to the
      user.

      In synchronous mode, the only way for the user to be notified of the
      arrival of normal or expedited data is to issue this function or check
      for the T_DATA or T_EXDATA events using the t_look() function.

    Thread-Safeness    [Toc]    [Back]
      The t_rcv() function is safe to be called by multithreaded
      applications, and it is thread-safe for both POSIX Threads and DCE
      User Threads.  It has a cancellation point.  It is neither asynccancel
 safe nor async-signal safe.  Finally, it is not fork-safe.

 XTI Internet Protocol-specific Information    [Toc]    [Back]
      The T_MORE flag should be ignored if normal data is delivered.  If a
      byte in the data stream is pointed to by the TCP urgent pointer, as
      many bytes as possible preceding this marked byte and the marked byte
      itself are denoted as urgent data and are received with the
      T_EXPEDITED flag set.  If the buffer supplied by the user is too small
      to hold all urgent data, the T_MORE flag will be set, indicating that
      urgent data still remains to be read.  Note that the number of bytes
      received with the T_EXPEDITED flag set is not necessarily equal to the
      number of bytes sent by the peer user with T_EXPEDITED flag set.

 RETURN VALUE    [Toc]    [Back]
      Upon successful completion, t_rcv() returns the number of bytes
      received.  Otherwise, it return -1 and t_errno is set to indicate the
      error.

 ERRORS    [Toc]    [Back]
      On failure, t_errno is set to one of the following:

      [TBADF]             The specified identifier does not refer to a
                          transport endpoint.

      [TNODATA]           O_NONBLOCK was set, but no data is currently
                          available from the transport provider.

      [TLOOK]             An asynchronous event has occurred on this
                          transport endpoint and requires immediate
                          attention.

      [TNOTSUPPORT]       This function is not supported by the underlying
                          transport provider.

      [TOUTSTATE]         (XTI only) The function was issued in the wrong
                          sequence on the endpoint referenced by fd.

      [TSYSERR]           A system error has occurred during execution of
                          this function.



 Hewlett-Packard Company            - 2 -   HP-UX 11i Version 2: August 2003






 t_rcv(3)                                                           t_rcv(3)




      [TPROTO]            (XTI only) This error indicates that a
                          communication problem has been detected between
                          XTI and the transport provider for which there is
                          no other suitable XTI (t_errno).

 SEE ALSO    [Toc]    [Back]
      fcntl(2), t_getinfo(3), t_look(3), t_open(3), t_snd(3).

 STANDARDS CONFORMANCE    [Toc]    [Back]
      t_rcv(): SVID2, XPG3, XPG4


 Hewlett-Packard Company            - 3 -   HP-UX 11i Version 2: August 2003
[ Back ]
      
      
 Similar pages
Name OS Title
t_rcv Tru64 Receive normal data or expedited data on a connection
t_snd Tru64 Send normal data or expedited data over a connection
t_rcvvudata Tru64 Receive data or expedited data sent over a
t_snd HP-UX send data or expedited data over a connection
t_snd IRIX send data or expedited data over a connection
t_rcvudata IRIX receive a data unit
t_rcvudata Tru64 Receive a data unit
t_rcvuderr IRIX receive a unit data error indication
t_rcvuderr Tru64 Receive a unit data error indication
t_rcvuderr HP-UX receive a unit data error indication
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service