summaryrefslogtreecommitdiff
path: root/cpp/examples/qmf-agent/example.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/examples/qmf-agent/example.cpp')
-rw-r--r--cpp/examples/qmf-agent/example.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/cpp/examples/qmf-agent/example.cpp b/cpp/examples/qmf-agent/example.cpp
index a611c25ba3..5ab9c10c91 100644
--- a/cpp/examples/qmf-agent/example.cpp
+++ b/cpp/examples/qmf-agent/example.cpp
@@ -36,6 +36,8 @@
#include <sstream>
+static bool running = true;
+
using namespace std;
using qpid::management::ManagementAgent;
using qpid::management::ManagementObject;
@@ -101,7 +103,7 @@ CoreClass::CoreClass(ManagementAgent* _agent, string _name) : name(_name), agent
void CoreClass::doLoop()
{
// Periodically bump a counter to provide a changing statistical value
- while (1) {
+ while (running) {
qpid::sys::sleep(1);
mgmtObject->inc_count();
mgmtObject->set_state("IN_LOOP");
@@ -155,8 +157,7 @@ ManagementAgent::Singleton* singleton;
void shutdown(int)
{
- delete singleton;
- exit(0);
+ running = false;
}
int main_int(int argc, char** argv)
@@ -188,6 +189,9 @@ int main_int(int argc, char** argv)
core1.doLoop();
+ // done, cleanup and exit
+ delete singleton;
+
return 0;
}