|
|
Some transport providers support the idea of ``expedited data'' (also called ``urgent'' or ``out-of-band'' data). In general, expedited data is to be sent immediately to the remote process. This can be important if, for example, the client process is interactive, and the user hits a special key (such as ``quit'' or ``interrupt''). In this case, the server process needs to get this data as quickly as possible so it can respond promptly.
Expedited data is useful because transport providers operating in connection-oriented mode typically don't send data in small chunks. To improve efficiency, the transport provider waits until the sending process has written enough data (by collecting the data passed through the transport endpoint over several calls to t_snd) before actually transmitting it over the network. This widely used technique is called ``buffering.''
To make sure that a piece of data is not buffered for some unknown period of time, the sending process can mark it as ``expedited.'' This is done by calling t_snd and passing in the value T_EXPEDITED as the flags argument. In this case, the transport provider transmits the expedited data ahead of all data currently being buffered without delay.
There are a few problems with expedited data, however. One is that not all transport providers support this. Another is that the way expedited data actually works on transport providers that do support it (that is, the semantics of expedited data) is not exactly the same for all transports. Consequently, X/Open recommends that programs seeking to be as independent as possible of the underlying transport provider should avoid sending expedited data.