Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

t_open(3)

t_rcv(3)



  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




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