mco_calc_cinfo_browse
浏览计算器类。
此函数会依次浏览计算器类,每次浏览一个类,并调用用户提供的处理函数来处理(打印或执行某些计算)类信息。
可以通过参数数据将其他特定于应用程序的数据传递给处理函数。
MCO_RET mco_calc_cinfo_browse(
/*IN*/ mco_calc_t * calc,
/*IN*/ mco_calc_cinfo_h handler,
/*IN*/ void * data
);
参数
calc
mco_calc_t *
初始化的数据库计算器对象的句柄。
handler
mco_calc_cinfo_h
用户提供的用于处理类信息的处理函数。
data
void *
指向用户提供的数据的指针。
返回
MCO_S_OK
类统计信息收集成功。
MCO_E_TRANSACT
在计算器处理期间,事务处于错误状态。
示例
以下代码片段展示了如何使用 mco_calc_cinfo_browse()
函数来浏览计算器的内容。
请注意,mco_calc_cinfo_browse()
会调用应用程序定义的函数 class_print()
来显示每个类的内容。
/* 应用程序代码片段 */
const char * dbname = "calc_db";
static void class_print(mco_calc_t *calc, mco_cc_t *cls,
mco_cc_info_t *info, void *unused)
{
printf(" -> %s%s:\n", (info->is_pers ? "[PERSISTENT] " : ""), cls->cc_name);
...
}
int main(int argc, char* argv[])
{
MCO_RET rc;
mco_calc_t calc;
mco_device_t dev;
mco_db_params_t db_params;
mco_cc_info_t info;
mco_runtime_start();
...
mco_calc_init(&calc, calc_db_get_dictionary());
...
rc = mco_db_open_dev( dbname, simple_get_dictionary(), &dev, 1, &db_params );
if ( MCO_S_OK != rc )
{
rc = mco_db_connect( dbname, &calc.db );
...
rc = mco_calc_reg_schema_classes(&calc, calc_db_get_calculator());
...
rc = mco_calc_fill_db(&calc);
...
rc = mco_calc_stat_collect(&calc);
...
printf("\nClass info:\n");
rc = mco_calc_cinfo_browse(&calc, class_print, (void*)0);
...
/* 在断开数据库连接之前,必须先关闭计算器。 */
mco_calc_deinit(&calc);
mco_db_disconnect(calc.db);
}
}
有关实现细节,请参阅SDK示例 samples/native/core/17-statistics/dbcalc。
文件
- 头文件:
mcodbcalc.h
- 源文件:
mcodbcalc.c
- 库:
libmcodbcalc.a