summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2010-10-12 16:04:06 +0000
committerAndrew Stitcher <astitcher@apache.org>2010-10-12 16:04:06 +0000
commit0cc24e0bbffc35a40e9200ffcd5b1082c8286641 (patch)
tree29568b585fc8eba01d1a1ad80a7aeb8405b0c48f /cpp/src
parentd3e9685de3fd1fc4f5cc63d4d2e9006f44aebd75 (diff)
downloadqpid-python-0cc24e0bbffc35a40e9200ffcd5b1082c8286641.tar.gz
Fix Rdma test server so that you can interrupt it again (since making
Poller run loop impervious to signals) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1021815 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/sys/rdma/RdmaServer.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/cpp/src/qpid/sys/rdma/RdmaServer.cpp b/cpp/src/qpid/sys/rdma/RdmaServer.cpp
index 564fd62730..a23f9194f5 100644
--- a/cpp/src/qpid/sys/rdma/RdmaServer.cpp
+++ b/cpp/src/qpid/sys/rdma/RdmaServer.cpp
@@ -18,6 +18,7 @@
* under the License.
*
*/
+#include "qpid/sys/Thread.h"
#include "qpid/sys/rdma/RdmaIO.h"
#include "qpid/sys/rdma/rdma_exception.h"
@@ -36,9 +37,9 @@ using std::string;
using std::cout;
using std::cerr;
+using qpid::sys::Thread;
using qpid::sys::SocketAddress;
using qpid::sys::Poller;
-using qpid::sys::Dispatcher;
// All the accepted connections
namespace qpid {
@@ -179,7 +180,6 @@ int main(int argc, char* argv[]) {
try {
boost::shared_ptr<Poller> p(new Poller());
- Dispatcher d(p);
Rdma::Listener a(
Rdma::ConnectionParams(16384, Rdma::DEFAULT_WR_ENTRIES),
@@ -191,7 +191,13 @@ int main(int argc, char* argv[]) {
SocketAddress sa("", port);
a.start(p, sa);
- d.run();
+
+ // The poller loop blocks all signals so run in its own thread
+ Thread t(*p);
+
+ ::pause();
+ p->shutdown();
+ t.join();
} catch (Rdma::Exception& e) {
int err = e.getError();
cerr << "Error: " << e.what() << "(" << err << ")\n";