システムインタフェース

接続の非同期使用

接続を非同期に待つには、プロセスはまずサービスアドレスに結合した非ブロッキングエンドポイントを確立します。poll(2) の結果または非同期通知によって接続要求が到着したことがわかったら、プロセスは t_listen(3N) 関数を使用して接続要求を取得できます。接続を受け入れるには、プロセスは t_accept(3N) 関数を使用します。応答するエンドポイントは、非同期データ転送用に別個に設定しなければなりません。

次の例は、接続を非同期に要求する方法を示しています。

#include <tiuser.h>
int 				fd;
struct t_call 	*call;

	fd = .../* 非ブロッキングエンドポイントを確立する */

	call = (struct t_call *) t_alloc(fd, T_CALL, T_ADDR);
	.../* call 構造体を初期化する */
	t_connect(fd, call, call);

	/* 接続要求は現在非同期に進行している */

	.../* 接続が受け付けられたという通知を受け取る */
	t_rcvconnect(fd, &call);

次の例は、接続を非同期に監視する方法を示しています。

#include <tiuser.h>
int 				fd, res_fd;
struct t_call 	call;

	fd = ... /* 非ブロッキングエンドポイントを確立する */

	.../* 接続要求が到着したという通知を受け取る */
	call = (struct t_call *) t_alloc(fd, T_CALL, T_ALL);
	t_listen(fd, &call);

	.../* 接続を受け入れるかどうかを決定する */
	res_fd = ... /* 応答用に非ブロッキングエンドポイントを確立する */
	t_accept(fd, res_fd, call);