simplifed Thread and fixed some cleanup
This commit is contained in:
+10
-12
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user