summaryrefslogtreecommitdiff
path: root/cpp/src/qpid
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
commit2249e649bfe1e822f9a7dc3638463ad27ac4bf73 (patch)
tree93b80f06b029ec8705b3960fb8561a5de555a219 /cpp/src/qpid
parente5df95069aa02cd841aab885ae1352c5fd1fa246 (diff)
downloadqpid-python-2249e649bfe1e822f9a7dc3638463ad27ac4bf73.tar.gz
Allow RdmaClient to be interrupted
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1052318 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid')
-rw-r--r--cpp/src/qpid/sys/rdma/RdmaClient.cpp8
1 files changed, 6 insertions, 2 deletions
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 <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";