|
ace_dev_poll_reactor无法同时派发handle_input和handle_output, 我看了ace的源码, dev_poll_reactor.cpp里面的dispatch_io_event函数部分代码:
ACE_Reactor_Mask disp_mask = 0;
ACE_Event_Handler *eh = info->event_handler;
int (ACE_Event_Handler::*callback)(ACE_HANDLE) = 0;
if (ACE_BIT_ENABLED (revents, out_event))
{
disp_mask = ACE_Event_Handler::WRITE_MASK;
callback = &ACE_Event_Handler::handle_output;
ACE_CLR_BITS (revents, out_event);
}
else if (ACE_BIT_ENABLED (revents, exc_event))
{
disp_mask = ACE_Event_Handler::EXCEPT_MASK;
callback = &ACE_Event_Handler::handle_exception;
ACE_CLR_BITS (revents, exc_event);
}
else if (ACE_BIT_ENABLED (revents, in_event))
{
disp_mask = ACE_Event_Handler::READ_MASK;
callback = &ACE_Event_Handler::handle_input;
ACE_CLR_BITS (revents, in_event);
}
else if (ACE_BIT_ENABLED (revents, err_event))
{
this->remove_handler_i (handle,
ACE_Event_Handler::ALL_EVENTS_MASK,
info->event_handler);
这里面用的是if else 结构, 不可能同时派发到handle_input和handle_output啊, 这个怎么办呢, 我的代码需要处理handle_output啊, 希望知道的朋友告诉我下, 谢谢了 |
|