当前位置: 首页>>代码示例>>C++>>正文


C++ Channel::OnChildClose方法代码示例

本文整理汇总了C++中Channel::OnChildClose方法的典型用法代码示例。如果您正苦于以下问题:C++ Channel::OnChildClose方法的具体用法?C++ Channel::OnChildClose怎么用?C++ Channel::OnChildClose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Channel的用法示例。


在下文中一共展示了Channel::OnChildClose方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: DoClose

bool Channel::DoClose(bool inDestructor)
{
    bool hasfd = false;
    //DEBUG_LOG("Before close channel, read fd:%d, write fd:%d for channel[%u]", GetReadFD(),  GetWriteFD(), GetID());
    int read_fd = GetReadFD();
    int write_fd = GetWriteFD();
    //int mask = AE_READABLE | AE_WRITABLE;
    if (read_fd > 0)
    {
        aeDeleteFileEvent(GetService().GetRawEventLoop(), read_fd,
        AE_READABLE | AE_WRITABLE);
        hasfd = true;
    }
    if (read_fd != write_fd && write_fd > 0)
    {
        aeDeleteFileEvent(GetService().GetRawEventLoop(), write_fd,
        AE_WRITABLE);
        hasfd = true;
    }
    CancelFlushTimerTask();

    if (NULL != m_file_sending)
    {
        close(m_file_sending->fd);
        m_file_sending->fd = -1;
        if (NULL != m_file_sending->on_failure)
        {
            m_file_sending->on_failure(m_file_sending->data);
        }
    }

    bool ret = false;
    if (hasfd && DoClose() && !inDestructor)
    {
        ret = fire_channel_closed(this);
        if (0 != m_parent_id)
        {
            Channel* parent = GetService().GetChannel(m_parent_id);
            if (NULL != parent)
            {
                parent->OnChildClose(this);
            }
        }
    }

    DELETE(m_file_sending);
    if (!m_has_removed && !inDestructor)
    {
        m_has_removed = true;
        GetService().RemoveChannel(this);
    }
    return ret;
}
开发者ID:masterve,项目名称:test,代码行数:53,代码来源:channel.cpp


注:本文中的Channel::OnChildClose方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。