t_rcv(3xti)t_rcv(3xti)Namet_rcv - receive data or expedited data sent over a connection
Syntax
#include <xti.h>
int t_rcv(fd, buf, nbytes, flags)
int fd;
char *buf;
unsigned nbytes;
int *flags;
Arguments
fd Identifies the local transport endpoint through which data
arrives.
buf Points to a receive buffer where user data is placed.
nbytes Specifies the size of the receive buffer.
flags Specifies optional flags. Can be set on return from
Description
This function receives either normal or expedited data.
By default, operates in synchronous mode and waits for data to arrive
if none is currently available. However, if O_NONBLOCK is set (by means
of or executes in asynchronous mode and fails if no data is available.
On return from the call, if T_MORE is set in flags this indicates that
there is more data and the current transport service data unit (TSDU)
or expedited transport service data (ETSDU) must be received in multi‐
ple calls. Each with the T_MORE flag set indicates that another must
follow immediately to get more data from the current TSDU. The end of
the TSDU is identified by the return of a 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 or the T_MORE flag is
not meaningful and should be ignored.
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, sets
T_EXPEDITED and T_MORE on return from the initial call. Subsequent
calls to retrieve the remaining ETSDU have T_EXPEDITED set on return.
The end of the ETSDU is identified by the return of a 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 is suspended until the ETSDU 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 function.
──────────────────────────────────────
Parameters Before Call After Call
──────────────────────────────────────
fd x /
buf x (x)
nbytes x /
flags / x
──────────────────────────────────────
Return Values
Upon successful completion, returns the number of bytes received. On
failure, a value of -1 is returned, and t_errno is set to indicate the
error.
Diagnostics
On failure, t_errno is set to one of the following:
[TBADF] The specified file descriptor does not refer to a
transport endpoint.
[TOUTSTATE] The function was issued in the wrong sequence on
the transport endpoint referenced by fd.
[TNODATA] O_NONBLOCK was set, but no data is currently avail‐
able from the transport provider.
[TLOOK] An asynchronous event has occurred on the transport
endpoint and requires immediate attention.
[TNOTSUPPORT] This function is not supported by the underlying
transport provider.
[TSYSERR] A system error has occurred during execution of
this function.
See Alsofcntl(2), t_getinfo(3xti), t_look(3xti), t_open(3xti), t_snd(3xti)t_rcv(3xti)