diff options
author | Andrew Stitcher <astitcher@apache.org> | 2010-10-12 16:04:06 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2010-10-12 16:04:06 +0000 |
commit | 1e71ed964164f2b1de8beaba1ee562f8ea0cd6b5 (patch) | |
tree | 9eef9909791ec56d626b730964e6a45b56dbc550 | |
parent | bcf92981584daac3238432f1c571201e8de41cea (diff) | |
download | qpid-python-1e71ed964164f2b1de8beaba1ee562f8ea0cd6b5.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@1021815 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp b/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp index 564fd62730..a23f9194f5 100644 --- a/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp +++ b/qpid/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"; |