t_snd(3) CLIX t_snd(3)
NAME
t_snd - Send data or expedited data over a connection.
LIBRARY
The Transport Layer Interface (TLI) Library (libnsl_s.a)
SYNOPSIS
#include <tiuser.h>
int t_snd(
int fd ,
char *buf ,
unsigned nbytes ,
int flags );
PARAMETERS
fd Identifies the local transport endpoint over which data should be
sent.
buf Points to the user data.
nbytes Specifies the number of bytes of user data to be sent.
flags Specifies any optional flags.
DESCRIPTION
This function is used to send either normal or expedited data. The fd
parameter identifies the local transport endpoint over which data should
be sent, buf points to the user data, nbytes specifies the number of bytes
of user data to be sent, and flags specifies any optional flags described
below.
By default, t_snd() operates in synchronous mode and may wait if flow
control restrictions prevent the data from being accepted by the local
transport provider at the time the call is made. However, if O_NDELAY is
set (with t_open() or fcntl()), t_snd() executes in asynchronous mode and
fails immediately if flow control restrictions exist.
With no flow control restrictions, t_snd() waits if STREAMS internal
resources are not available, regardless of the state of O_NDELAY.
On successful completion, t_snd() returns the number of bytes accepted by
the transport provider. Normally this will equal the number of bytes
specified in nbytes. However, if O_NDELAY is set, it is possible only
part of the data will be accepted by the transport provider. In this
case, t_snd() will set T_MORE for the data that was sent (see below) and
2/94 - Intergraph Corporation 1
t_snd(3) CLIX t_snd(3)
returns a value less than nbytes. If nbytes is zero, no data is passed to
the provider and t_snd() returns zero.
If T_EXPEDITED is set in flags, the data is sent as expedited data, and is
subject to the interpretations of the transport provider.
If T_MORE is set in flags, or is set as described above, an indication is
sent to the transport provider that the Transport Service Data Unit (TSDU)
or Expedited Transport Service Data Unit (ETSDU) is being sent through
multiple t_snd() calls. Each t_snd() with the T_MORE flag set indicates
that another t_snd() will follow with more data for the current TSDU. The
end of the TSDU (or ETSDU) is identified by a t_snd() call with the T_MORE
flag not set. Use of T_MORE enables a user to break up large logical data
units without losing the boundaries of those units at the vvother end of
the connection. The flag implies nothing about how the data is packaged
for transfer below the transport interface. If the transport provider
does not support the concept of a TSDU as indicated in the info argument
on return from t_open() or t_getinfo(), the T_MORE flag is not meaningful
and should be ignored.
The size of each TSDU or ETSDU must not exceed the limits of the transport
provider as returned by t_open() or t_getinfo(). If the size is exceeded,
a TSYSERR with system error EPROTO occurs. However, the t_snd() function
may not fail because EPROTO errors may not be reported immediately. In
this case, a subsequent call that accesses the transport endpoint will
fail with the associated TSYSERR.
If t_sndint() is issued from the T_IDLE state, the provider may silently
discard the data. If t_snd() is issued from any state other than
T_DATAXFER, T_INREL, or T_IDLE, the provider will generate a TSYSERR with
system error EPROTO (which may be reported in the manner described above).
RETURN VALUES
On successful completion, t_snd() returns the number of bytes accepted by
the transport provider, and it returns -1 on failure, and t_errno is set
to indicate the error.
ERRORS
On failure, t_errno may be set to one of the following:
[TBADF]
The specified file descriptor does not refer to a transport
endpoint.
[TFLOW]
The O_NDELAY was set, but the flow control mechanism prevented the
transport provider from accepting data at this time.
[TNOTSUPPORT]
2 Intergraph Corporation - 2/94
t_snd(3) CLIX t_snd(3)
This function is not supported by the underlying transport
provider.
[TSYSERR]
A system error [see intro] has been detected during execution of
this function.
RELATED INFORMATION
Functions: t_open(3), t_rcv(3)
AT&T UNIX System V Network Programmer's Guide
2/94 - Intergraph Corporation 3