t_rcv(3)t_rcv(3)NAMEt_rcv - Receive normal data or expedited data on a connection
SYNOPSIS
#include <xti.h>
int t_rcv(
int fd,
char *buf,
unsigned nbytes,
int *flags );
LIBRARY
XTI Library (libxti.a)
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
t_rcv(): XNS4.0, XNS5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
PARAMETERS
The following table summarizes the relevance of input and output param‐
eters before and after t_rcv() is called:
──────────────────────────────────────
Parameters Before Call After Call
──────────────────────────────────────
fd y n
buf y (y)
nbytes y n
flags n y
──────────────────────────────────────
Notes to Table: This is a meaningful parameter. This is not a meaning‐
ful parameter. The content of the object pointed to by y is meaning‐
ful. Specifies a file descriptor returned by the t_open() function
that identifies the local transport endpoint where an active connection
exists. Points to the receive data buffer where returned data is to be
written. Specifies the length in bytes of the received-data buffer
pointed to by the buf parameter. Points to an unsigned integer (least
significant bit rightmost) whose bits are flags that specify the action
that must be taken by the responding transport user when the t_rcv()
function is processed. Corresponding values and symbolic names for the
following flag bits are defined in the xti.h include file:
───────────────────────────────────────────────────────────────────────
Bit Symbolic Name Meaning
───────────────────────────────────────────────────────────────────────
0 T_MORE When set, this bit notifies the transport
user that received data is a fragment of a
Transport Service Data Unit (TSDU) or Expe‐
dited Transport Service Data Unit (ETSDU),
and that more data is available. The rest of
the TSDU or ETSDU can be received through
further t_rcv() function calls. Each time
this option is set on return, another
t_rcv() call can receive additional pieces
of the TSDU or ETSDU. When the final TSDU
or ETSDU is received, this option bit has a
value of 0 (zero) on return. When the trans‐
port provider does not support TSDU or ETSDU
data exchanges (refer to the t_open() and
t_getinfo() functions), the state of this
option bit should be ignored.
1 T_EXPEDITED When set, this bit notifies the transport
user that received data is an ETSDU. When
the number of ETSDU data bytes exceeds the
value specified by the nbytes parameter,
this option bit and the T_MORE option bit
are set on return of the initial t_rcv()
call. Subsequent t_rcv() calls issued to
retrieve the rest of the ETSDU have both
these option bits set on return. When the
final piece of the ETSDU is received, the
T_MORE option bit has a value of 0 (zero) on
return.
When an ETSDU is received during reception
of a TSDU, no remaining pieces of the TSDU
may be received until the current ETSDU has
been completely received.
───────────────────────────────────────────────────────────────────────
DESCRIPTION
The t_rcv() function is an XTI connection-oriented service function
that is used to receive normal or expedited data. The transport end‐
point through which data arrives is specified by a file descriptor pre‐
viously returned by the t_open() function. By default, t_rcv() executes
in the synchronous operating mode. In synchronous mode t_rcv() waits
for data to arrive even when none is currently available before return‐
ing control to the calling transport user.
When the transport endpoint, specified by the fd parameter, has been
opened with the O_NONBLOCK option set in the t_open() or fcntl() func‐
tions, the t_rcv() function executes in asynchronous mode. In asynchro‐
nous mode, when no data is available, this function fails.
NOTES
In synchronous mode, the only way for a transport user to be notified
of the arrival of normal or expedited data is to call the t_rcv() func‐
tion or to check for states T_DATA or T_EXDATA using the t_look() func‐
tion.
RETURN VALUES
Upon successful completion, the t_rcv() function returns the number of
bytes of data received. Otherwise, the value -1 is returned and t_errno
is set to indicate the error.
ERRORS
If the t_rcv() function fails, t_errno is set to one of the following
values: The specified file descriptor does not refer to a valid trans‐
port endpoint. Asynchronous mode is indicated because O_NONBLOCK was
set, but no data is currently available from the transport provider.
An asynchronous event has occurred on this transport endpoint and
requires immediate attention (refer to t_look() function). The
t_look() function was issued in the wrong sequence on the transport
endpoint referenced by the fd parameter. A system error occurred dur‐
ing execution of t_look(). This function is not supported by the
underlying transport provider. This error indicates that a communica‐
tion problem has been detected between XTI and the transport provider
for which there is no other suitable XTI(t_errno).
VALID STATES
The t_rcv() function can only be called in the T_DATAXFER and T_OUTREL
transport provider states.
SEE ALSO
Functions: fcntl(2), t_getinfo(3), t_look(3), t_open(3), t_snd(3).
Standards: standards(5).
Network Programmer's Guide
t_rcv(3)