编程接口指南

状态转换

以下各节中的表介绍与 XTI/TLI 关联的所有状态转换。

XTI/TLI 状态

下表定义 XTI/TLI 状态转换中使用的状态以及服务类型。

表 8–1 XTI/TLI 状态转换和服务类型

状态 

说明 

服务类型 

T_UNINIT

未初始化-接口的初始状态和最终状态 

T_COTST_COTS_ORDT_CLTS

T_UNBND

已初始化但未绑定 

T_COTST_COTS_ORDT_CLTS

T_IDLE

未建立连接 

T_COTST_COTS_ORDT_CLTS

T_OUTCON

针对客户机暂挂的传出连接 

T_COTST_COTS_ORD

T_INCON

针对服务器暂挂的传入连接 

T_COTST_COTS_ORD

T_DATAXFER

数据传送 

T_COTST_COTS_ORD

T_OUTREL

传出顺序释放(等待顺序释放请求) 

T_COTS_ORD

T_INREL

传入顺序释放(等待发送顺序释放请求) 

T_COTS_ORD

传出事件

下表中介绍的传出事件与指定传输例程(发送请求或响应传输提供器的例程)返回的状态相对应。在该表中,某些事件(例如 "accept")根据发生它们的上下文来区分。上下文基于以下变量的值:

表 8–2 传出事件

事件 

说明 

服务类型 

opened

成功返回 t_open(3NSL)

T_COTST_COTS_ORDT_CLTS

bind

成功返回 t_bind(3NSL)

T_COTST_COTS_ORDT_CLTS

optmgmt

成功返回 t_optmgmt(3NSL)

T_COTST_COTS_ORDT_CLTS

unbind

成功返回 t_unbind(3NSL)

T_COTST_COTS_ORDT_CLTS

closed

成功返回 t_close(3NSL)

T_COTST_COTS_ORDT_CLT

connect1

在同步模式下成功返回 t_connect(3NSL)

T_COTST_COTS_ORD

connect2

异步模式下 t_connect(3NSL) 上的 TNODATA 错误,或者由于传输端点上到达断开请求而产生的 TLOOK 错误

T_COTST_COTS_ORD

accept1

t_accept(3NSL) 成功返回,且 ocnt == 1fd == resfd

T_COTST_COTS_ORD

accept2

t_accept(3NSL) 成功返回,且 ocnt== 1fd!= resfd

T_COTST_COTS_ORD

accept3

t_accept(3NSL) 成功返回,且 ocnt > 1

T_COTST_COTS_ORD

snd

成功返回 t_snd(3NSL)

T_COTST_COTS_ORD

snddis1

t_snddis(3NSL) 成功返回,且 ocnt <= 1

T_COTST_COTS_ORD

snddis2

t_snddis(3NSL) 成功返回,且 ocnt > 1

T_COTST_COTS_ORD

sndrel

成功返回 t_sndrel(3NSL)

T_COTS_ORD

sndudata

成功返回 t_sndudata(3NSL)

T_CLTS

传入事件

传入事件与指定例程的成功返回相对应。这些例程返回来自传输提供器的数据或事件信息。不与例程的返回直接关联的唯一传入事件是 pass_conn,该传入事件在连接传送到其他端点时发生。虽然未在连接传送到的端点上调用 XTI/TLI 例程,但是会在该端点上发生事件。

在下表中,rcvdis 事件根据 ocnt 值(端点上未完成的连接请求计数)来区分。

表 8–3 传入事件

事件 

说明 

服务类型 

listen

成功返回 t_listen(3NSL)

T_COTST_COTS_ORD

rcvconnect

成功返回 t_rcvconnect(3NSL)

T_COTST_COTS_ORD

rcv

成功返回 t_rcv(3NSL)

T_COTST_COTS_ORD

rcvdis1

成功返回 t_rcvdis(3NSL) rcvdis1t_rcvdis()onct <= 0

T_COTST_COTS_ORD

rcvdis2

成功返回 t_rcvdis(3NSL)ocnt == 1

T_COTST_COTS_ORD

rcvdis3

t_rcvdis(3NSL) 成功返回,且 ocnt > 1

T_COTST_COTS_ORD

rcvrel

成功返回 t_rcvrel(3NSL)

T_COTS_ORD

rcvudata

成功返回 t_rcvudata(3NSL)

T_CLTS

rcvuderr

成功返回 t_rcvuderr(3NSL)

T_CLTS

pass_conn

接收传递的连接 

T_COTST_COTS_ORD

状态表

状态表描述 XTI/TLI 状态转换。每个框都包含下一个状态,假设已给定当前状态(列)和当前事件(行)。空框表示无效状态/事件组合。每个框还可具有一个操作列表。必须按照框中指定的顺序完成操作。

研究状态表时,应了解以下内容:

下面各表中列出的某些状态转换提供传输用户必须执行的操作。每项操作都由按以下方法得出的数字表示:

下表给出了端点建立状态。

表 8–4 连接建立状态

事件/状态 

T_UNINIT

T_UNBND

T_IDLE

opened

T_UNBND

 

 

bind

 

T_IDLE[1]

 

optmgmt(仅适用于 TLI)

 

 

T_IDLE

unbind

 

 

T_UNBND

closed

 

T_UNINIT

 

下表给出了连接模式下的数据传送。

表 8–5 连接模式状态-第 1 部分

事件/状态 

T_IDLE

T_OUTCON

T_INCON

T_DATAXFER

connect1

T_DATAXFER

 

 

 

connect2

T_OUTCON

 

 

 

rcvconnect

 

T_DATAXFER

 

 

listen

T_INCON [2]

 

T_INCON [2]

 

accept1

 

 

T_DATAXFER [3]

 

accept2

 

 

T_IDLE [3] [4]

 

accept3

 

 

T_INCON [3] [4]

 

snd

 

 

 

T_DATAXFER

rcv

 

 

 

T_DATAXFER

snddis1

 

T_IDLE

T_IDLE [3]

T_IDLE

snddis2

 

 

T_INCON [3]

 

rcvdis1

 

T_IDLE

 

T_IDLE

rcvdis2

 

 

T_IDLE [3]

 

rcvdis3

 

 

T_INCON [3]

 

sndrel

 

 

 

T_OUTREL

rcvrel

 

 

 

T_INREL

pass_conn

T_DATAXFER

 

 

 

optmgmt

T_IDLE

T_OUTCON

T_INCON

T_DATAXFER

closed

T_UNINIT

T_UNINIT

T_UNINIT

T_UNINIT

下表给出了连接模式下的连接建立/连接释放/数据传送。

表 8–6 连接模式状态-第 2 部分

事件/状态 

T_OUTREL

T_INREL

T_UNBND

connect1

 

 

 

connect2

 

 

 

rcvconnect

 

 

 

listen

 

 

 

accept1

 

 

 

accept2

 

 

 

accept3

 

 

 

snd

 

T_INREL

 

rcv

T_OUTREL

 

 

snddis1

T_IDLE

T_IDLE

 

snddis2

 

 

 

rcvdis1

T_IDLE

T_IDLE

 

rcvdis2

 

 

 

rcvdis3

 

 

 

sndrel

 

T_IDLE

 

rcvrel

T_IDLE

 

 

pass_conn

 

 

T_DATAXFER

optmgmt

T_OUTREL

T_INREL

T_UNBND

closed

T_UNINIT

T_UNINIT

 

下表给出了无连接模式状态。

表 8–7 无连接模式状态

事件/状态 

T_IDLE

snudata

T_IDLE

rcvdata

T_IDLE

rcvuderr

T_IDLE