t_rcv(3)						     Library Functions Manual							  t_rcv(3)

NAME
t_rcv() - receive data or expedited data sent over a connection SYNOPSIS
DESCRIPTION
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 multiple 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 concept 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 remaining ETSDU will have set on return. The end of the ETSDU is iden- tified 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 buffer 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 necessarily 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. Otherwise, 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 endpoint 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 ALSO
fcntl(2), t_getinfo(3), t_look(3), t_open(3), t_snd(3), thread_safety(5). STANDARDS CONFORMANCE
t_rcv(3)