Index: webrtc/base/thread_checker.h |
diff --git a/webrtc/base/thread_checker.h b/webrtc/base/thread_checker.h |
index 5914282a57c6faaae43ec76db371032415883350..ade52564ec60ef3d23254de6de231e2e827b04c2 100644 |
--- a/webrtc/base/thread_checker.h |
+++ b/webrtc/base/thread_checker.h |
@@ -13,166 +13,9 @@ |
#ifndef WEBRTC_BASE_THREAD_CHECKER_H_ |
#define WEBRTC_BASE_THREAD_CHECKER_H_ |
-// Apart from debug builds, we also enable the thread checker in |
-// builds with RTC_DCHECK_IS_ON so that trybots and waterfall bots |
-// with this define will get the same level of thread checking as |
-// debug bots. |
-#define ENABLE_THREAD_CHECKER RTC_DCHECK_IS_ON |
-#include "webrtc/base/checks.h" |
-#include "webrtc/base/constructormagic.h" |
-#include "webrtc/base/thread_annotations.h" |
-#include "webrtc/base/thread_checker_impl.h" |
- |
-namespace rtc { |
- |
-// Do nothing implementation, for use in release mode. |
-// |
-// Note: You should almost always use the ThreadChecker class to get the |
-// right version for your build configuration. |
-class ThreadCheckerDoNothing { |
- public: |
- bool CalledOnValidThread() const { |
- return true; |
- } |
- |
- void DetachFromThread() {} |
-}; |
- |
-// ThreadChecker is a helper class used to help verify that some methods of a |
-// class are called from the same thread. It provides identical functionality to |
-// base::NonThreadSafe, but it is meant to be held as a member variable, rather |
-// than inherited from base::NonThreadSafe. |
-// |
-// While inheriting from base::NonThreadSafe may give a clear indication about |
-// the thread-safety of a class, it may also lead to violations of the style |
-// guide with regard to multiple inheritance. The choice between having a |
-// ThreadChecker member and inheriting from base::NonThreadSafe should be based |
-// on whether: |
-// - Derived classes need to know the thread they belong to, as opposed to |
-// having that functionality fully encapsulated in the base class. |
-// - Derived classes should be able to reassign the base class to another |
-// thread, via DetachFromThread. |
-// |
-// If neither of these are true, then having a ThreadChecker member and calling |
-// CalledOnValidThread is the preferable solution. |
-// |
-// Example: |
-// class MyClass { |
-// public: |
-// void Foo() { |
-// RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
-// ... (do stuff) ... |
-// } |
-// |
-// private: |
-// ThreadChecker thread_checker_; |
-// } |
-// |
-// In Release mode, CalledOnValidThread will always return true. |
-#if ENABLE_THREAD_CHECKER |
-class LOCKABLE ThreadChecker : public ThreadCheckerImpl { |
-}; |
-#else |
-class LOCKABLE ThreadChecker : public ThreadCheckerDoNothing { |
-}; |
-#endif // ENABLE_THREAD_CHECKER |
- |
-#undef ENABLE_THREAD_CHECKER |
- |
-namespace internal { |
-class SCOPED_LOCKABLE AnnounceOnThread { |
- public: |
- template<typename ThreadLikeObject> |
- explicit AnnounceOnThread(const ThreadLikeObject* thread_like_object) |
- EXCLUSIVE_LOCK_FUNCTION(thread_like_object) {} |
- ~AnnounceOnThread() UNLOCK_FUNCTION() {} |
- |
- template<typename ThreadLikeObject> |
- static bool IsCurrent(const ThreadLikeObject* thread_like_object) { |
- return thread_like_object->IsCurrent(); |
- } |
- static bool IsCurrent(const rtc::ThreadChecker* checker) { |
- return checker->CalledOnValidThread(); |
- } |
- |
- private: |
- RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(AnnounceOnThread); |
-}; |
- |
-} // namespace internal |
-} // namespace rtc |
- |
-// RUN_ON/ACCESS_ON/RTC_DCHECK_RUN_ON macros allows to annotate variables are |
-// accessed from same thread/task queue. |
-// Using tools designed to check mutexes, it checks at compile time everywhere |
-// variable is access, there is a run-time dcheck thread/task queue is correct. |
-// |
-// class ExampleThread { |
-// public: |
-// void NeedVar1() { |
-// RTC_DCHECK_RUN_ON(network_thread_); |
-// transport_->Send(); |
-// } |
-// |
-// private: |
-// rtc::Thread* network_thread_; |
-// int transport_ ACCESS_ON(network_thread_); |
-// }; |
-// |
-// class ExampleThreadChecker { |
-// public: |
-// int CalledFromPacer() RUN_ON(pacer_thread_checker_) { |
-// return var2_; |
-// } |
-// |
-// void CallMeFromPacer() { |
-// RTC_DCHECK_RUN_ON(&pacer_thread_checker_) |
-// << "Should be called from pacer"; |
-// CalledFromPacer(); |
-// } |
-// |
-// private: |
-// int pacer_var_ ACCESS_ON(pacer_thread_checker_); |
-// rtc::ThreadChecker pacer_thread_checker_; |
-// }; |
-// |
-// class TaskQueueExample { |
-// public: |
-// class Encoder { |
-// public: |
-// rtc::TaskQueue* Queue() { return encoder_queue_; } |
-// void Encode() { |
-// RTC_DCHECK_RUN_ON(encoder_queue_); |
-// DoSomething(var_); |
-// } |
-// |
-// private: |
-// rtc::TaskQueue* const encoder_queue_; |
-// Frame var_ ACCESS_ON(encoder_queue_); |
-// }; |
-// |
-// void Encode() { |
-// // Will fail at runtime when DCHECK is enabled: |
-// // encoder_->Encode(); |
-// // Will work: |
-// rtc::scoped_ref_ptr<Encoder> encoder = encoder_; |
-// encoder_->Queue()->PostTask([encoder] { encoder->Encode(); }); |
-// } |
-// |
-// private: |
-// rtc::scoped_ref_ptr<Encoder> encoder_; |
-// } |
- |
-// Document if a variable/field is not shared and should be accessed from |
-// same thread/task queue. |
-#define ACCESS_ON(x) THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) |
- |
-// Document if a function expected to be called from same thread/task queue. |
-#define RUN_ON(x) THREAD_ANNOTATION_ATTRIBUTE__(exclusive_locks_required(x)) |
- |
-#define RTC_DCHECK_RUN_ON(thread_like_object) \ |
- rtc::internal::AnnounceOnThread thread_announcer(thread_like_object); \ |
- RTC_DCHECK(rtc::internal::AnnounceOnThread::IsCurrent(thread_like_object)) |
+// This header is deprecated and is just left here temporarily during |
+// refactoring. See https://bugs.webrtc.org/7634 for more details. |
+#include "webrtc/rtc_base/thread_checker.h" |
#endif // WEBRTC_BASE_THREAD_CHECKER_H_ |