You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by sh...@apache.org on 2009/09/17 21:37:35 UTC

svn commit: r816348 - /qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp

Author: shuston
Date: Thu Sep 17 19:37:35 2009
New Revision: 816348

URL: http://svn.apache.org/viewvc?rev=816348&view=rev
Log:
Add console control handler to properly shut down broker on ^C et al; fixes QPID-2109

Modified:
    qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp

Modified: qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp?rev=816348&r1=816347&r2=816348&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp Thu Sep 17 19:37:35 2009
@@ -133,6 +133,14 @@
     }
 }
 
+// Console control handler to properly handle ctl-c.
+BOOL CtrlHandler(DWORD ctl)
+{
+    ShutdownEvent shutter;     // no pid specified == shut me down
+    shutter.signal();
+    return ((ctl == CTRL_C_EVENT || ctl == CTRL_CLOSE_EVENT) ? TRUE : FALSE);
+}
+
 }
 
 struct ProcessControlOptions : public qpid::Options {
@@ -245,6 +253,7 @@
 
     ShutdownHandler waitShut(brokerPtr);
     qpid::sys::Thread waitThr(waitShut);   // Wait for shutdown event
+    SetConsoleCtrlHandler((PHANDLER_ROUTINE)CtrlHandler, TRUE);
     brokerPtr->run();
     waitShut.signal();   // In case we shut down some other way
     waitThr.join();



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org