配置此事件处理由监听器上载的传送确认信息。如果状态参数返回 0,则由 request_id 标识的推式请求被由 remote_device 参数标识的监听器成功接收。
可以使用 request_option 参数启动操作以响应传送确认。如果 request_option 为 0,则 confirmation_handler 事件启动缺省操作,执行 request_delete 事件删除原始推式请求。如果发送传送确认的设备与 request_id 标识的设备不匹配,则缺省操作是通过辅助网关发送原始推式请求。
使用 dblsn -x 选项允许监听器上载传送确认信息。如果需要传送确认但不需要 IP 跟踪,可使用 dblsn -ni 选项。请参见用于 Windows 的监听器选项。
此事件要求使用系统过程。不能使用 Sybase Central 方法直接配置此事件。请参见用于服务器启动的同步的 MobiLink 服务器设置。
可以使用 confirmation_handler 事件捕获以下参数:
脚本参数 | 类型 | 说明 |
---|---|---|
request_option (out) | Integer |
控制处理程序返回后通告程序对请求执行的操作。可以返回以下值:
|
status (in) | Integer |
情况概览。可在开发过程中使用状态来确定问题,例如不正确的过滤器和处理程序属性。可以返回以下值:
|
request_id (in) | Integer | 请求 ID。request_cursor 事件必须包含请求 ID 列才能使用 confirmation_handler 事件。 |
remote_code (in) | Integer |
远程监听器报告的汇总。可以返回以下值:
|
remote_device (in) | Varchar | 响应监听器的设备名。 |
remote_mluser (in) | Varchar | 响应监听器的 MobiLink 用户名。 |
remote_action_return (in) | Varchar | 远程操作的返回代码。 |
remote_action (in) | Varchar | 为操作命令保留。 |
gateway (in) | Varchar | 与请求关联的网关。 |
address (in) | Varchar | 与请求关联的地址。 |
subject (in) | Varchar | 与请求关联的主题。 |
content (in) | Varchar | 与请求关联的内容。 |
在以下示例中,您将创建一个名为 CustomConfirmation 的表,然后使用名为 CustomConfirmationHandler 的存储过程在其中记录确认。输出参数 request_option 始终设置为 0,表示使用缺省通告程序处理。
CREATE TABLE CustomConfirmation( error_code integer, request_id integer, remote_code integer, remote_device varchar(128), remote_mluser varchar(128), remote_action_return varchar(128), remote_action varchar(128), gateway varchar(255), address varchar(255), subject varchar(255), content varchar(255), occurAt timestamp not null default timestamp ) CREATE PROCEDURE CustomConfirmationHandler( out @request_option integer, in @error_code integer, in @request_id integer, in @remote_code integer, in @remote_device varchar(128), in @remote_mluser varchar(128), in @remote_action_return varchar(128), in @remote_action varchar(128), in @gateway varchar(255), in @address varchar(255), in @subject varchar(255), in @content varchar(255) ) BEGIN INSERT INTO CustomConfirmation( error_code, request_id, remote_code, remote_device, remote_mluser, remote_action_return, remote_action, gateway, address, subject, content) VALUES ( @error_code, @request_id, @remote_code, @remote_device, @remote_mluser, @remote_action_return, @remote_action, @gateway, @address, @subject, @content ); SET @request_option = 0; END |
要将 ml_add_property 系统过程与 SQL Anywhere 统一数据库一起使用,请运行以下命令:
call ml_add_property( 'SIS', 'Notifier(myNotifier)', 'confirmation_handler', 'call CustomConfirmation(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); |
还可以通过将以下行添加到通告程序配置文件调用此事件:
Notifier(myNotifier).confirmation_handler = call CustomConfirmation(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) |
使用 mlsrv11 -notifier 选项运行文件。有关如何配置通告程序配置文件的详细信息,请参见使用通告程序配置文件配置服务器端设置。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |