]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/auth/CredentialsCache.h
2 * Copyright (C) 1996-2016 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 #ifndef SQUID_SRC_AUTH_CREDENTIALSCACHE_H
10 #define SQUID_SRC_AUTH_CREDENTIALSCACHE_H
12 #include "auth/User.h"
14 #include "sbuf/Algorithms.h"
16 #include <unordered_map>
20 /// Cache of Auth::User credentials, keyed by Auth::User::userKey
21 class CredentialsCache
24 CBDATA_CLASS(CredentialsCache
);
26 /// key is User::userKey(), mapped value is User::Pointer
27 typedef std::unordered_map
<SBuf
, Auth::User::Pointer
> StoreType
;
30 explicit CredentialsCache(const char *name
, const char * const eventName
);
32 ~CredentialsCache() = default;
33 CredentialsCache(const CredentialsCache
&) = delete;
34 CredentialsCache
& operator=(const CredentialsCache
&) = delete;
36 /// \returns a pointer to cached credentials, or nil if none found
37 Auth::User::Pointer
lookup(const SBuf
&userKey
) const;
39 /// add an user to the cache with the provided key
40 void insert(const SBuf
&userKey
, Auth::User::Pointer anAuth_user
);
43 void reset() { store_
.clear(); }
45 /// \returns number of cached usernames
46 size_t size() const { return store_
.size(); }
48 /** periodic cleanup function, removes timed-out entries
50 * Must be static to support EVH interface. Argument will be this
52 static void Cleanup(void *);
54 /// cache garbage collection, removes timed-out entries
58 * Cleanup cache data after a reconfiguration has occured.
59 * Similar to cleanup() but also flushes stale config dependent
60 * state from retained entries.
62 void doConfigChangeCleanup();
64 /// \returns alphanumerically sorted list of usernames
65 std::vector
<Auth::User::Pointer
> sortedUsersList() const;
68 void scheduleCleanup();
70 /// whether a cleanup (garbage collection) event has been scheduled
75 // c-string raw pointer used as event name
76 const char * const cacheCleanupEventName
;
79 } /* namespace Auth */
81 #endif /* SQUID_SRC_AUTH_CREDENTIALSCACHE_H */