Moved clean up code to cleanup() function.

git-svn-id: http://yate.null.ro/svn/yate/trunk@4941 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
oana 2012-02-23 15:22:08 +00:00
parent ef3c2fe390
commit 8c7a071ec0
1 changed files with 17 additions and 16 deletions

View File

@ -915,6 +915,23 @@ Client::~Client()
// Cleanup before halting
void Client::cleanup()
{
s_exiting = true;
// Drop all calls
ClientDriver::dropCalls();
// Notify termination to logics
for (ObjList* o = s_logics.skipNull(); o; o = o->skipNext()) {
ClientLogic* logic = static_cast<ClientLogic*>(o->get());
Debug(ClientDriver::self(),DebugAll,"Logic(%s) exitingClient() [%p]",
logic->toString().c_str(),logic);
logic->exitingClient();
}
// Make sure we drop all channels whose peers are not client channels
Message m("call.drop");
m.addParam("reason","shutdown");
Engine::dispatch(m);
TelEngine::destruct(m_defaultLogic);
exitClient();
for (ObjList* o = m_relays.skipNull(); o; o = o->skipNext())
Engine::uninstall(static_cast<MessageRelay*>(o->get()));
m_relays.clear();
@ -983,22 +1000,6 @@ void Client::run()
Client::updateTrayIcon(o->get()->toString());
// Run
main();
s_exiting = true;
// Drop all calls
ClientDriver::dropCalls();
// Notify termination to logics
for (ObjList* o = s_logics.skipNull(); o; o = o->skipNext()) {
ClientLogic* logic = static_cast<ClientLogic*>(o->get());
Debug(ClientDriver::self(),DebugAll,"Logic(%s) exitingClient() [%p]",
logic->toString().c_str(),logic);
logic->exitingClient();
}
// Make sure we drop all channels whose peers are not client channels
Message m("call.drop");
m.addParam("reason","shutdown");
Engine::dispatch(m);
TelEngine::destruct(m_defaultLogic);
exitClient();
}
// Check if a message is sent by the client