void CTcpServer::AddFreeSocketObj(TSocketObj* pSocketObj, EnSocketCloseFlag enFlag, EnSocketOperation enOperation, int iErrorCode) { if(!InvalidSocketObj(pSocketObj)) return; CloseClientSocketObj(pSocketObj, enFlag, enOperation, iErrorCode); m_bfActiveSockets.Remove(pSocketObj->connID); TSocketObj::Release(pSocketObj); ReleaseGCSocketObj(); if(!m_lsFreeSocket.TryPut(pSocketObj)) m_lsGCSocket.PushBack(pSocketObj); }
void CTcpServer::AddFreeSocketObj(TSocketObj* pSocketObj, EnSocketCloseFlag enFlag, EnSocketOperation enOperation, int iErrorCode) { if(!InvalidSocketObj(pSocketObj)) return; CloseClientSocketObj(pSocketObj, enFlag, enOperation, iErrorCode); TSocketObj::Release(pSocketObj); { CReentrantWriteLock locallock(m_csClientSocket); m_mpClientSocket.erase(pSocketObj->connID); } if(!m_lsFreeSocket.TryPut(pSocketObj)) { m_lsGCSocket.PushBack(pSocketObj); if(m_lsGCSocket.Size() > m_dwFreeSocketObjPool) ReleaseGCSocketObj(); } }
void CTcpServer::AddFreeSocketObj(TSocketObj* pSocketObj, EnSocketCloseFlag enFlag, EnSocketOperation enOperation, int iErrorCode) { if(InvalidSocketObj(pSocketObj)) { CloseClientSocketObj(pSocketObj, enFlag, enOperation, iErrorCode); TSocketObj::Release(pSocketObj); { CReentrantWriteLock locallock(m_csClientSocket); m_mpClientSocket.erase(pSocketObj->connID); } { CCriSecLock locallock(m_csFreeSocket); m_lsFreeSocket.push_back(pSocketObj); } if(m_lsFreeSocket.size() > m_dwFreeSocketObjHold) CompressFreeSocket(m_dwFreeSocketObjPool); } }