mco_db_sniffer
接口适用于实时数据库 RT 。
检查与现有数据库的所有连接的状态。
MCO_RET mco_db_sniffer(
/*IN*/ mco_db_h db,
/*IN*/ mco_sniffer_callback_t callback,
/*IN*/ mco_sniffer_policy policy
);
此函数使用提供的用户的回调函数检查数据库的所有连接的状态。如果检测到死连接,它将执行数据库恢复。回调用户定义函数必须实现逻辑(使用 OS、timeout、watchdogs,...)来检测死数据库连接。如果此回调返回 MCO_S_DEAD_CONNECTION
则将根据指定的嗅探器策略执行数据库恢复。
以下枚举定义嗅探器策略(即嗅探器何时应调用用户定义的回调以检查连接的状态):
typedef enum mco_sniffer_policy {
MCO_SNIFFER_INSPECT_ACTIVE_CONNECTIONS,
MCO_SNIFFER_INSPECT_ACTIVE_TRANSACTIONS,
MCO_SNIFFER_INSPECT_HUNG_TRANSACTIONS
} mco_sniffer_policy;
不应执行任何影响输入参数的操作,如果连接已断开,函数应返回 MCO_S_DEAD_CONNECTION
以强制进行数据库恢复;如果连接正常,则应返回 MCO_S_OK
;任何其他返回代码都将导致 mco_db_sniffer()
中断并返回此错误代码。
参数
db
mco_db_h
现有数据库句柄。
callback
mco_sniffer_callback_t
嗅探器回调函数。
policy
mco_sniffer_policy
嗅探器策略的枚举值。
返回
MCO_S_OK
嗅探器进程已成功完成。
MCO_E_ILLEGAL_PARAM
指定的策略值无效。
用户指定的返回代码
从用户定义的回调函数传递用户指定的返回代码以中止嗅探器。
示例
请参阅SDK示例 samples/native/core/19-recovery/sniffer。
文件
- 头文件:
mco.h
- 源文件:
mcodb.c
- 库:
libmcolib.a