[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    t_listen(3N) manual page Table of Contents

Name

t_listen - listen for a connect request

Synopsis

cc [ flag ... ] file ... -lnsl [ library ... ]

#include <tiuser.h>

int t_listen(int fildes, struct t_call *call);

MT-Level

MT-Safe

Description

This function listens for a connect request from a calling transport user. fildes identifies the local transport endpoint where connect indications arrive, and on return, call contains information describing the connect indication. call points to a t_call structure, which contains the following members:

struct netbufaddr;
struct netbufopt;
struct netbufudata;
intsequence;

netbuf is described in t_connect(3N) . In call, addr returns the protocol address of the calling transport user, opt returns protocol-specific parameters associated with the connect request, udata returns any user data sent by the caller on the connect request, and sequence is a number that uniquely identifies the returned connect indication. The value of sequence enables the user to listen for multiple connect indications before responding to any of them.

Since this function returns values for the addr, opt, and udata fields of call, the maxlen (see netbuf in t_connect(3N) ) field of each must be set before issuing t_listen() to indicate the maximum size of the buffer for each.

By default, t_listen() executes in synchronous mode and waits for a connect indication to arrive before returning to the user. However, if O_NDELAY or O_NONBLOCK is set (using t_open() or fcntl()), t_listen() executes asynchronously, reducing to a poll for existing connect indications. If none are available, it returns -1 and sets t_errno to TNODATA.

Return Values

t_listen() returns 0 on success. On failure t_listen() returns -1, t_errno is set to indicate the error, and possibly errno is set.

Errors

On failure, t_errno will 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 an incoming argument is not sufficient to store the value of that argument. The provider’s state, as seen by the user, changes to T_INCON , and the connect indication information to be returned in call is discarded.
TLOOK
An asynchronous event has occurred on this transport endpoint and requires immediate attention.
TNODATA
O_NDELAY or O_NONBLOCK was set, but no connect indications had been queued.
TNOTSUPPORT
This function is not supported by the underlying transport provider.
TSYSERR
A system error has occurred during execution of this function, errno will be set to the specific error.

See Also

t_accept(3N) , t_bind(3N) , t_connect(3N) , t_open(3N) , t_rcvconnect(3N)

Warnings

If a user issues t_listen() in synchronous mode on a transport endpoint that was not bound for listening (that is, qlen was zero on t_bind()), the call will wait forever because no connect indications will arrive on that endpoint.

Notes

This interface is safe in multithreaded applications.


Table of Contents