t_rcv(3)t_rcv(3)NAMEt_rcv() - receive data or expedited data sent over a connection
SYNOPSISDESCRIPTION
The 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 and specifies optional flags as described below.
By default, operates in synchronous mode and will wait for data to
arrive if none is currently available. However, if is set (via or will
execute in asynchronous mode and will fail if no data is available.
(See [TNODATA] below.)
On return from the call, if 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 mul‐
tiple calls. In the asynchronous mode, the flag may be set on return
from the call even when the number of bytes received is less than the
size of the receive buffer specified. Each with the flag set indicates
that another must follow immediately to get more data for the current
TSDU. The end of the TSDU is identified by the return of a call with
the flag not set. If the transport provider does not support the con‐
cept of a TSDU as indicated in the info argument on return from or the
flag is not meaningful and should be ignored. If nbytes is greater
than zero on the call to 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 is set in flags. If
the number of bytes of expedited data exceeds nbytes, will set and on
return from the initial call. Subsequent calls to retrieve the remain‐
ing ETSDU will have set on return. The end of the ETSDU is identified
by the return of a call with the 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
has been processed. Only after the full ETSDU has been retrieved 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 or events using the function.
XTI Internet Protocol-specific Information
The 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 flag set. If the buf‐
fer supplied by the user is too small to hold all urgent data, the flag
will be set, indicating that urgent data still remains to be read.
Note that the number of bytes received with the flag set is not neces‐
sarily equal to the number of bytes sent by the peer user with flag
set.
Fork Safety
is not fork-safe.
RETURN VALUE
Upon successful completion, returns the number of bytes received. Oth‐
erwise, it return −1 and is set to indicate the error.
ERRORS
On failure, is set to one of the following:
The specified identifier does not refer to a transport endpoint.
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.
This function is not supported by the underlying transport provider.
(XTI only) The function was issued in the wrong sequence on the end‐
point
referenced by fd.
A system error has occurred during execution of this function.
(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 (
SEE ALSOfcntl(2), t_getinfo(3), t_look(3), t_open(3), t_snd(3),
thread_safety(5).
STANDARDS CONFORMANCEt_rcv(3)