From: Francesco Chemolli Date: Wed, 2 Sep 2015 15:36:51 +0000 (+0200) Subject: Implement Runner API to deregister events on shutdown. X-Git-Tag: SQUID_4_0_1~21^2~44 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f6d8c56e18d4e9fb9e0df4811fd807ab9bab7f32;p=thirdparty%2Fsquid.git Implement Runner API to deregister events on shutdown. --- diff --git a/src/auth/UserNameCache.cc b/src/auth/UserNameCache.cc index 32e907db5d..32e4681083 100644 --- a/src/auth/UserNameCache.cc +++ b/src/auth/UserNameCache.cc @@ -21,6 +21,7 @@ UserNameCache::UserNameCache(const char *name) : cacheCleanupEventName.append(name); eventAdd(cacheCleanupEventName.c_str(), &UserNameCache::Cleanup, this, ::Config.authenticateGCInterval, 1); + RegisterRunner(this); } Auth::User::Pointer @@ -69,4 +70,11 @@ UserNameCache::sortedUsersList() return rv; } +void +UserNameCache::endingShutdown() +{ + eventDelete(&UserNameCache::Cleanup, this); + reset(); +} + } /* namespace Auth */ diff --git a/src/auth/UserNameCache.h b/src/auth/UserNameCache.h index 2d718868e8..2192760651 100644 --- a/src/auth/UserNameCache.h +++ b/src/auth/UserNameCache.h @@ -11,6 +11,8 @@ #include "SBufAlgos.h" #include "auth/User.h" +#include "cbdata.h" +#include "base/RunnersRegistry.h" #include @@ -21,9 +23,11 @@ namespace Auth { * It's meant to be used as a per-authentication protocol cache, * cleaning up objects which are past authenticate_ttl life */ -class UserNameCache +class UserNameCache : public RegisteredRunner { private: + CBDATA_CLASS(UserNameCache); + /// key is User::userKey(), mapped value is User::Pointer typedef std::unordered_map StoreType; @@ -57,6 +61,9 @@ public: * */ std::vector sortedUsersList(); + + /// RegisteredRunner API + virtual void endingShutdown() override; private: StoreType store_;