有关映射对话的背景信息,请参阅 基本对话和映射对话比较。
下面的映射对话示例显示了用于启动会话、交换数据和结束会话的 APPC 谓词。 APPC 谓词参数位于括号中。
由调用 TP 颁发 | 由可调用的 TP 颁发 |
---|---|
TP_STARTED | |
MC_ALLOCATE | |
MC_SEND_DATA | |
MC_DEALLOCATE | |
TP_ENDED | RECEIVE_ALLOCATE |
MC_RECEIVE_AND_WAIT | |
(primary_rc=AP_OK) | |
(rtn_status=AP_NO) | |
(what_rcvd=AP_DATA_COMPLETE) | |
MC_RECEIVE_AND_WAIT | |
(primary_rc=AP_DEALLOC_NORM) | |
TP_ENDED |
以下段落描述了映射对话中使用的谓词。
用于启动映射对话的动词
若要启动映射对话,调用 TP 会发出以下谓词:
TP_STARTED,通知 APPC 本地 TP 正在开始对话。
MC_ALLOCATE,它请求 APPC 在本地 TP 和合作伙伴 TP 之间建立会话。
可调用 TP 问题 RECEIVE_ALLOCATE,通知 APPC 它已准备好开始与调用 TP 的对话。
用于在映射对话中发送数据的谓词
MC_SEND_DATA 将一条数据记录 (包含要在本地 LU 的发送缓冲区) 传输的应用程序数据的记录。 在发生以下事件之一之前,不会向合作伙伴 TP 传输数据:
发送缓冲区将填满。
发送 TP 发出一个谓词,强制 APPC 刷新缓冲区并将数据发送到伙伴 TP。
在前面的示例中,发送缓冲区包含数据记录和 MC_ALLOCATE 请求 (位于数据记录) 之前。 因此,在示例中, MC_DEALLOCATE 刷新缓冲区,并将 MC_ALLOCATE 请求和数据记录发送到合作伙伴 TP。 刷新缓冲区的其他谓词 MC_CONFIRM 和 MC_FLUSH。
用于在映射对话中接收数据的谓词
MC_RECEIVE_AND_WAIT谓词允许 TP 接收数据记录或状态信息。 如果当前没有可用的数据,TP 将等待数据到达。 对于 Windows 系统,与 WinAsyncAPPC(而不是此调用的阻止版本)一起发出MC_RECEIVE_AND_WAIT。
在此示例中,接收 TP 问题 MC_RECEIVE_AND_WAIT 两次。 第一次,它发出谓词来接收数据。 (what_rcvd AP_DATA_COMPLETE) 完成接收完整数据记录后,它会再次发出MC_RECEIVE_AND_WAIT以接收返回代码。 返回代码AP_DEALLOC_NORMAL指示会话已解除分配。
注意
MC_RECEIVE_IMMEDIATE 执行 与 MC_RECEIVE_AND_WAIT 相同的功能,不同之处在于,如果合作伙伴 TP 当前没有数据可用,则它不会等待。 相反,它会向调用的 TP 返回无数据可用响应。
结束映射对话的谓词
若要结束映射的会话,其中一个 TP 问题MC_DEALLOCATE,这会导致 APPC 解除分配两个 TP 之间的会话。
解除分配会话后,两个 TP 问题 TP_ENDED。
注意
TP 可以同时参与多个对话。 在这种情况下,TP 问题在解除分配所有对话后 TP_ENDED 。