Author: gsim Date: Thu Oct 8 19:04:05 2009 New Revision: 823279 URL: http://svn.apache.org/viewvc?rev=823279&view=rev Log: QPID-2132: further fix from Ken Giusti.
Modified: qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h Modified: qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp?rev=823279&r1=823278&r2=823279&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp Thu Oct 8 19:04:05 2009 @@ -89,11 +89,12 @@ ManagementAgentImpl::~ManagementAgentImpl() { - // shutdown the connection thread + // shutdown & cleanup all threads connThreadBody.close(); - connThread.join(); + pubThreadBody.close(); - // @todo need to shutdown pubThread? + connThread.join(); + pubThread.join(); // Release the memory associated with stored management objects. { @@ -907,8 +908,13 @@ void ManagementAgentImpl::PublishThread::run() { - while (true) { + uint16_t totalSleep; + + while (!shutdown) { agent.periodicProcessing(); - ::sleep(agent.getInterval()); + totalSleep = 0; + while (totalSleep++ < agent.getInterval() && !shutdown) { + ::sleep(1); + } } } Modified: qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h?rev=823279&r1=823278&r2=823279&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h (original) +++ qpid/trunk/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h Thu Oct 8 19:04:05 2009 @@ -194,8 +194,11 @@ { ManagementAgentImpl& agent; void run(); + bool shutdown; public: - PublishThread(ManagementAgentImpl& _agent) : agent(_agent) {} + PublishThread(ManagementAgentImpl& _agent) : + agent(_agent), shutdown(false) {} + void close() { shutdown = true; } }; ConnectionThread connThreadBody; --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org