Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ t_snd(3N) — Amiga System V Release 4 Version 2.03

Media Vault

Software Library

Restoration Projects

Artifacts Sought



t_snd(3N)               NETWORK FUNCTIONS               t_snd(3N)



NAME
     tsnd - send data or expedited data over a connection

SYNOPSIS
     #include <tiuser.h>

     int tsnd (int fd, char *buf, unsigned nbytes, int flags);

DESCRIPTION
     This function is used to send  either  normal  or  expedited
     data.  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, and
     flags specifies any optional flags described below.

     By default, tsnd 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 ONDELAY or ONONBLOCK is set
     (via topen or fcntl), tsnd will  execute  in  asynchronous
     mode,  and  will  fail immediately if there are flow control
     restrictions.

     Even when there are no flow control restrictions, tsnd will
     wait  if  STREAMS  internal  resources  are  not  available,
     regardless of the state of ONDELAY or ONONBLOCK.

     On successful completion, tsnd returns the number of  bytes
     accepted  by  the  transport  provider.   Normally this will
     equal the number of bytes specified in nbytes.  However,  if
     ONDELAY or ONONBLOCK is set, it is possible that only part
     of the data will be accepted by the transport provider.   In
     this  case, tsnd will set TMORE for the data that was sent
     (see below) and will return a value less  than  nbytes.   If
     nbytes is zero and sending of zero bytes is not supported by
     the underlying transport provider, tsnd()  will  return  -1
     with  terrno set to TBADDATA.  A return value of zero indi-
     cates that the request to send a  zero-length  data  message
     was sent to the provider.

     If TEXPEDITED is set in flags, the data  will  be  sent  as
     expedited  data,  and will be subject to the interpretations
     of the transport provider.

     If TMORE is set in flags, or is set as described above,  an
     indication  is sent to the transport provider that the tran-
     sport service data unit (TSDU) or expedited  transport  ser-
     vice  data unit (ETSDU) is being sent through multiple tsnd
     calls.  Each tsnd with the TMORE flag set  indicates  that
     another  tsnd  will  follow  with more data for the current
     TSDU.  The end of the TSDU (or ETSDU)  is  identified  by  a
     tsnd  call  with  the  TMORE  flag not set.  Use of TMORE



            Last change: Networking Support Utilities           1





t_snd(3N)               NETWORK FUNCTIONS               t_snd(3N)



     enables a user to break up large logical data units  without
     losing the boundaries of those units at the other 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 topen or
     tgetinfo, the TMORE 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 topen or tgetinfo.
     If the size is exceeded, a TSYSERR with system error  EPROTO
     will  occur.  However, the tsnd 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 tsnd is  issued  from
     the  TIDLE  state,  the  provider  may silently discard the
     data.   If  tsnd  is  issued  from  any  state  other  than
     TDATAXFER,  TINREL or TIDLE, the provider will generate a
     TSYSERR with system error EPROTO (which may be  reported  in
     the manner described above).  On failure, terrno may be set
     to one of the following:

     [TBADF]             The specified file descriptor  does  not
                         refer to a transport endpoint.

     [TFLOW]             ONDELAY or ONONBLOCK was set, but  the
                         flow  control  mechanism  prevented  the
                         transport provider from  accepting  data
                         at this time.

     [TNOTSUPPORT]       This function is not  supported  by  the
                         underlying transport provider.

     [TSYSERR]           A system error [see intro(2)]  has  been
                         detected  during execution of this func-
                         tion.

     [TBADDATA]          nbytes is zero and sending zero bytes is
                         not supported by the transport provider.

SEE ALSO
     topen(3N), trcv(3N).
     UNIX System V Network Programmer's Guide.

DIAGNOSTICS
     On successful completion, tsnd returns the number of  bytes
     accepted  by  the  transport  provider, and it returns -1 on
     failure and terrno is set to indicate the error.






            Last change: Networking Support Utilities           2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026