MCPcopy Create free account
hub / github.com/cppla/ServerStatus / Update

Method Update

server/src/netban.cpp:155–200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

153
154template<class T, int HashCount>
155void CNetBan::CBanPool<T, HashCount>::Update(CBan<CDataType> *pBan, const CBanInfo *pInfo)
156{
157 pBan->m_Info = *pInfo;
158
159 // remove from used list
160 if(pBan->m_pNext)
161 pBan->m_pNext->m_pPrev = pBan->m_pPrev;
162 if(pBan->m_pPrev)
163 pBan->m_pPrev->m_pNext = pBan->m_pNext;
164 else
165 m_pFirstUsed = pBan->m_pNext;
166
167 // insert it into the used list
168 if(m_pFirstUsed)
169 {
170 for(CBan<T> *p = m_pFirstUsed; ; p = p->m_pNext)
171 {
172 if(p->m_Info.m_Expires == CBanInfo::EXPIRES_NEVER || (pInfo->m_Expires != CBanInfo::EXPIRES_NEVER && pInfo->m_Expires <= p->m_Info.m_Expires))
173 {
174 // insert before
175 pBan->m_pNext = p;
176 pBan->m_pPrev = p->m_pPrev;
177 if(p->m_pPrev)
178 p->m_pPrev->m_pNext = pBan;
179 else
180 m_pFirstUsed = pBan;
181 p->m_pPrev = pBan;
182 break;
183 }
184
185 if(!p->m_pNext)
186 {
187 // last entry
188 p->m_pNext = pBan;
189 pBan->m_pPrev = p;
190 pBan->m_pNext = 0;
191 break;
192 }
193 }
194 }
195 else
196 {
197 m_pFirstUsed = pBan;
198 pBan->m_pNext = pBan->m_pPrev = 0;
199 }
200}
201
202template<class T, int HashCount>
203void CNetBan::CBanPool<T, HashCount>::Reset()

Callers 2

BanMethod · 0.45
RunMethod · 0.45

Calls 5

time_timestampFunction · 0.85
str_formatFunction · 0.85
dbg_msgFunction · 0.85
FirstMethod · 0.80
RemoveMethod · 0.80

Tested by

no test coverage detected