diff options
Diffstat (limited to 'cpp/src/qpid')
| -rw-r--r-- | cpp/src/qpid/sys/rdma/RdmaClient.cpp | 8 |
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"; |
