| 发表于:2007-04-18 16:22:52 楼主 |
请问checkpoint的opsecsdk中的 opsec_mainloop 这个函数该如何让他退出? 我使用lea_online参数创建的lea_new_session,在opsec_mainloop方法调用之后程序收集完所有的日志之后依然处于连接状态(opsec_mainloop方法不返回),此时我希望在另外线程中可以终止这个过程,我使用的方法是opsec_end_session(m_popsecsession);但是发现opsec_mainloop依然不能被终止,经查sdk文档,说使用opsec_del_event_handler和opsec_unraise_event之后可以让opsec_mainloop终止,但是这两个方法都需要一个eventid参数,请问eventid参数从何处得来?(文档中说用opsec_new_id,但是何时调用?) 附代码片断: 调用opseclea的线程 m_popsecclient = opsec_init_entity(m_popsecenv, lea_client, opsec_session_start_handler, cfw::leastarthandler, lea_record_handler, cfw::learecordhandler, lea_eof_handler, cfw::leaeofhandler, opsec_session_end_handler, cfw::leaendhandler, opsec_eol); ... if(!(m_popsecsession = lea_new_session(m_popsecclient, m_popsecserver, lea_online, lea_filename, lea_normal, lea_at_pos, m_nlastpos))) { return s_false; } commfunc::debugview( "opsec lea session建立完毕. "); int nret = opsec_mainloop(m_popsecenv); commfunc::debugview( "lea session结束. "); // 此句从未执行 用于终止的线程: opsec_end_session(m_popsecsession); ace_time_value timeout(5); m_plog_thread-> wait(&timeout); // 这里一定超时 delete m_plog_thread; m_plog_thread = null; |
|
|
|
|