Ejemplo n.º 1
0
//注册一个ZCE_Event_Handler到反应器
int ZCE_Reactor::register_handler(ZCE_Event_Handler *event_handler,
                                  int event_mask )
{

    int ret = 0;

    //如果已经大于最大数量,返回错误
    if (handler_map_.size() >= max_event_number_)
    {
        return -1;
    }

    ZCE_HANDLE socket_hd = event_handler->get_handle();
    ZCE_Event_Handler *tmp_handler = NULL;

    //如果已经存在,不能继续注册
    ret = find_event_handler(socket_hd, tmp_handler);
    if (ret == 0)
    {
        ZCE_LOG(RS_ERROR, "[zcelib] [%s] find_event_handler eaqul handle [%lu]. please check you code .",
                __ZCE_FUNC__,
                tmp_handler);
        return -1;
    }

    //不检测了,失败了就是命不好
    handler_map_.insert(std::make_pair(socket_hd, event_handler));

    if (event_mask != 0)
    {
        schedule_wakeup(event_handler, event_mask);
    }

    return 0;
}
Ejemplo n.º 2
0
//注册一个ZCE_Event_Handler到反应器
int ZCE_Reactor::register_handler(ZCE_Event_Handler *event_handler,
                                  int event_mask )
{

    int ret = 0;

    //如果已经大于最大数量,返回错误
    if (handler_map_.size() >= max_event_number_)
    {
        return -1;
    }

    ZCE_SOCKET socket_hd = event_handler->get_handle();
    ZCE_Event_Handler *tmp_handler = NULL;

    //如果已经存在,不能继续注册
    ret = find_event_handler(socket_hd, tmp_handler);

    if (ret == 0)
    {
        return -1;
    }

    //不检测了,失败了就是命不好
    handler_map_.insert(std::make_pair(socket_hd, event_handler));

    if (event_mask != 0)
    {
        schedule_wakeup(event_handler, event_mask);
    }

    return 0;
}