CBDATA_CLASS_INIT(CredentialsCache);
CredentialsCache::CredentialsCache(const char *name) :
+ gcScheduled_(false),
cachename(name),
cacheCleanupEventName("User cache cleanup: ")
{
debugs(29, 5, "initializing " << name << " username cache");
cacheCleanupEventName.append(name);
- eventAdd(cacheCleanupEventName.c_str(), &CredentialsCache::Cleanup,
- this, ::Config.authenticateGCInterval, 1);
RegisterRunner(this);
}
++i;
}
}
- eventAdd(cacheCleanupEventName.c_str(), &CredentialsCache::Cleanup,
- this, ::Config.authenticateGCInterval, 1);
+ scheduleCleanup();
}
void
{
debugs(29, 6, "adding " << anAuth_user->userKey());
store_[anAuth_user->userKey()] = anAuth_user;
+ scheduleCleanup();
}
// generates the list of cached usernames in a format that is convenient
return rv;
}
+void
+CredentialsCache::scheduleCleanup()
+{
+ if (!gcScheduled_ && store_.size()) {
+ gcScheduled_ = true;
+ eventAdd(cacheCleanupEventName.c_str(), &CredentialsCache::Cleanup,
+ this, ::Config.authenticateGCInterval, 1);
+ }
+}
+
void
CredentialsCache::endingShutdown()
{