t_listen(3N) manual page
Table of Contents
t_listen - listen for a connect request
cc [ flag ... ] file
... -lnsl [ library ... ]
#include <tiuser.h>
int t_listen(int fildes, struct t_call
*call);
MT-Safe
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 netbuf | addr; |
struct netbuf | opt; |
struct
netbuf | udata; |
int | sequence; |
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.
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.
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.
t_accept(3N)
, t_bind(3N)
, t_connect(3N)
, t_open(3N)
,
t_rcvconnect(3N)
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.
This interface is safe in multithreaded
applications.
Table of Contents