#include "stdafx.h" #include "ClientDispatchTable.h" #include "RYL_AdminMgrDispatch.h" #include <./Network/Session/Session.h> #include void CClientDispatchTable::insert(CRylAdminMgrDispatch * lpDispatch) { DispatchLock::Syncronize Lock(m_DispatchLock); m_lstDispatch.push_back(lpDispatch); } void CClientDispatchTable::erase(CRylAdminMgrDispatch * lpDispatch) { DispatchLock::Syncronize Lock(m_DispatchLock); lstDispatch::iterator Itr_ = std::find(m_lstDispatch.begin(), m_lstDispatch.end(), lpDispatch); if(m_lstDispatch.end() != Itr_) { m_lstDispatch.erase(Itr_); } } bool CClientDispatchTable::SendAll(CBuffer * lpBuffer) { bool bResult = true; DispatchLock::Syncronize Lock(m_DispatchLock); lstDispatch::iterator Itr_ = m_lstDispatch.begin(); lstDispatch::iterator end_ = m_lstDispatch.end(); for(;Itr_ != end_;) { CRylAdminMgrDispatch * lpDispatch = (*Itr_); CSession & Session = lpDispatch->GetSession(); if(!Session.SendPending(lpBuffer)) { bResult = false; } ++ Itr_; } return bResult; }