summaryrefslogtreecommitdiff
path: root/cpp/examples/qmf-agent/example.cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2009-11-12 14:35:39 +0000
committerTed Ross <tross@apache.org>2009-11-12 14:35:39 +0000
commit2cb5195f485b3d2e312c8cc9cf8c9dab4cd980ed (patch)
treebe58056618c1e971fb5a573d97ad533084dd9424 /cpp/examples/qmf-agent/example.cpp
parent51e77c8bc7dc4d71422b421135ded1cb33bb5c55 (diff)
downloadqpid-python-2cb5195f485b3d2e312c8cc9cf8c9dab4cd980ed.tar.gz
QPID-2179 - example qmf-agent occasionally crashes on shutdown
Committed patch from Ken Giusti git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@835392 13f79535-47bb-0310-9956-ffa450edef68
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;
}