summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2010-12-23 17:10:24 +0000
committerAndrew Stitcher <astitcher@apache.org>2010-12-23 17:10:24 +0000
commitd72918c182ef0b9a6c126aa7c87a0cce62239c7e (patch)
tree0257dfb84482c89b30149fc52dd3ba8e00cb9c50 /qpid/cpp/src
parentf9a0fec8230a3b1f48ff57483c3639d937336114 (diff)
downloadqpid-python-d72918c182ef0b9a6c126aa7c87a0cce62239c7e.tar.gz
Allow RdmaClient to be interrupted
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1052318 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp b/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp
index d33c609344..579a1d0e4b 100644
--- a/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp
+++ b/qpid/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 <netdb.h>
#include <arpa/inet.h>
@@ -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<Poller> 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";