LU 6.2 同步点会话可以使用称为隐式忘记的架构消息流的优化。 当协议指定需要 FORGET 演示文稿标头 (PS) 时,会话上的下一个数据流表示已收到 FORGET,即使它尚未收到。 在正常情况下,当在其某个同步点会话上接收或发送数据时,TP 会知道下一个数据流。
但是,流出的最后一条消息可能是由解除分配的聊天引起的。 在这种情况下,TP 不知道会话上的下一个数据流何时发生。 为了向 TP 提供此通知,修改 DEALLOCATE 和 MC_DEALLOCATE 谓词,以允许 TP 注册将调用的回调函数:
在第一个正常流传输 (请求或响应) 会话使用的会话。
如果会话在任何其他数据流之前未绑定。
如果会话由于数据链接控制 (DLC) 中断而异常终止。
回调过程可以采用任何名称,因为该过程的地址将传递到 APPC DLL 中。
请注意, DEALLOCATE 和 MC_DEALLOCATE 谓词可能在调用回调例程之前完成。 会话被视为处于 RESET 状态,并且无法使用会话标识符发出进一步的谓词。 如果应用程序在会话的下一个数据流之前发出 TP_ENDED 谓词,则不会调用回调例程。
DEALLOCATE 和 MC_DEALLOCATE 谓词修改如下,以支持隐式忘记:
添加了一个新成员 回调,以允许 TP 指定要在正在解除分配的会话使用的会话的下一个数据流上调用的函数的地址。 如果此成员为 NULL,则不会提供任何通知。 供应商通常会提供此回调函数。
DEALLOCATE 和 MC_DEALLOCATE 谓词还包含相关器成员,该成员在调用回调函数时作为参数之一返回。 应用程序可以以任何方式使用此参数, (例如,作为指向应用程序) 中的控制块的指针。
Host Integration Server 允许 TP 在发送数据后立即解除分配会话,方法是在SEND_DATA中指定类型成员,并将谓词MC_SEND_DATA为AP_SEND_DATA_DEALLOC_FLUSH、AP_SEND_DATA_DEALLOC_SYNC_LEVEL、AP_SEND_DATA_DEALLOC_ABEND和AP_SEND_DATA_DEALLOC_CONFIRM。 但是, SEND_DATA 和 MC_SEND_DATA 谓词不包含隐含的 forget 回调函数。 希望接收隐式忘记通知的 TP 必须显式发出 DEALLOCATE 或 MC_DEALLOCATE 谓词。