register handler
此函数为添加、删除或检查点事件注册一个同步事件处理程序。
MCO_RET mco_register_eventname_handler(
/*IN*/ mco_trans_h trans,
/*IN*/ mco_eventname_handler handler,
/*IN*/ void *param
);参数
trans
mco_trans_h
由 mco_trans_start() 函数返回的事务句柄。
handler
mco_eventname_handler
指向处理函数的指针。
param
void
指向用户定义存储的指针。
返回
MCO_S_OK
处理程序已成功注册。
MCO_E_ACCESS
事务不是 MCO_READ_WRITE 类型。
示例
/* 模式定义代码片段 */
declare database evdb;
class MyClass
{
uint4 u4;
event <new> newEvent;
list;
};
evdb.h snippet:
/* class MyClass mehtods */
MCO_RET MyClass_new ( mco_trans_h t, /*OUT*/ MyClass *handle );
...
typedef MCO_RET (*mco_newEvent_handler)( mco_trans_h t, MyClass * obj, MCO_EVENT_TYPE et, /*INOUT*/ void *param);
MCO_RET mco_register_newEvent_handler ( mco_trans_h t, mco_newEvent_handler handler, void * param );
MCO_RET mco_unregister_newEvent_handler ( mco_trans_h t, mco_newEvent_handler handler);
/* 应用程序代码片段 */
MCO_RET new_handler(mco_trans_h t, MyClass* obj, MCO_EVENT_TYPE et, /*INOUT */void* param)
{
autoid_t id;
MyClass_autoid_get(obj, &id);
printf("\tEvent \"Object New\" : object (%d) created\n", autoid2int(id));
return MCO_S_OK;
}
int register_events(mco_db_h db)
{
MCO_RET rc;
mco_trans_h t;
mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t);
rc = mco_register_newEvent_handler( t, &new_handler, (void*)0 );
...
}