|
reSIProcate/rutil
9694
|
Thread Local logger settings storage. More...
#include <Log.hxx>

Public Member Functions | |
| LocalLoggerMap () | |
| LocalLoggerId | create (Type type, Level level, const char *logFileName=NULL, ExternalLogger *externalLogger=NULL) |
| Create new logger instance and return its ID (zero on error) | |
| int | reinitialize (LocalLoggerId loggerId, Type type, Level level, const char *logFileName=NULL, ExternalLogger *externalLogger=NULL) |
| Reinitialize all new setting for a local logger instance. | |
| int | remove (LocalLoggerId loggerId) |
| Remove existing logger instance from map and destroy. | |
| ThreadData * | getData (LocalLoggerId loggerId) |
| Get pointer to ThreadData for given ID and increase use counter. | |
| void | decreaseUseCount (LocalLoggerId loggerId) |
| Decrease use counter for given loggerId. | |
Protected Types | |
| typedef HashMap< LocalLoggerId, std::pair< ThreadData *, int > > | LoggerInstanceMap |
| Storage for Thread Local loggers and their use-counts. | |
Protected Attributes | |
| LoggerInstanceMap | mLoggerInstancesMap |
| LocalLoggerId | mLastLocalLoggerId |
| Last used LocalLoggerId. | |
| Mutex | mLoggerInstancesMapMutex |
| Mutex to synchronize access to Thread Local logger settings storage. | |
typedef HashMap<LocalLoggerId, std::pair<ThreadData*, int> > resip::Log::LocalLoggerMap::LoggerInstanceMap [protected] |
| resip::Log::LocalLoggerMap::LocalLoggerMap | ( | ) | [inline] |
Definition at line 343 of file Log.hxx.
: mLastLocalLoggerId(0) {};
| Log::LocalLoggerId Log::LocalLoggerMap::create | ( | Log::Type | type, |
| Log::Level | level, | ||
| const char * | logFileName = NULL, |
||
| ExternalLogger * | externalLogger = NULL |
||
| ) |
Create new logger instance and return its ID (zero on error)
Definition at line 626 of file Log.cxx.
{
Lock lock(mLoggerInstancesMapMutex);
Log::LocalLoggerId id = ++mLastLocalLoggerId;
Log::ThreadData *pNewData = new Log::ThreadData(id, type, level, logFileName,
externalLogger);
mLoggerInstancesMap[id].first = pNewData;
mLoggerInstancesMap[id].second = 0;
return id;
}
| void Log::LocalLoggerMap::decreaseUseCount | ( | Log::LocalLoggerId | loggerId | ) |
Decrease use counter for given loggerId.
Definition at line 693 of file Log.cxx.
{
Lock lock(mLoggerInstancesMapMutex);
LoggerInstanceMap::iterator it = mLoggerInstancesMap.find(loggerId);
if (it != mLoggerInstancesMap.end())
{
it->second.second--;
assert(it->second.second >= 0);
}
}
| Log::ThreadData * Log::LocalLoggerMap::getData | ( | Log::LocalLoggerId | loggerId | ) |
Get pointer to ThreadData for given ID and increase use counter.
Definition at line 680 of file Log.cxx.
{
Lock lock(mLoggerInstancesMapMutex);
LoggerInstanceMap::iterator it = mLoggerInstancesMap.find(loggerId);
if (it == mLoggerInstancesMap.end())
{
// No such logger ID
return NULL;
}
it->second.second++;
return it->second.first;
}
| int Log::LocalLoggerMap::reinitialize | ( | Log::LocalLoggerId | loggerId, |
| Log::Type | type, | ||
| Log::Level | level, | ||
| const char * | logFileName = NULL, |
||
| ExternalLogger * | externalLogger = NULL |
||
| ) |
Reinitialize all new setting for a local logger instance.
| 0 | on success |
| 1 | if logger does not exist |
Definition at line 640 of file Log.cxx.
{
Lock lock(mLoggerInstancesMapMutex);
LoggerInstanceMap::iterator it = mLoggerInstancesMap.find(loggerId);
if (it == mLoggerInstancesMap.end())
{
// No such logger ID
std::cerr << "Log::LocalLoggerMap::remove(): Unknown local logger id=" << loggerId << std::endl;
return 1;
}
it->second.first->reset();
it->second.first->set(type, level, logFileName, externalLogger);
return 0;
}
| int Log::LocalLoggerMap::remove | ( | Log::LocalLoggerId | loggerId | ) |
Remove existing logger instance from map and destroy.
| 0 | on success |
| 1 | if logger does not exist |
| 2 | if logger is still in use |
| >2 | on other failures |
Definition at line 659 of file Log.cxx.
{
Lock lock(mLoggerInstancesMapMutex);
LoggerInstanceMap::iterator it = mLoggerInstancesMap.find(loggerId);
if (it == mLoggerInstancesMap.end())
{
// No such logger ID
std::cerr << "Log::LocalLoggerMap::remove(): Unknown local logger id=" << loggerId << std::endl;
return 1;
}
if (it->second.second > 0)
{
// Non-zero use-count.
std::cerr << "Log::LocalLoggerMap::remove(): Use count is non-zero (" << it->second.second << ")!" << std::endl;
return 2;
}
delete it->second.first; // delete ThreadData
mLoggerInstancesMap.erase(it);
return 0;
}
1.7.5.1