Added object counter for main engine thread.
Fixed counter allocation reentrancy problem. git-svn-id: http://yate.null.ro/svn/yate/trunk@5780 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
e5cfa7a2ff
commit
11a07cc613
|
@ -238,6 +238,7 @@ static String s_startMsg;
|
|||
static SharedVars s_vars;
|
||||
static Mutex s_hooksMutex(true,"HooksList");
|
||||
static ObjList s_hooks;
|
||||
static NamedCounter* s_counter = 0;
|
||||
|
||||
const TokenDict Engine::s_callAccept[] = {
|
||||
{"accept", Engine::Accept},
|
||||
|
@ -867,12 +868,14 @@ static bool logFileOpen()
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static int engineRun(EngineLoop loop = 0)
|
||||
{
|
||||
time_t t = ::time(0);
|
||||
s_startMsg << "Yate (" << ::getpid() << ") is starting " << ::ctime(&t);
|
||||
s_startMsg.trimSpaces();
|
||||
Output("%s",s_startMsg.c_str());
|
||||
Thread::setCurrentObjCounter((s_counter = GenObject::getObjCounter("engine")));
|
||||
int retcode = Engine::self()->engineInit();
|
||||
if (!retcode)
|
||||
retcode = (loop ? loop() : Engine::self()->run());
|
||||
|
|
|
@ -881,8 +881,11 @@ NamedCounter* GenObject::getObjCounter(const String& name, bool create)
|
|||
return 0;
|
||||
Lock mylock(s_countersMutex);
|
||||
NamedCounter* cnt = static_cast<NamedCounter*>(s_counters[name]);
|
||||
if (create && !cnt)
|
||||
if (create && !cnt) {
|
||||
NamedCounter* saved = Thread::setCurrentObjCounter(0);
|
||||
s_counters.append(cnt = new NamedCounter(name));
|
||||
Thread::setCurrentObjCounter(saved);
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue