|
@@ -73,6 +73,10 @@ public:
|
|
|
//removes entries older than tstamp passed in
|
|
|
//
|
|
|
virtual void removeStaleEntries(time_t tstamp);
|
|
|
+ virtual bool needsCleanup(time_t now, unsigned timeout)
|
|
|
+ {
|
|
|
+ return m_tLastCleanup < (now - timeout);
|
|
|
+ }
|
|
|
private:
|
|
|
|
|
|
|
|
@@ -174,11 +178,31 @@ public:
|
|
|
virtual void add (ISecUser& sec_user);
|
|
|
virtual void removeFromUserCache(ISecUser& sec_user);
|
|
|
|
|
|
- void setCacheTimeout(int timeout) { m_cacheTimeout = timeout; }
|
|
|
+#define DEFAULT_CACHE_TIMEOUT_SECONDS 10
|
|
|
+ void setCacheTimeout(int timeoutSeconds)
|
|
|
+ {
|
|
|
+ m_cacheTimeout = timeoutSeconds;
|
|
|
+ if(m_cacheTimeout == 0 && isTransactionalEnabled())//ensure transactional time is updated
|
|
|
+ setTransactionalCacheTimeout(DEFAULT_CACHE_TIMEOUT_SECONDS); //Transactional timeout is set to 10 seconds for long transactions that might take over 10 seconds.
|
|
|
+ else
|
|
|
+ setTransactionalCacheTimeout(timeoutSeconds);
|
|
|
+ }
|
|
|
const int getCacheTimeout() { return m_cacheTimeout; }
|
|
|
bool isCacheEnabled() { return m_cacheTimeout > 0; }
|
|
|
- void setTransactionalEnabled(bool enable) { m_transactionalEnabled = enable; }
|
|
|
+
|
|
|
+ void setTransactionalEnabled(bool enable)
|
|
|
+ {
|
|
|
+ m_transactionalEnabled = enable;
|
|
|
+ if(getCacheTimeout() == 0 && enable)//ensure transactional time is updated
|
|
|
+ setTransactionalCacheTimeout(DEFAULT_CACHE_TIMEOUT_SECONDS); //Transactional timeout is set to 10 seconds for long transactions that might take over 10 seconds.
|
|
|
+ else
|
|
|
+ setTransactionalCacheTimeout(getCacheTimeout());
|
|
|
+ }
|
|
|
+ void setTransactionalCacheTimeout(int timeoutSeconds) { m_transactionalCacheTimeout = timeoutSeconds; }
|
|
|
+ const int getTransactionalCacheTimeout() { return m_transactionalCacheTimeout; }
|
|
|
+
|
|
|
bool isTransactionalEnabled() { return m_transactionalEnabled;}
|
|
|
+
|
|
|
void flush();
|
|
|
bool addManagedFileScopes(IArrayOf<ISecResource>& scopes);
|
|
|
void removeManagedFileScopes(IArrayOf<ISecResource>& scopes);
|
|
@@ -196,6 +220,7 @@ private:
|
|
|
|
|
|
int m_cacheTimeout; //cleanup cycle period
|
|
|
bool m_transactionalEnabled;
|
|
|
+ int m_transactionalCacheTimeout;
|
|
|
|
|
|
MapUserCache m_userCache;
|
|
|
mutable ReadWriteLock m_userCacheRWLock; //guards m_userCache
|