From 3407386b9448ae3617cd430de219daa1b5ea6b9e Mon Sep 17 00:00:00 2001 From: Roland Jax Date: Sun, 22 Jun 2014 07:48:31 +0200 Subject: [PATCH] daemon: 'stop' command added. --- ChangeLog | 3 +++ README | 1 + src/baseloop.cpp | 12 +++++++++++- src/cycdata.cpp | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index cf900548..d6b5513d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ ebusd - ChangeLog ----------------- +2014-06-22 Roland Jax +* 'stop' daemon command added. + 2014-06-03 Roland Jax * ebusd_send, ebusd_scan added. * class Appl: program arguments parsing improved. diff --git a/README b/README index 314043f7..778adfb7 100644 --- a/README +++ b/README @@ -20,6 +20,7 @@ Features - dump toggle dump on/off - logarea change log area - loglevel change log level + - stop stop daemon - quit close connection - help print help page diff --git a/src/baseloop.cpp b/src/baseloop.cpp index 3906138a..b9c8db00 100644 --- a/src/baseloop.cpp +++ b/src/baseloop.cpp @@ -31,6 +31,8 @@ extern Appl& A; void BaseLoop::start() { for (;;) { + std::string result; + // recv new message from client Message* message = m_queue.remove(); std::string data = message->getData(); @@ -41,7 +43,10 @@ void BaseLoop::start() L.log(bas, event, ">>> %s", data.c_str()); // decode message - std::string result(decodeMessage(data)); + if (strcasecmp(data.c_str(), "stop") != 0) + result = decodeMessage(data); + else + result = "done"; L.log(bas, event, "<<< %s", result.c_str()); @@ -51,6 +56,10 @@ void BaseLoop::start() connection->addResult(Message(result)); delete message; + + // stop daemon + if (strcasecmp(data.c_str(), "stop") == 0) + return; } } @@ -273,6 +282,7 @@ std::string BaseLoop::decodeMessage(const std::string& data) << " dump - change dump state 'dump state' (state: on|off)" << std::endl << " logarea - change log area 'logarea area,area,..' (area: bas|net|bus|cyc|all)" << std::endl << " loglevel - change log level 'loglevel level' (level: error|event|trace|debug)" << std::endl + << " stop - stop daemon" << std::endl << " quit - close connection" << std::endl << " help - print this page"; break; diff --git a/src/cycdata.cpp b/src/cycdata.cpp index 92c38b0d..82ac66ca 100644 --- a/src/cycdata.cpp +++ b/src/cycdata.cpp @@ -61,7 +61,7 @@ void* CYCData::run() tmp += (*m_commands)[index][1]; tmp += " "; tmp += (*m_commands)[index][2]; - L.log(cyc, trace, " [%d] %s", index, tmp.c_str()); + L.log(cyc, event, " [%d] %s", index, tmp.c_str()); storeData(index, data); } }