Explorar el Código

Make interop server respond to sigint

This will allow the test to shut down cleanly, and avoid failing.
Craig Tiller hace 10 años
padre
commit
2f3e2ec865
Se han modificado 1 ficheros con 8 adiciones y 1 borrados
  1. 8 1
      test/cpp/interop/server.cc

+ 8 - 1
test/cpp/interop/server.cc

@@ -35,6 +35,8 @@
 #include <sstream>
 #include <thread>
 
+#include <signal.h>
+
 #include <gflags/gflags.h>
 #include <grpc/grpc.h>
 #include <grpc/support/log.h>
@@ -80,6 +82,8 @@ namespace gflags { }
 using namespace google;
 using namespace gflags;
 
+static bool got_sigint = false;
+
 bool SetPayload(PayloadType type, int size, Payload* payload) {
   PayloadType response_type = type;
   // TODO(yangg): Support UNCOMPRESSABLE payload.
@@ -217,14 +221,17 @@ void RunServer() {
   }
   std::unique_ptr<Server> server(builder.BuildAndStart());
   gpr_log(GPR_INFO, "Server listening on %s", server_address.str().c_str());
-  while (true) {
+  while (!got_sigint) {
     std::this_thread::sleep_for(std::chrono::seconds(5));
   }
 }
 
+static void sigint_handler(int x) { got_sigint = true; }
+
 int main(int argc, char** argv) {
   grpc_init();
   ParseCommandLineFlags(&argc, &argv, true);
+  signal(SIGINT, sigint_handler);
 
   GPR_ASSERT(FLAGS_port != 0);
   RunServer();