void EventLoop::RemoveTcpSock(TcpSockSmartPtr sp_tcp)
{
    assert(IsInLoopThread());
    if(m_event_waiter==NULL)
        return;
    m_event_waiter->RemoveTcpSock(sp_tcp);
}
예제 #2
0
void EventLoop::RunInLoop(const Functor& rCallBack) {
	if (IsInLoopThread()) {
		rCallBack();
	} else {
		QueueInLoop(rCallBack);
	}
}
bool EventLoop::UpdateTcpSock(TcpSockSmartPtr sp_tcp)
{
    assert(IsInLoopThread());
    if(m_event_waiter==NULL)
        return false;
    return m_event_waiter->UpdateTcpSock(sp_tcp);
}
예제 #4
0
void EventLoop::QueueInLoop(const Functor& rCallBack) {
	{
		MutexLockGuard lock(m_Mutex);
		m_vPendingFunctors.push_back(rCallBack);
	}

	if (!IsInLoopThread() || m_bCallingFunctors) {
		WakeUp();
	}
}
void EventLoop::AddTcpSockToLoopInLoopThread(TcpSockSmartPtr sp_tcp)
{
    assert(IsInLoopThread());
    m_event_waiter->AddTcpSock(sp_tcp);
}
// 主动关闭时只关闭写端,等待对方close的FIN包返回后本端再close
void EventLoop::CloseAllClient()
{
    assert(IsInLoopThread());
    if(m_event_waiter)
        m_event_waiter->DisAllowAllTcpSend();
}
예제 #7
0
void EventLoop::Quit() {
	m_bQuit = true;
	if (!IsInLoopThread()) {
		WakeUp();
	}
}
예제 #8
0
void EventLoop::AssertInLoopThread() {
	if (!IsInLoopThread()) {
		abortNotInLoopThread();
	}
}