aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cpp/server
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-02-24 15:46:22 -0800
committerGravatar Craig Tiller <ctiller@google.com>2015-02-24 15:46:22 -0800
commit6e57b9edb19eaa302586beadcaa7cf21a3601025 (patch)
treea51db9fa67e43055330e417dfcc5aaa28e1759d3 /src/cpp/server
parenteeef8cd52b34282c89d1eadf7daff7bf401ac9b0 (diff)
Add Server.Wait
Diffstat (limited to 'src/cpp/server')
-rw-r--r--src/cpp/server/server.cc25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index f565d3aa5d..178fa1a716 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -265,21 +265,26 @@ bool Server::Start() {
}
void Server::Shutdown() {
- {
- std::unique_lock<std::mutex> lock(mu_);
- if (started_ && !shutdown_) {
- shutdown_ = true;
- grpc_server_shutdown(server_);
- cq_.Shutdown();
+ std::unique_lock<std::mutex> lock(mu_);
+ if (started_ && !shutdown_) {
+ shutdown_ = true;
+ grpc_server_shutdown(server_);
+ cq_.Shutdown();
- // Wait for running callbacks to finish.
- while (num_running_cb_ != 0) {
- callback_cv_.wait(lock);
- }
+ // Wait for running callbacks to finish.
+ while (num_running_cb_ != 0) {
+ callback_cv_.wait(lock);
}
}
}
+void Server::Wait() {
+ std::unique_lock<std::mutex> lock(mu_);
+ while (num_running_cb_ != 0) {
+ callback_cv_.wait(lock);
+ }
+}
+
void Server::PerformOpsOnCall(CallOpBuffer* buf, Call* call) {
static const size_t MAX_OPS = 8;
size_t nops = MAX_OPS;