diff options
Diffstat (limited to 'include/grpc++/impl/sync_no_cxx11.h')
-rw-r--r-- | include/grpc++/impl/sync_no_cxx11.h | 70 |
1 files changed, 2 insertions, 68 deletions
diff --git a/include/grpc++/impl/sync_no_cxx11.h b/include/grpc++/impl/sync_no_cxx11.h index 120a031045..def800d6f4 100644 --- a/include/grpc++/impl/sync_no_cxx11.h +++ b/include/grpc++/impl/sync_no_cxx11.h @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,72 +34,6 @@ #ifndef GRPCXX_IMPL_SYNC_NO_CXX11_H #define GRPCXX_IMPL_SYNC_NO_CXX11_H -#include <grpc/support/sync.h> - -namespace grpc { - -template <class mutex> -class lock_guard; -class condition_variable; - -class mutex { - public: - mutex() { gpr_mu_init(&mu_); } - ~mutex() { gpr_mu_destroy(&mu_); } - - private: - ::gpr_mu mu_; - template <class mutex> - friend class lock_guard; - friend class condition_variable; -}; - -template <class mutex> -class lock_guard { - public: - lock_guard(mutex &mu) : mu_(mu), locked(true) { gpr_mu_lock(&mu.mu_); } - ~lock_guard() { unlock_internal(); } - - protected: - void lock_internal() { - if (!locked) gpr_mu_lock(&mu_.mu_); - locked = true; - } - void unlock_internal() { - if (locked) gpr_mu_unlock(&mu_.mu_); - locked = false; - } - - private: - mutex &mu_; - bool locked; - friend class condition_variable; -}; - -template <class mutex> -class unique_lock : public lock_guard<mutex> { - public: - unique_lock(mutex &mu) : lock_guard<mutex>(mu) {} - void lock() { this->lock_internal(); } - void unlock() { this->unlock_internal(); } -}; - -class condition_variable { - public: - condition_variable() { gpr_cv_init(&cv_); } - ~condition_variable() { gpr_cv_destroy(&cv_); } - void wait(lock_guard<mutex> &mu) { - mu.locked = false; - gpr_cv_wait(&cv_, &mu.mu_.mu_, gpr_inf_future(GPR_CLOCK_REALTIME)); - mu.locked = true; - } - void notify_one() { gpr_cv_signal(&cv_); } - void notify_all() { gpr_cv_broadcast(&cv_); } - - private: - gpr_cv cv_; -}; - -} // namespace grpc +#include <grpc++/impl/codegen/sync_no_cxx11.h> #endif // GRPCXX_IMPL_SYNC_NO_CXX11_H |