|
|
One of the characteristics of both connection-oriented and connectionless service is flow control. This means that a process cannot send data through a transport endpoint if the transport provider already has all the data it can currently handle.
If a transport endpoint is operating in synchronous mode and flow control is in effect, a call to t_snd or t_sndudata will block until the transport provider has freed up enough internal storage (buffers) to accept more data. The transport provider frees buffers by transmitting data to the destination transport endpoint.
If a transport endpoint is operating in asynchronous mode and flow control is in effect, a call to t_snd or t_sndudata returns -1 and the global variable t_errno is set to TFLOW. The process can either call the t_look function to detect when it can send more data (t_look returns either T_GODATA or T_GOEXDATA when flow control has been lifted) or it can use an event management facility to be notified when flow control has been lifted. For information about using an event management facility, see ``Event management''.