From 2249e649bfe1e822f9a7dc3638463ad27ac4bf73 Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Thu, 23 Dec 2010 17:10:24 +0000 Subject: Allow RdmaClient to be interrupted git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1052318 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/sys/rdma/RdmaClient.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'cpp/src') diff --git a/cpp/src/qpid/sys/rdma/RdmaClient.cpp b/cpp/src/qpid/sys/rdma/RdmaClient.cpp index d33c609344..579a1d0e4b 100644 --- a/cpp/src/qpid/sys/rdma/RdmaClient.cpp +++ b/cpp/src/qpid/sys/rdma/RdmaClient.cpp @@ -21,6 +21,7 @@ #include "qpid/sys/rdma/RdmaIO.h" #include "qpid/sys/rdma/rdma_exception.h" #include "qpid/sys/Time.h" +#include "qpid/sys/Thread.h" #include #include @@ -39,6 +40,7 @@ using std::cerr; using std::copy; using std::rand; +using qpid::sys::Thread; using qpid::sys::Poller; using qpid::sys::Dispatcher; using qpid::sys::SocketAddress; @@ -173,7 +175,6 @@ int main(int argc, char* argv[]) { try { boost::shared_ptr p(new Poller()); - Dispatcher d(p); Rdma::Connector c( Rdma::ConnectionParams(msgsize, Rdma::DEFAULT_WR_ENTRIES), @@ -185,7 +186,10 @@ int main(int argc, char* argv[]) { SocketAddress sa(host, port); cout << "Connecting to: " << sa.asString() <<"\n"; c.start(p, sa); - d.run(); + + // The poller loop blocks all signals so run in its own thread + Thread t(*p); + t.join(); } catch (Rdma::Exception& e) { int err = e.getError(); cerr << "Error: " << e.what() << "(" << err << ")\n"; -- cgit v1.2.1