void CPermissionsCache::add( ISecUser& sec_user, IArrayOf<ISecResource>& resources ) { synchronized block(m_cachemonitor); const char* user = sec_user.getName(); MapResPermissionsCache::const_iterator i = m_resPermissionsMap.find( user ); CResPermissionsCache* pResPermissionsCache; if (i == m_resPermissionsMap.end()) { //DBGLOG("CACHE: Adding cache for %s", user); pResPermissionsCache = new CResPermissionsCache(this, user); m_resPermissionsMap.insert(pair<string, CResPermissionsCache*>(user, pResPermissionsCache)); } else pResPermissionsCache = (*i).second; pResPermissionsCache->add( resources ); }
void CPermissionsCache::add( ISecUser& sec_user, IArrayOf<ISecResource>& resources ) { const char* user = sec_user.getName(); WriteLockBlock writeLock(m_resPermCacheRWLock); MapResPermissionsCache::const_iterator i = m_resPermissionsMap.find( user ); CResPermissionsCache* pResPermissionsCache; if (i == m_resPermissionsMap.end()) { #ifdef _DEBUG DBGLOG("CACHE: CPermissionsCache Adding resources to cache for new user %s", user); #endif pResPermissionsCache = new CResPermissionsCache(this, user); m_resPermissionsMap.insert(pair<string, CResPermissionsCache*>(user, pResPermissionsCache)); } else { #ifdef _DEBUG DBGLOG("CACHE: CPermissionsCache Adding resources to cache for existing user %s", user); #endif pResPermissionsCache = (*i).second; } pResPermissionsCache->add( resources ); }