状态转换
以下各节中的表介绍与 XTI/TLI 关联的所有状态转换。
XTI/TLI 状态
下表定义 XTI/TLI 状态转换中使用的状态以及服务类型。
表 9-1 XTI/TLI 状态转换和服务类型
|
|
|
T_UNINIT |
未初始化-接口的初始状态和最终状态 |
T_COTS、T_COTS_ORD、T_CLTS |
T_UNBND |
已初始化但未绑定 |
T_COTS、T_COTS_ORD、T_CLTS |
T_IDLE |
未建立连接 |
T_COTS、T_COTS_ORD、T_CLTS |
T_OUTCON |
针对客户机暂挂的传出连接 |
T_COTS、T_COTS_ORD |
T_INCON |
针对服务器暂挂的传入连接 |
T_COTS、T_COTS_ORD |
T_DATAXFER |
数据传输 |
T_COTS、T_COTS_ORD |
T_OUTREL |
传出顺序释放(等待顺序释放请求) |
T_COTS_ORD |
T_INREL |
传入顺序释放(等待发送顺序释放请求) |
T_COTS_ORD |
|
传出事件
下表中介绍的传出事件与指定传输例程(发送请求或响应传输提供器的例程)返回的状态相对应。在该表中,某些事件(例如 "accept")根据发生事件的上下文来区分。上下文基于以下变量的值:
-
ocnt-未完成连接请求的计数
-
fd-当前传输端点的文件描述符
-
resfd-接受连接的传输端点的文件描述符
表 9-2 传出事件
|
|
|
opened |
|
T_COTS、T_COTS_ORD、T_CLTS |
bind |
|
T_COTS、T_COTS_ORD、T_CLTS |
|
|
T_COTS、T_COTS_ORD、T_CLTS |
unbind |
|
T_COTS、T_COTS_ORD、T_CLTS |
closed |
|
T_COTS、T_COTS_ORD、T_CLT |
connect1 |
|
T_COTS、T_COTS_ORD |
connect2 |
|
T_COTS、T_COTS_ORD |
accept1 |
|
T_COTS、T_COTS_ORD |
accept2 |
|
T_COTS、T_COTS_ORD |
accept3 |
|
T_COTS、T_COTS_ORD |
snd |
|
T_COTS、T_COTS_ORD |
snddis1 |
|
T_COTS、T_COTS_ORD |
snddis2 |
|
T_COTS、T_COTS_ORD |
sndrel |
|
T_COTS_ORD |
sndudata |
|
T_CLTS |
|
传入事件
传入事件与指定例程的成功返回相对应。这些例程返回来自传输提供器的数据或事件信息。不与例程的返回直接关联的唯一传入事件是 pass_conn,该传入事件在连接传送到其他端点时发生。虽然未在连接传递到的端点上调用 XTI/TLI 例程,但是会在该端点上发生事件。
在下表中,根据 ocnt 值(端点上未完成的连接请求计数)来区分 rcvdis 事件。
表 9-3 传入事件
|
|
|
listen |
|
T_COTS、T_COTS_ORD |
rcvconnect |
|
T_COTS、T_COTS_ORD |
rcv |
|
T_COTS、T_COTS_ORD |
rcvdis1 |
|
T_COTS、T_COTS_ORD |
rcvdis2 |
|
T_COTS、T_COTS_ORD |
rcvdis3 |
|
T_COTS、T_COTS_ORD |
rcvrel |
|
T_COTS_ORD |
rcvudata |
|
T_CLTS |
rcvuderr |
|
T_CLTS |
pass_conn |
接收传递的连接 |
T_COTS、T_COTS_ORD |
|
状态表
状态表描述 XTI/TLI 状态转换。每个框都包含下一个状态,假设已给定当前状态(列)和当前事件(行)。空框表示无效状态/事件组合。每个框还可具有一个操作列表。必须按照框中指定的顺序完成操作。
研究状态表时,应了解以下内容:
下面各表中列出的某些状态转换提供传输用户必须执行的操作。每项操作都由通过下面列出的方法得出的数字表示:
下表显示了端点建立状态。
表 9-4 连接建立状态
|
|
|
|
opened |
T_UNBND |
|
|
bind |
|
T_IDLE[1] |
|
|
|
|
T_IDLE |
unbind |
|
|
T_UNBND |
closed |
|
T_UNINIT |
|
|
下表显示了连接模式下的数据传输。
表 9-5 连接模式状态:第 1 部分
|
|
|
|
|
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 |
|
|
|
|
T_IDLE |
T_OUTCON |
T_INCON |
T_DATAXFER |
closed |
T_UNINIT |
T_UNINIT |
T_UNINIT |
T_UNINIT |
|
下表显示了连接模式下的连接建立/连接释放/数据传输。
表 9-6 连接模式状态:第 2 部分
|
|
|
|
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 |
|
|
|
optmgmt |
T_OUTREL |
T_INREL |
T_UNBND |
closed |
T_UNINIT |
T_UNINIT |
|
|
下表显示了无连接模式状态。
表 9-7 无连接模式状态
|
|
snudata |
T_IDLE |
rcvdata |
T_IDLE |
rcvuderr |
T_IDLE |
|