Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

t_open(3N)

t_rcv(3N)



     T_SND(3N)                  DG/UX 4.30                   T_SND(3N)



     NAME
          t_snd - send data or expedited data over a connection

     SYNOPSIS
          #include <tiuser.h>

          int t_snd(fd, buf, nbytes, flags)
          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, 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 (via t_open or
          fcntl), t_snd will execute in asynchronous mode, and will
          fail immediately if there are flow control restrictions.

          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 that 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 will return a value less than nbytes.  If nbytes is
          zero, no data will be passed to the provider and t_snd will
          return zero.

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

          If T_MORE is set in flags, or 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 other end of the
          connection.  The flag implies nothing about how the data is
          packaged for transfer below the transport interface.  If the



     Licensed material--property of copyright holder(s)         Page 1





     T_SND(3N)                  DG/UX 4.30                   T_SND(3N)



          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.
          Failure to comply will result in protocol error EPROTO.
          (See TSYSERR below.)

          If t_snd 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 or T_IDLE, the provider will
          generate an EPROTO error.

          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]             O_NDELAY 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 has occurred during
                              execution of this function.

     SEE ALSO
          t_open(3N), t_rcv(3N).

     DIAGNOSTICS
          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.

















     Licensed material--property of copyright holder(s)         Page 2



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