aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cpp/server/server.cc
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-02-24 17:02:07 -0800
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-02-24 17:02:07 -0800
commit7c0f33dea9d5a389a20c6d86e77673d91ad1460d (patch)
tree41da5ace768e1682ca75fc127127a83fcac3b970 /src/cpp/server/server.cc
parentba08dd7400d27302b97bf2108078a3e7b3333965 (diff)
parentcb0a28eb86a22d4b220c8d025b96165cf68279f7 (diff)
Merge github.com:grpc/grpc into credit
Diffstat (limited to 'src/cpp/server/server.cc')
-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 0d81f0b126..dc48546541 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -248,21 +248,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;