ACE笔记(5)-ACE_Reactor 机制下的其他事件触发器

检查控制台的输入动作

 控制台事件handle :ACE_STDIN
 当用户输入回车时会触发信号,执行 handle_signal 方法
 通过ACE_OS::read (ACE_STDIN, buffer, sizeof buffer)方法读取用户的输入
 
检查目录是否发生变化
 
 目录改变事件handle: 
  int change_notification_flags = FILE_NOTIFY_CHANGE_FILE_NAME;
   this->handle_ = ACE_TEXT_FindFirstChangeNotification (directory,  // pointer to name of directory to watch
                                                         FALSE, // flag for monitoring directory or directory tree
                                                         change_notification_flags // filter conditions to watch for
                                                         ); 
  事件触发后,如想继续保持触发,须调用::FindNextChangeNotification (this->handle_);方法
  如下关闭触发,应调用::FindCloseChangeNotification (this->handle_);方法
 
 目录内容发生改变时会触发信号,执行handle_singnal方法

检查注册表项是否发生了变化
 注册表项改变事件HANDLE:
 (::RegNotifyChangeKeyValue (this->context_.key (), // handle of key to watch
                                 FALSE, // flag for subkey notification
                                 REG_NOTIFY_CHANGE_NAME, // changes to be reported
                                 this->event_.handle (), // handle of signaled event
                                 TRUE // flag for asynchronous reporting
                                 )
 涉及了下面这个主要类:
 ACE_Registry::Naming_Context context_;
 其提供有
  bind_new_context (temp_context_name,temp_context);  新建一个注册表项                                
  unbind_context (temp_context_name);删除一个注册表项
  方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACE Reactor是一个用于事件驱动的框架,主要用于处理异步事件。它的接口声明放在Reactor.h中,接口的实现分别放在Reactor.cpp和Reactor.ini文件中,而Reactor.inl作为内联函数直接在Reactor.h文件中包含了。其内部实现主要封装在ACE_Reactor_Impl类中 。 在ACE_Select_Reactor_Notify类中,有一个指向ACE_Select_Reactor的指针select_reactor_。如果该指针为空,那么Reactor管理器将不支持Notify事件ACE_Reactor类中的run_reactor_event_loop方法用于处理事件的循环。它会调用handle_events方法,该方法是由ACE_Reactor_Impl对象指针中的成员函数实现的。handle_events的作用是在超时时间到或事件触发时才返回,并返回ACE_Event_Handlers派发的总数。与altertable_handle_events不同的是,在eventloop中,当系统将一个I/O完成例程或一个异步过程调用排队时才会返回。eventloop指的是run_reactor_event_loop方法中的while(1)的循环 。 综上所述,ACE Reactor是一个用于处理事件驱动的框架,它通过封装不同的实现来提供事件处理和调度的功能,并支持异步事件处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ACE_Reactor(一)整体理解ACE_Reactor](https://blog.csdn.net/chinaclock/article/details/49021839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值