simplifed Thread and fixed some cleanup

This commit is contained in:
john30
2014-11-29 19:05:20 +01:00
parent 637800125c
commit bd4d36b27f
+10 -12
View File
@@ -100,7 +100,7 @@ void LogSink::addMessage(const LogMessage& message)
m_logQueue.add((tmp)); m_logQueue.add((tmp));
} }
void* LogSink::run() void LogSink::run()
{ {
while (1) { while (1) {
LogMessage* message = m_logQueue.remove(); LogMessage* message = m_logQueue.remove();
@@ -111,13 +111,12 @@ void* LogSink::run()
write(*message); write(*message);
delete message; delete message;
} }
return NULL; return;
} }
write(*message); write(*message);
delete message; delete message;
} }
return NULL;
} }
@@ -187,7 +186,7 @@ Logger& Logger::operator-=(const LogSink* sink)
void Logger::log(const int area, const int level, const string& data, ...) void Logger::log(const int area, const int level, const string& data, ...)
{ {
if (m_running == true) { if (isRunning() == true) {
char* tmp; char* tmp;
va_list ap; va_list ap;
va_start(ap, data); va_start(ap, data);
@@ -203,11 +202,11 @@ void Logger::log(const int area, const int level, const string& data, ...)
} }
void* Logger::run() void Logger::run()
{ {
m_running = true; bool running = true;
while (m_running == true) { do {
LogMessage* message = m_logQueue.remove(); LogMessage* message = m_logQueue.remove();
sinkCI_t iter = m_sinks.begin(); sinkCI_t iter = m_sinks.begin();
@@ -215,28 +214,27 @@ void* Logger::run()
for (; iter != m_sinks.end(); ++iter) { for (; iter != m_sinks.end(); ++iter) {
if (*iter != 0) { if (*iter != 0) {
if (((*iter)->getAreas() & message->getArea() if ((((*iter)->getAreas() & message->getArea()) != 0
&& (*iter)->getLevel() >= message->getLevel()) && (*iter)->getLevel() >= message->getLevel())
&& message->isRunning() == true) { && message->isRunning() == true) {
(*iter)->addMessage(*message); (*iter)->addMessage(*message);
} }
else if (message->isRunning() == false) { else if (message->isRunning() == false) {
(*iter)->addMessage(*message); (*iter)->addMessage(*message);
m_running = false; running = false;
} }
} }
} }
delete message; delete message;
} } while (running == true);
return NULL;
} }
void Logger::stop() void Logger::stop()
{ {
m_logQueue.add(new LogMessage(LogMessage(bas, error, "", false))); m_logQueue.add(new LogMessage(LogMessage(bas, error, "", false)));
usleep(100000); usleep(100000);
Thread::stop();
} }