Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fcntl(2)

t_alloc(3)

t_open(3)

t_rcvuderr(3)

t_sndudata(3)

t_sndudata(3)  —  Subroutines

NAME

t_sndudata − Sends a data unit

LIBRARY

XTI Library (libxti.a)

SYNOPSIS

#include <xti.h>

int t_sndudata(

int fd,

struct t_unitdata ∗unitdata) ;

PARAMETERS

The t_sndudata() function can only be called in the T_IDLE transport provider state. The following table summarizes the relevance of input and output parameters before and after t_sndudata() is called:

Parameters Before Call After Call
fd y n
unitdata->addr.maxlen n n
unitdata->addr.len y n
unitdata->addr.buf y(y) n
unitdata->opt.maxlen n n
unitdata->opt.len y n
unitdata->opt.buf o(o) n
unitdata->udata.maxlen n n
unitdata->udata.len y n
unitdata->udata.buf y(y) n

Notes to Table:

yThis is a meaningful parameter.
(y)The content of the object pointed to by y is meaningful.
oThis is a meaningful but optional parameter.
(o)The content of the object pointed to by o is meaningful.
nThis is not a meaningful parameter.

fd Specifies a file descriptor returned by the t_open() function that identifies the transport endpoint through which data is sent.

unitdata Points to a type t_unitdata structure used to specify a data unit being sent through the transport endpoint specified by the fd parameter.  The t_unitdata structure has the following members:

struct netbuf   addr
References a buffer for protocol address information of the remote transport user. The type netbuf structure referenced by this member is defined in the xti.h include file and has the following members:

unsigned int   maxlen
Specifies a maximum byte length of the data buffer.

unsigned int   len
Specifies the actual byte length of the data written to the buffer.

char   ∗buf
Points to the buffer location.

struct netbuf   opt
Specifies protocol-specific optional parameters.

struct netbuf   udata
Specifies the user data unit that is being sent to the remote transport user.

  The ­unitdata->addr.maxlen, ­unitdata->opt.maxlen, and ­unitdata->udata.maxlen parameters are not meaningful with the t_sndudata() function.

  When optional data is not provided, the opt.len parameter should be set to the null value. 

  If the udata.len parameter is specified as 0 (zero), and the underlying transport service does not support the sending of 0 (zero) octets, t_errno is set to [TBADDATA] and -1 is returned. 

DESCRIPTION

The t_sndudata() function is an XTI connectionless service function that is used to send a data unit to a remote transport user. By default, t_sndudata() executes in the synchronous operating mode. The t_sndudata() function waits for the transport provider to accept the data before returning control to the calling transport user.

When the transport endpoint specified by the fd parameter has been previously opened with the O_NONBLOCK flag set in the t_open() or fcntl() functions, the t_sndudata() function executes in asynchronous mode. In asynchronous mode, when a data unit is not accepted control is immediately returned to the caller. The t_look() function can be used to determine when flow control restrictions have been lifted. 

RETURN VALUE

Upon successful completion, a value of 0 (zero) is returned. Otherwise, a value of -1 is returned and t_errno is set to indicate the error. 

ERRORS

If the t_sndudata() function fails, t_errno may be set to one of the following values:

[TBADDATA]
Illegal amount of data. Zero octets is not supported.

[TBADF] File descriptor fd is not a valid transport endpoint. 

[TFLOW] Asynchronous mode is indicated because O_NONBLOCK was set, but the transport provider cannot accept the data because of ­flow-control restrictions. 

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

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

[TOUTSTATE]
The t_sendudata() function  was issued in the wrong sequence on the transport endpoint referenced by the fd parameter. 

[TSYSERR] A system error occurred during execution of this function. A protocol error may not cause the t_sndudata() function to fail until a subsequent call is made to access the transport endpoint specified by the fd parameter. 

RELATED INFORMATION

Functions: fcntl(2), t_alloc(3), t_open(3), t_rcvuderr(3), t_sndudata(3)

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