summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2010-10-12 16:04:06 +0000
committerAndrew Stitcher <astitcher@apache.org>2010-10-12 16:04:06 +0000
commit1e71ed964164f2b1de8beaba1ee562f8ea0cd6b5 (patch)
tree9eef9909791ec56d626b730964e6a45b56dbc550
parentbcf92981584daac3238432f1c571201e8de41cea (diff)
downloadqpid-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.cpp12
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";