NCBI C++ ToolKit
|
Search Toolkit Book for CInfoManager
#include <objtools/data_loaders/genbank/impl/info_cache.hpp>
Public Types | |
typedef CMutex | TMainMutex |
![]() | |
enum | EAllocFillMode { eAllocFillNone = 1 , eAllocFillZero , eAllocFillPattern } |
Control filling of newly allocated memory. More... | |
typedef CObjectCounterLocker | TLockerType |
Default locker type for CRef. More... | |
typedef atomic< Uint8 > | TCounter |
Counter type is CAtomiCounter. More... | |
typedef Uint8 | TCount |
Alias for value type of counter. More... | |
Public Member Functions | |
CInfoManager (void) | |
virtual | ~CInfoManager (void) |
TMainMutex & | GetMainMutex (void) |
void | ReleaseAllLoadLocks (CInfoRequestor &requestor) |
void | ReleaseLoadLock (CInfoRequestorLock &lock) |
![]() | |
CObject (void) | |
Constructor. More... | |
CObject (const CObject &src) | |
Copy constructor. More... | |
virtual | ~CObject (void) |
Destructor. More... | |
CObject & | operator= (const CObject &src) THROWS_NONE |
Assignment operator. More... | |
bool | CanBeDeleted (void) const THROWS_NONE |
Check if object can be deleted. More... | |
bool | IsAllocatedInPool (void) const THROWS_NONE |
Check if object is allocated in memory pool (not system heap) More... | |
bool | Referenced (void) const THROWS_NONE |
Check if object is referenced. More... | |
bool | ReferencedOnlyOnce (void) const THROWS_NONE |
Check if object is referenced only once. More... | |
void | AddReference (void) const |
Add reference to object. More... | |
void | RemoveReference (void) const |
Remove reference to object. More... | |
void | ReleaseReference (void) const |
Remove reference without deleting object. More... | |
virtual void | DoNotDeleteThisObject (void) |
Mark this object as not allocated in heap – do not delete this object. More... | |
virtual void | DoDeleteThisObject (void) |
Mark this object as allocated in heap – object can be deleted. More... | |
void * | operator new (size_t size) |
Define new operator for memory allocation. More... | |
void * | operator new[] (size_t size) |
Define new[] operator for 'array' memory allocation. More... | |
void | operator delete (void *ptr) |
Define delete operator for memory deallocation. More... | |
void | operator delete[] (void *ptr) |
Define delete[] operator for memory deallocation. More... | |
void * | operator new (size_t size, void *place) |
Define new operator. More... | |
void | operator delete (void *ptr, void *place) |
Define delete operator. More... | |
void * | operator new (size_t size, CObjectMemoryPool *place) |
Define new operator using memory pool. More... | |
void | operator delete (void *ptr, CObjectMemoryPool *place) |
Define delete operator. More... | |
virtual void | DebugDump (CDebugDumpContext ddc, unsigned int depth) const |
Define method for dumping debug information. More... | |
![]() | |
CDebugDumpable (void) | |
virtual | ~CDebugDumpable (void) |
void | DebugDumpText (ostream &out, const string &bundle, unsigned int depth) const |
void | DebugDumpFormat (CDebugDumpFormatter &ddf, const string &bundle, unsigned int depth) const |
void | DumpToConsole (void) const |
Protected Types | |
typedef vector< CRef< CLoadMutex > > | TLoadMutexPool |
Protected Member Functions | |
bool | x_WaitForOtherLoader (TMainMutex::TWriteLockGuard &guard, CInfoRequestorLock &lock) |
bool | x_DeadLock (const CInfoRequestor &requestor, const CInfo_Base &info) const |
void | x_AssignLoadMutex (CRef< CLoadMutex > &mutex) |
void | x_ReleaseLoadMutex (CRef< CLoadMutex > &mutex) |
void | x_AssignLoadMutex (CInfo_Base &info) |
void | x_ReleaseLoadMutex (CInfo_Base &info) |
void | x_LockInfoMutex (CInfoRequestorLock &lock) |
void | x_UnlockInfoMutex (CInfoRequestorLock &lock) |
void | x_ReleaseLoadLock (CInfoRequestorLock &lock) |
void | x_AcquireLoadLock (TMainMutex::TWriteLockGuard &guard, CInfoRequestorLock &lock, EDoNotWait do_not_wait) |
void | x_AcquireLoadLock (CInfoRequestorLock &lock, EDoNotWait do_not_wait) |
![]() | |
virtual void | DeleteThis (void) |
Virtual method "deleting" this object. More... | |
Protected Attributes | |
TMainMutex | m_MainMutex |
CFastMutex | m_DeadlockMutex |
TLoadMutexPool | m_LoadMutexPool |
Friends | |
class | CInfoRequestor |
class | CInfoRequestorLock |
class | CInfoCache_Base |
Additional Inherited Members | |
![]() | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (void) |
Define method to throw null pointer exception. More... | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (const type_info &type) |
static EAllocFillMode | GetAllocFillMode (void) |
static void | SetAllocFillMode (EAllocFillMode mode) |
static void | SetAllocFillMode (const string &value) |
Set mode from configuration parameter value. More... | |
![]() | |
static void | EnableDebugDump (bool on) |
![]() | |
static const TCount | eCounterBitsCanBeDeleted = 1 << 0 |
Define possible object states. More... | |
static const TCount | eCounterBitsInPlainHeap = 1 << 1 |
Heap signature was found. More... | |
static const TCount | eCounterBitsPlaceMask |
Mask for 'in heap' state flags. More... | |
static const int | eCounterStep = 1 << 2 |
Skip over the "in heap" bits. More... | |
static const TCount | eCounterValid = TCount(1) << (sizeof(TCount) * 8 - 2) |
Minimal value for valid objects (reference counter is zero) Must be a single bit value. More... | |
static const TCount | eCounterStateMask |
Valid object, and object in heap. More... | |
![]() | |
INoCopying () | |
Definition at line 190 of file info_cache.hpp.
|
protected |
Definition at line 231 of file info_cache.hpp.
typedef CMutex CInfoManager::TMainMutex |
Definition at line 196 of file info_cache.hpp.
CInfoManager::CInfoManager | ( | void | ) |
Definition at line 121 of file info_cache.cpp.
|
virtual |
Definition at line 126 of file info_cache.cpp.
|
inline |
Definition at line 197 of file info_cache.hpp.
References m_MainMutex.
Referenced by ReleaseAllLoadLocks(), ReleaseLoadLock(), x_AcquireLoadLock(), and x_WaitForOtherLoader().
void CInfoManager::ReleaseAllLoadLocks | ( | CInfoRequestor & | requestor | ) |
Definition at line 334 of file info_cache.cpp.
References GetMainMutex(), ITERATE, CInfoRequestor::m_LockMap, and x_ReleaseLoadLock().
Referenced by CInfoRequestor::ReleaseAllLoadLocks().
void CInfoManager::ReleaseLoadLock | ( | CInfoRequestorLock & | lock | ) |
Definition at line 343 of file info_cache.cpp.
References GetMainMutex(), and x_ReleaseLoadLock().
Referenced by CInfoRequestor::ReleaseLoadLock(), and CInfoRequestorLock::SetLoadedFor().
|
protected |
Definition at line 200 of file info_cache.cpp.
References _ASSERT, GetMainMutex(), CInfoRequestorLock::IsLocked(), CInfoRequestorLock::m_Info, and x_AcquireLoadLock().
|
protected |
Definition at line 214 of file info_cache.cpp.
References _ASSERT, CInfoRequestorLock::GetInfo(), CInfoRequestorLock::GetRequestor(), info, CInfoRequestorLock::IsLoaded(), CInfoRequestorLock::IsLocked(), CInfoRequestorLock::m_Info, CGuard< Resource, Lock, Unlock, ReportExceptions >::Release(), x_AssignLoadMutex(), x_DeadLock(), x_LockInfoMutex(), and x_WaitForOtherLoader().
Referenced by x_AcquireLoadLock(), and CInfoCache_Base::x_AcquireLoadLock().
|
protected |
Definition at line 188 of file info_cache.cpp.
References info, and x_AssignLoadMutex().
|
protected |
Definition at line 160 of file info_cache.cpp.
References _ASSERT, CLoadMutex::IsLoading(), m_LoadMutexPool, and CObject::ReferencedOnlyOnce().
Referenced by x_AcquireLoadLock(), and x_AssignLoadMutex().
|
protected |
Definition at line 302 of file info_cache.cpp.
References _ASSERT, info, m_DeadlockMutex, CLoadMutex::m_LoadingRequestor, CInfo_Base::m_LoadMutex, and CInfoRequestor::m_WaitingForInfo.
Referenced by x_AcquireLoadLock().
|
protected |
Definition at line 131 of file info_cache.cpp.
References _ASSERT, CInfoRequestorLock::GetInfo(), CInfoRequestorLock::GetRequestor(), info, CLoadMutex::IsLoading(), CInfoRequestorLock::IsLocked(), CMutex::Lock(), CLoadMutex::m_LoadingRequestor, and CInfoRequestorLock::m_Mutex.
Referenced by x_AcquireLoadLock().
|
protected |
Definition at line 325 of file info_cache.cpp.
References CInfoRequestorLock::GetInfo(), CInfoRequestorLock::IsLocked(), x_ReleaseLoadMutex(), and x_UnlockInfoMutex().
Referenced by ReleaseAllLoadLocks(), ReleaseLoadLock(), and CInfoRequestorLock::x_SetLoadedFor().
|
protected |
Definition at line 194 of file info_cache.cpp.
References info, and x_ReleaseLoadMutex().
|
protected |
Definition at line 176 of file info_cache.cpp.
References _ASSERT, CLoadMutex::IsLoading(), m_LoadMutexPool, and CObject::ReferencedOnlyOnce().
Referenced by x_ReleaseLoadLock(), x_ReleaseLoadMutex(), and x_WaitForOtherLoader().
|
protected |
Definition at line 146 of file info_cache.cpp.
References _ASSERT, CInfoRequestorLock::GetInfo(), CInfoRequestorLock::GetRequestor(), CLoadMutex::IsLoading(), CInfoRequestorLock::IsLocked(), CLoadMutex::m_LoadingRequestor, CInfo_Base::m_LoadMutex, CInfoRequestorLock::m_Mutex, and CMutex::Unlock().
Referenced by x_ReleaseLoadLock().
|
protected |
Definition at line 257 of file info_cache.cpp.
References _ASSERT, CInfoRequestorLock::GetInfo(), GetMainMutex(), CInfoRequestorLock::GetRequestor(), CGuard< Resource, Lock, Unlock, ReportExceptions >::Guard(), info, CInfoRequestorLock::IsLoaded(), CLoadMutex::IsLoading(), CInfoRequestorLock::IsLocked(), m_DeadlockMutex, CInfoRequestor::m_WaitingForInfo, CGuard< Resource, Lock, Unlock, ReportExceptions >::Release(), and x_ReleaseLoadMutex().
Referenced by x_AcquireLoadLock().
|
friend |
Definition at line 208 of file info_cache.hpp.
|
friend |
Definition at line 206 of file info_cache.hpp.
|
friend |
Definition at line 207 of file info_cache.hpp.
|
mutableprotected |
Definition at line 234 of file info_cache.hpp.
Referenced by x_DeadLock(), and x_WaitForOtherLoader().
|
protected |
Definition at line 235 of file info_cache.hpp.
Referenced by x_AssignLoadMutex(), and x_ReleaseLoadMutex().
|
protected |
Definition at line 233 of file info_cache.hpp.
Referenced by GetMainMutex().