Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ t_rcvdat(S) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

netbuf(FP)


 t_rcvudata(S)             (TLI/XTI) 6 January 1993             t_rcvudata(S)


 Name

    t_rcvudata - receive a data unit

 Syntax


    TLI syntax


    cc . . .  -lnsls


    #include <sys/tiuser.h>

    int t_rcvudata (fd, unitdata, flags)
    int fd;
    struct t_unitdata *unitdata;
    int *flags;


    XTI syntax


    cc . . .  -lxti


    #include <xti.h>

    int t_rcvudata (fd, unitdata, flags)
    int fd;
    struct t_unitdata *unitdata;
    int *flags;


 Description

    This function is used in connectionless mode to receive a data unit from
    another transport user.  fd identifies the local transport endpoint
    through which data is received, unitdata holds information associated
    with the received data unit, and flags is set on return to indicate that
    the complete data unit was not received.  unitdata points to a tunitdata
    structure containing the following members:

           struct netbuf addr;   /* caller's address             */
           struct netbuf opt;    /* options                      */
           struct netbuf udata;  /* user data returned by caller */

    The maxlen field of addr, opt, and udata must be set before issuing this
    function to indicate the maximum size of the buffer for each.

    On return from this call, addr specifies the protocol address of the
    sending user, opt identifies protocol-specific options that were associ-
    ated with this data unit, and udata specifies the user data that was
    received.

    By default, trcvudata operates in synchronous mode and waits for a data
    unit to arrive if none is currently available.  However, if ONONBLOCK is
    set (via topen or fcntl), trcvudata executes in asynchronous mode and
    fails if no data units are available.

    If the buffer defined in the udata field of unitdata is not large enough
    to hold the current data unit, the buffer is filled and TMORE is set in
    flags on return to indicate that another trcvudata should be issued to
    retrieve the rest of the data unit.  Subsequent trcvudata call(s) return
    zero for the length of the address and options until the full data unit
    has been received.

    On failure, terrno may be set to one of the following:

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

    [TBUFOVFLW]         The number of bytes allocated for the incoming proto-
                        col address or options is not sufficient to store the
                        information.  The unit data information to be
                        returned in unitdata is discarded.

    [TLOOK]             An asynchronous event has occurred on this transport
                        endpoint and requires immediate attention.

    [TNODATA]           ONONBLOCK was set, but no data units are currently
                        available from the transport provider.

    [TNOTSUPPORT]       The TCLTS service type is not supported by the
                        underlying transport provider.

    [TOUTSTATE]         (XTI only.)  The state should have been TIDLE when
                        this routine was called.

    [TSYSERR]           A system error occurred during execution of this
                        function.  One possibility, indicated by errno set to
                        EPROTO, is a protocol error.

 Diagnostics

    The trcvudata function returns 0 on successful completion and -1 on
    failure, and terrno is set to indicate the error.

 See also

    netbuf(FP), trcvuderr(S), tsndudata(S)

 Standards conformance

    trcvudata is conformant with:
    AT&T SVID Issue 2;
    X/Open Portability Guide, Issue 3, 1989;
    and Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2).


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