]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Implement Runner API to deregister events on shutdown.
authorFrancesco Chemolli <kinkie@squid-cache.org>
Wed, 2 Sep 2015 15:36:51 +0000 (17:36 +0200)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Wed, 2 Sep 2015 15:36:51 +0000 (17:36 +0200)
src/auth/UserNameCache.cc
src/auth/UserNameCache.h

index 32e907db5ded8c3bf058efdfa73fceaf2915047b..32e468108364d16286ac4ceef896545275a7aca6 100644 (file)
@@ -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 */
index 2d718868e815e111a19d2417c8e158efa8de53f0..219276065104771176497e67e5dbb5b4da1c98fc 100644 (file)
@@ -11,6 +11,8 @@
 
 #include "SBufAlgos.h"
 #include "auth/User.h"
+#include "cbdata.h"
+#include "base/RunnersRegistry.h"
 
 #include <unordered_map>
 
@@ -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<SBuf, Auth::User::Pointer> StoreType;
 
@@ -57,6 +61,9 @@ public:
      *
      */
     std::vector<Auth::User::Pointer> sortedUsersList();
+
+    /// RegisteredRunner API
+    virtual void endingShutdown() override;
 private:
     StoreType store_;