MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / clearIdle

Method clearIdle

src/jrd/extds/ExtDS.cpp:1169–1221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1167}
1168
1169void ConnectionsPool::clearIdle(thread_db* tdbb, bool all)
1170{
1171 Data* free = NULL;
1172 {
1173 MutexLockGuard guard(m_mutex, FB_FUNCTION);
1174
1175 if (all)
1176 {
1177 while (!m_idleArray.isEmpty())
1178 {
1179 FB_SIZE_T pos = m_idleArray.getCount() - 1;
1180 Data* item = m_idleArray[pos];
1181 removeFromPool(item, pos);
1182
1183 item->m_next = free;
1184 free = item;
1185 }
1186 fb_assert(!m_idleList);
1187
1188 while (m_activeList)
1189 removeFromPool(m_activeList, -1);
1190
1191 fb_assert(!m_allCount);
1192 }
1193 else
1194 {
1195 if (!m_idleList)
1196 return;
1197
1198 time_t t;
1199 time(&t);
1200 t -= m_lifeTime;
1201
1202 while (m_idleList)
1203 {
1204 Data* item = m_idleList->m_prev;
1205 if (item->m_lastUsed > t)
1206 break;
1207
1208 removeFromPool(item, -1);
1209 item->m_next = free;
1210 free = item;
1211 };
1212 }
1213 }
1214
1215 while (free)
1216 {
1217 Connection* conn = free->m_conn;
1218 free = free->m_next;
1219 conn->getProvider()->releaseConnection(tdbb, *conn, false);
1220 }
1221}
1222
1223void ConnectionsPool::clear(thread_db* tdbb)
1224{

Callers 1

handlerMethod · 0.80

Calls 4

releaseConnectionMethod · 0.80
isEmptyMethod · 0.45
getCountMethod · 0.45
getProviderMethod · 0.45

Tested by

no test coverage detected