void EventLoop::RemoveTcpSock(TcpSockSmartPtr sp_tcp) { assert(IsInLoopThread()); if(m_event_waiter==NULL) return; m_event_waiter->RemoveTcpSock(sp_tcp); }
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); }
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(); }
void EventLoop::Quit() { m_bQuit = true; if (!IsInLoopThread()) { WakeUp(); } }
void EventLoop::AssertInLoopThread() { if (!IsInLoopThread()) { abortNotInLoopThread(); } }