Remove QuicheMutex, etc., indirection As of https://chromium-review.googlesource.com/c/chromium/src/+/6020098, I believe no one is using this override. Just use Abseil directly. PiperOrigin-RevId: 697415717
diff --git a/build/source_list.bzl b/build/source_list.bzl index 1db4c11..9c9ed2b 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -29,7 +29,6 @@ "common/platform/api/quiche_logging.h", "common/platform/api/quiche_lower_case_string.h", "common/platform/api/quiche_mem_slice.h", - "common/platform/api/quiche_mutex.h", "common/platform/api/quiche_prefetch.h", "common/platform/api/quiche_reference_counted.h", "common/platform/api/quiche_server_stats.h", @@ -394,7 +393,6 @@ "quic/platform/api/quic_ip_address.h", "quic/platform/api/quic_ip_address_family.h", "quic/platform/api/quic_logging.h", - "quic/platform/api/quic_mutex.h", "quic/platform/api/quic_server_stats.h", "quic/platform/api/quic_socket_address.h", "quic/platform/api/quic_stack_trace.h", @@ -413,7 +411,6 @@ "common/masque/connect_ip_datagram_payload.cc", "common/masque/connect_udp_datagram_payload.cc", "common/platform/api/quiche_hostname_utils.cc", - "common/platform/api/quiche_mutex.cc", "common/quiche_buffer_allocator.cc", "common/quiche_crypto_logging.cc", "common/quiche_data_reader.cc", @@ -1452,7 +1449,6 @@ "common/platform/default/quiche_platform_impl/quiche_logging_impl.h", "common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h", "common/platform/default/quiche_platform_impl/quiche_mem_slice_impl.h", - "common/platform/default/quiche_platform_impl/quiche_mutex_impl.h", "common/platform/default/quiche_platform_impl/quiche_prefetch_impl.h", "common/platform/default/quiche_platform_impl/quiche_reference_counted_impl.h", "common/platform/default/quiche_platform_impl/quiche_server_stats_impl.h", @@ -1466,7 +1462,6 @@ default_platform_impl_srcs = [ "common/platform/default/quiche_platform_impl/quiche_flags_impl.cc", "common/platform/default/quiche_platform_impl/quiche_logging_impl.cc", - "common/platform/default/quiche_platform_impl/quiche_mutex_impl.cc", "common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc", "common/platform/default/quiche_platform_impl/quiche_time_utils_impl.cc", "common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc",
diff --git a/build/source_list.gni b/build/source_list.gni index 1a4a39c..4d0b463 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -29,7 +29,6 @@ "src/quiche/common/platform/api/quiche_logging.h", "src/quiche/common/platform/api/quiche_lower_case_string.h", "src/quiche/common/platform/api/quiche_mem_slice.h", - "src/quiche/common/platform/api/quiche_mutex.h", "src/quiche/common/platform/api/quiche_prefetch.h", "src/quiche/common/platform/api/quiche_reference_counted.h", "src/quiche/common/platform/api/quiche_server_stats.h", @@ -394,7 +393,6 @@ "src/quiche/quic/platform/api/quic_ip_address.h", "src/quiche/quic/platform/api/quic_ip_address_family.h", "src/quiche/quic/platform/api/quic_logging.h", - "src/quiche/quic/platform/api/quic_mutex.h", "src/quiche/quic/platform/api/quic_server_stats.h", "src/quiche/quic/platform/api/quic_socket_address.h", "src/quiche/quic/platform/api/quic_stack_trace.h", @@ -413,7 +411,6 @@ "src/quiche/common/masque/connect_ip_datagram_payload.cc", "src/quiche/common/masque/connect_udp_datagram_payload.cc", "src/quiche/common/platform/api/quiche_hostname_utils.cc", - "src/quiche/common/platform/api/quiche_mutex.cc", "src/quiche/common/quiche_buffer_allocator.cc", "src/quiche/common/quiche_crypto_logging.cc", "src/quiche/common/quiche_data_reader.cc", @@ -1456,7 +1453,6 @@ "src/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_mem_slice_impl.h", - "src/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_prefetch_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_reference_counted_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_server_stats_impl.h", @@ -1470,7 +1466,6 @@ default_platform_impl_srcs = [ "src/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc", "src/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.cc", - "src/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.cc", "src/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc", "src/quiche/common/platform/default/quiche_platform_impl/quiche_time_utils_impl.cc", "src/quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc",
diff --git a/build/source_list.json b/build/source_list.json index 5db7d3a..abb2a45 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -28,7 +28,6 @@ "quiche/common/platform/api/quiche_logging.h", "quiche/common/platform/api/quiche_lower_case_string.h", "quiche/common/platform/api/quiche_mem_slice.h", - "quiche/common/platform/api/quiche_mutex.h", "quiche/common/platform/api/quiche_prefetch.h", "quiche/common/platform/api/quiche_reference_counted.h", "quiche/common/platform/api/quiche_server_stats.h", @@ -393,7 +392,6 @@ "quiche/quic/platform/api/quic_ip_address.h", "quiche/quic/platform/api/quic_ip_address_family.h", "quiche/quic/platform/api/quic_logging.h", - "quiche/quic/platform/api/quic_mutex.h", "quiche/quic/platform/api/quic_server_stats.h", "quiche/quic/platform/api/quic_socket_address.h", "quiche/quic/platform/api/quic_stack_trace.h", @@ -412,7 +410,6 @@ "quiche/common/masque/connect_ip_datagram_payload.cc", "quiche/common/masque/connect_udp_datagram_payload.cc", "quiche/common/platform/api/quiche_hostname_utils.cc", - "quiche/common/platform/api/quiche_mutex.cc", "quiche/common/quiche_buffer_allocator.cc", "quiche/common/quiche_crypto_logging.cc", "quiche/common/quiche_data_reader.cc", @@ -1455,7 +1452,6 @@ "quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_mem_slice_impl.h", - "quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_prefetch_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_reference_counted_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_server_stats_impl.h", @@ -1469,7 +1465,6 @@ "default_platform_impl_srcs": [ "quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc", "quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.cc", - "quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.cc", "quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc", "quiche/common/platform/default/quiche_platform_impl/quiche_time_utils_impl.cc", "quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc"
diff --git a/quiche/blind_sign_auth/blind_sign_auth_test.cc b/quiche/blind_sign_auth/blind_sign_auth_test.cc index 7c681df..8fa6561 100644 --- a/quiche/blind_sign_auth/blind_sign_auth_test.cc +++ b/quiche/blind_sign_auth/blind_sign_auth_test.cc
@@ -13,6 +13,7 @@ #include "absl/status/statusor.h" #include "absl/strings/escaping.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/notification.h" #include "absl/time/clock.h" #include "absl/time/time.h" #include "absl/types/span.h" @@ -26,7 +27,6 @@ #include "quiche/blind_sign_auth/blind_sign_message_interface.h" #include "quiche/blind_sign_auth/blind_sign_message_response.h" #include "quiche/blind_sign_auth/test_tools/mock_blind_sign_message_interface.h" -#include "quiche/common/platform/api/quiche_mutex.h" #include "quiche/common/platform/api/quiche_test.h" #include "quiche/common/test_tools/quiche_test_utils.h" @@ -266,7 +266,7 @@ .Times(0); int num_tokens = 1; - QuicheNotification done; + absl::Notification done; SignedTokenCallback callback = [&done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), absl::StatusCode::kInvalidArgument); @@ -301,7 +301,7 @@ .Times(0); int num_tokens = 1; - QuicheNotification done; + absl::Notification done; SignedTokenCallback callback = [&done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), absl::StatusCode::kInvalidArgument); @@ -346,7 +346,7 @@ } int num_tokens = 1; - QuicheNotification done; + absl::Notification done; SignedTokenCallback callback = [&done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), absl::StatusCode::kInternal); @@ -389,7 +389,7 @@ } int num_tokens = 1; - QuicheNotification done; + absl::Notification done; SignedTokenCallback callback = [this, &done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -430,7 +430,7 @@ }); int num_tokens = 1; - QuicheNotification done; + absl::Notification done; SignedTokenCallback callback = [&done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), absl::StatusCode::kInvalidArgument);
diff --git a/quiche/blind_sign_auth/cached_blind_sign_auth.cc b/quiche/blind_sign_auth/cached_blind_sign_auth.cc index 4579086..883e2aa 100644 --- a/quiche/blind_sign_auth/cached_blind_sign_auth.cc +++ b/quiche/blind_sign_auth/cached_blind_sign_auth.cc
@@ -13,12 +13,12 @@ #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_format.h" +#include "absl/synchronization/mutex.h" #include "absl/time/clock.h" #include "absl/time/time.h" #include "absl/types/span.h" #include "quiche/blind_sign_auth/blind_sign_auth_interface.h" #include "quiche/common/platform/api/quiche_logging.h" -#include "quiche/common/platform/api/quiche_mutex.h" namespace quiche { @@ -42,7 +42,7 @@ std::vector<BlindSignToken> output_tokens; { - QuicheWriterMutexLock lock(&mutex_); + absl::WriterMutexLock lock(&mutex_); RemoveExpiredTokens(); // Try to fill the request from cache. @@ -83,7 +83,7 @@ std::vector<BlindSignToken> output_tokens; size_t cache_size; { - QuicheWriterMutexLock lock(&mutex_); + absl::WriterMutexLock lock(&mutex_); // Add returned tokens to cache. for (const BlindSignToken& token : *tokens) {
diff --git a/quiche/blind_sign_auth/cached_blind_sign_auth.h b/quiche/blind_sign_auth/cached_blind_sign_auth.h index 9d90e6c..7eaa677 100644 --- a/quiche/blind_sign_auth/cached_blind_sign_auth.h +++ b/quiche/blind_sign_auth/cached_blind_sign_auth.h
@@ -8,11 +8,12 @@ #include <string> #include <vector> +#include "absl/base/thread_annotations.h" #include "absl/status/statusor.h" +#include "absl/synchronization/mutex.h" #include "absl/types/span.h" #include "quiche/blind_sign_auth/blind_sign_auth_interface.h" #include "quiche/common/platform/api/quiche_export.h" -#include "quiche/common/platform/api/quiche_mutex.h" #include "quiche/common/quiche_circular_deque.h" namespace quiche { @@ -45,7 +46,7 @@ // Removes all tokens in the cache. void ClearCache() { - QuicheWriterMutexLock lock(&mutex_); + absl::WriterMutexLock lock(&mutex_); cached_tokens_.clear(); } @@ -54,13 +55,13 @@ SignedTokenCallback callback, int num_tokens, absl::StatusOr<absl::Span<BlindSignToken>> tokens); std::vector<BlindSignToken> CreateOutputTokens(int num_tokens) - QUICHE_EXCLUSIVE_LOCKS_REQUIRED(mutex_); - void RemoveExpiredTokens() QUICHE_EXCLUSIVE_LOCKS_REQUIRED(mutex_); + ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_); + void RemoveExpiredTokens() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_); BlindSignAuthInterface* blind_sign_auth_; int max_tokens_per_request_; - QuicheMutex mutex_; - QuicheCircularDeque<BlindSignToken> cached_tokens_ QUICHE_GUARDED_BY(mutex_); + absl::Mutex mutex_; + QuicheCircularDeque<BlindSignToken> cached_tokens_ ABSL_GUARDED_BY(mutex_); }; } // namespace quiche
diff --git a/quiche/blind_sign_auth/cached_blind_sign_auth_test.cc b/quiche/blind_sign_auth/cached_blind_sign_auth_test.cc index f353cb6..b84d2f8 100644 --- a/quiche/blind_sign_auth/cached_blind_sign_auth_test.cc +++ b/quiche/blind_sign_auth/cached_blind_sign_auth_test.cc
@@ -14,12 +14,12 @@ #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" +#include "absl/synchronization/notification.h" #include "absl/time/clock.h" #include "absl/time/time.h" #include "absl/types/span.h" #include "quiche/blind_sign_auth/blind_sign_auth_interface.h" #include "quiche/blind_sign_auth/test_tools/mock_blind_sign_auth_interface.h" -#include "quiche/common/platform/api/quiche_mutex.h" #include "quiche/common/platform/api/quiche_test.h" #include "quiche/common/test_tools/quiche_test_utils.h" @@ -79,7 +79,7 @@ }); int num_tokens = 5; - QuicheNotification done; + absl::Notification done; SignedTokenCallback callback = [num_tokens, &done](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -107,7 +107,7 @@ }); int num_tokens = kBlindSignAuthRequestMaxTokens - 1; - QuicheNotification first; + absl::Notification first; SignedTokenCallback first_callback = [num_tokens, &first](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -123,7 +123,7 @@ BlindSignAuthServiceType::kChromeIpBlinding, std::move(first_callback)); first.WaitForNotification(); - QuicheNotification second; + absl::Notification second; SignedTokenCallback second_callback = [num_tokens, &second](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -153,7 +153,7 @@ }); int num_tokens = kBlindSignAuthRequestMaxTokens / 2; - QuicheNotification first; + absl::Notification first; SignedTokenCallback first_callback = [num_tokens, &first](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -169,7 +169,7 @@ BlindSignAuthServiceType::kChromeIpBlinding, std::move(first_callback)); first.WaitForNotification(); - QuicheNotification second; + absl::Notification second; SignedTokenCallback second_callback = [num_tokens, &second](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -198,7 +198,7 @@ }); int num_tokens = kBlindSignAuthRequestMaxTokens / 2; - QuicheNotification first; + absl::Notification first; SignedTokenCallback first_callback = [num_tokens, &first](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -214,7 +214,7 @@ BlindSignAuthServiceType::kChromeIpBlinding, std::move(first_callback)); first.WaitForNotification(); - QuicheNotification second; + absl::Notification second; SignedTokenCallback second_callback = [num_tokens, &second](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { QUICHE_EXPECT_OK(tokens); @@ -231,7 +231,7 @@ BlindSignAuthServiceType::kChromeIpBlinding, std::move(second_callback)); second.WaitForNotification(); - QuicheNotification third; + absl::Notification third; int third_request_tokens = 10; SignedTokenCallback third_callback = [third_request_tokens, @@ -305,7 +305,7 @@ }); int num_tokens = kBlindSignAuthRequestMaxTokens; - QuicheNotification first; + absl::Notification first; SignedTokenCallback first_callback = [&first](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), absl::StatusCode::kInternal); @@ -318,7 +318,7 @@ BlindSignAuthServiceType::kChromeIpBlinding, std::move(first_callback)); first.WaitForNotification(); - QuicheNotification second; + absl::Notification second; SignedTokenCallback second_callback = [&second](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), @@ -360,7 +360,7 @@ }); int num_tokens = kBlindSignAuthRequestMaxTokens; - QuicheNotification first; + absl::Notification first; SignedTokenCallback first_callback = [&first](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), @@ -385,7 +385,7 @@ }); int num_tokens = kBlindSignAuthRequestMaxTokens / 2; - QuicheNotification first; + absl::Notification first; SignedTokenCallback first_callback = [&first](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(), @@ -400,7 +400,7 @@ cached_blind_sign_auth_->ClearCache(); - QuicheNotification second; + absl::Notification second; SignedTokenCallback second_callback = [&second](absl::StatusOr<absl::Span<BlindSignToken>> tokens) { EXPECT_THAT(tokens.status().code(),
diff --git a/quiche/common/platform/api/quiche_mutex.cc b/quiche/common/platform/api/quiche_mutex.cc deleted file mode 100644 index e6d4b0c..0000000 --- a/quiche/common/platform/api/quiche_mutex.cc +++ /dev/null
@@ -1,31 +0,0 @@ -// Copyright (c) 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "quiche/common/platform/api/quiche_mutex.h" - -namespace quiche { - -void QuicheMutex::WriterLock() { impl_.WriterLock(); } - -void QuicheMutex::WriterUnlock() { impl_.WriterUnlock(); } - -void QuicheMutex::ReaderLock() { impl_.ReaderLock(); } - -void QuicheMutex::ReaderUnlock() { impl_.ReaderUnlock(); } - -void QuicheMutex::AssertReaderHeld() const { impl_.AssertReaderHeld(); } - -QuicheReaderMutexLock::QuicheReaderMutexLock(QuicheMutex* lock) : lock_(lock) { - lock->ReaderLock(); -} - -QuicheReaderMutexLock::~QuicheReaderMutexLock() { lock_->ReaderUnlock(); } - -QuicheWriterMutexLock::QuicheWriterMutexLock(QuicheMutex* lock) : lock_(lock) { - lock->WriterLock(); -} - -QuicheWriterMutexLock::~QuicheWriterMutexLock() { lock_->WriterUnlock(); } - -} // namespace quiche
diff --git a/quiche/common/platform/api/quiche_mutex.h b/quiche/common/platform/api/quiche_mutex.h deleted file mode 100644 index 11e6287..0000000 --- a/quiche/common/platform/api/quiche_mutex.h +++ /dev/null
@@ -1,101 +0,0 @@ -// Copyright (c) 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_MUTEX_H_ -#define QUICHE_COMMON_PLATFORM_API_QUICHE_MUTEX_H_ - -#include "quiche_platform_impl/quiche_mutex_impl.h" - -#define QUICHE_EXCLUSIVE_LOCKS_REQUIRED QUICHE_EXCLUSIVE_LOCKS_REQUIRED_IMPL -#define QUICHE_GUARDED_BY QUICHE_GUARDED_BY_IMPL -#define QUICHE_LOCKABLE QUICHE_LOCKABLE_IMPL -#define QUICHE_LOCKS_EXCLUDED QUICHE_LOCKS_EXCLUDED_IMPL -#define QUICHE_SHARED_LOCKS_REQUIRED QUICHE_SHARED_LOCKS_REQUIRED_IMPL -#define QUICHE_EXCLUSIVE_LOCK_FUNCTION QUICHE_EXCLUSIVE_LOCK_FUNCTION_IMPL -#define QUICHE_UNLOCK_FUNCTION QUICHE_UNLOCK_FUNCTION_IMPL -#define QUICHE_SHARED_LOCK_FUNCTION QUICHE_SHARED_LOCK_FUNCTION_IMPL -#define QUICHE_SCOPED_LOCKABLE QUICHE_SCOPED_LOCKABLE_IMPL -#define QUICHE_ASSERT_SHARED_LOCK QUICHE_ASSERT_SHARED_LOCK_IMPL - -namespace quiche { - -// A class representing a non-reentrant mutex in QUIC. -class QUICHE_LOCKABLE QUICHE_EXPORT QuicheMutex { - public: - QuicheMutex() = default; - QuicheMutex(const QuicheMutex&) = delete; - QuicheMutex& operator=(const QuicheMutex&) = delete; - - // Block until this Mutex is free, then acquire it exclusively. - void WriterLock() QUICHE_EXCLUSIVE_LOCK_FUNCTION(); - - // Release this Mutex. Caller must hold it exclusively. - void WriterUnlock() QUICHE_UNLOCK_FUNCTION(); - - // Block until this Mutex is free or shared, then acquire a share of it. - void ReaderLock() QUICHE_SHARED_LOCK_FUNCTION(); - - // Release this Mutex. Caller could hold it in shared mode. - void ReaderUnlock() QUICHE_UNLOCK_FUNCTION(); - - // Returns immediately if current thread holds the Mutex in at least shared - // mode. Otherwise, may report an error (typically by crashing with a - // diagnostic), or may return immediately. - void AssertReaderHeld() const QUICHE_ASSERT_SHARED_LOCK(); - - private: - QuicheLockImpl impl_; -}; - -// A helper class that acquires the given QuicheMutex shared lock while the -// QuicheReaderMutexLock is in scope. -class QUICHE_SCOPED_LOCKABLE QUICHE_EXPORT QuicheReaderMutexLock { - public: - explicit QuicheReaderMutexLock(QuicheMutex* lock) - QUICHE_SHARED_LOCK_FUNCTION(lock); - QuicheReaderMutexLock(const QuicheReaderMutexLock&) = delete; - QuicheReaderMutexLock& operator=(const QuicheReaderMutexLock&) = delete; - - ~QuicheReaderMutexLock() QUICHE_UNLOCK_FUNCTION(); - - private: - QuicheMutex* const lock_; -}; - -// A helper class that acquires the given QuicheMutex exclusive lock while the -// QuicheWriterMutexLock is in scope. -class QUICHE_SCOPED_LOCKABLE QUICHE_EXPORT QuicheWriterMutexLock { - public: - explicit QuicheWriterMutexLock(QuicheMutex* lock) - QUICHE_EXCLUSIVE_LOCK_FUNCTION(lock); - QuicheWriterMutexLock(const QuicheWriterMutexLock&) = delete; - QuicheWriterMutexLock& operator=(const QuicheWriterMutexLock&) = delete; - - ~QuicheWriterMutexLock() QUICHE_UNLOCK_FUNCTION(); - - private: - QuicheMutex* const lock_; -}; - -// A Notification allows threads to receive notification of a single occurrence -// of a single event. -class QUICHE_EXPORT QuicheNotification { - public: - QuicheNotification() = default; - QuicheNotification(const QuicheNotification&) = delete; - QuicheNotification& operator=(const QuicheNotification&) = delete; - - bool HasBeenNotified() { return impl_.HasBeenNotified(); } - - void Notify() { impl_.Notify(); } - - void WaitForNotification() { impl_.WaitForNotification(); } - - private: - QuicheNotificationImpl impl_; -}; - -} // namespace quiche - -#endif // QUICHE_COMMON_PLATFORM_API_QUICHE_MUTEX_H_
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.cc b/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.cc deleted file mode 100644 index 78ca926..0000000 --- a/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.cc +++ /dev/null
@@ -1,15 +0,0 @@ -#include "quiche_platform_impl/quiche_mutex_impl.h" - -namespace quiche { - -void QuicheLockImpl::WriterLock() { mu_.WriterLock(); } - -void QuicheLockImpl::WriterUnlock() { mu_.WriterUnlock(); } - -void QuicheLockImpl::ReaderLock() { mu_.ReaderLock(); } - -void QuicheLockImpl::ReaderUnlock() { mu_.ReaderUnlock(); } - -void QuicheLockImpl::AssertReaderHeld() const { mu_.AssertReaderHeld(); } - -} // namespace quiche
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.h b/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.h deleted file mode 100644 index c6f6655..0000000 --- a/quiche/common/platform/default/quiche_platform_impl/quiche_mutex_impl.h +++ /dev/null
@@ -1,68 +0,0 @@ -#ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_MUTEX_IMPL_H_ -#define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_MUTEX_IMPL_H_ - -#include "absl/synchronization/mutex.h" -#include "absl/synchronization/notification.h" -#include "quiche/common/platform/api/quiche_export.h" - -#define QUICHE_EXCLUSIVE_LOCKS_REQUIRED_IMPL ABSL_EXCLUSIVE_LOCKS_REQUIRED -#define QUICHE_GUARDED_BY_IMPL ABSL_GUARDED_BY -#define QUICHE_LOCKABLE_IMPL ABSL_LOCKABLE -#define QUICHE_LOCKS_EXCLUDED_IMPL ABSL_LOCKS_EXCLUDED -#define QUICHE_SHARED_LOCKS_REQUIRED_IMPL ABSL_SHARED_LOCKS_REQUIRED -#define QUICHE_EXCLUSIVE_LOCK_FUNCTION_IMPL ABSL_EXCLUSIVE_LOCK_FUNCTION -#define QUICHE_UNLOCK_FUNCTION_IMPL ABSL_UNLOCK_FUNCTION -#define QUICHE_SHARED_LOCK_FUNCTION_IMPL ABSL_SHARED_LOCK_FUNCTION -#define QUICHE_SCOPED_LOCKABLE_IMPL ABSL_SCOPED_LOCKABLE -#define QUICHE_ASSERT_SHARED_LOCK_IMPL ABSL_ASSERT_SHARED_LOCK - -namespace quiche { - -// A class wrapping a non-reentrant mutex. -class ABSL_LOCKABLE QUICHE_EXPORT QuicheLockImpl { - public: - QuicheLockImpl() = default; - QuicheLockImpl(const QuicheLockImpl&) = delete; - QuicheLockImpl& operator=(const QuicheLockImpl&) = delete; - - // Block until mu_ is free, then acquire it exclusively. - void WriterLock() ABSL_EXCLUSIVE_LOCK_FUNCTION(); - - // Release mu_. Caller must hold it exclusively. - void WriterUnlock() ABSL_UNLOCK_FUNCTION(); - - // Block until mu_ is free or shared, then acquire a share of it. - void ReaderLock() ABSL_SHARED_LOCK_FUNCTION(); - - // Release mu_. Caller could hold it in shared mode. - void ReaderUnlock() ABSL_UNLOCK_FUNCTION(); - - // Returns immediately if current thread holds mu_ in at least shared - // mode. Otherwise, reports an error by crashing with a diagnostic. - void AssertReaderHeld() const ABSL_ASSERT_SHARED_LOCK(); - - private: - absl::Mutex mu_; -}; - -// A Notification allows threads to receive notification of a single occurrence -// of a single event. -class QUICHE_EXPORT QuicheNotificationImpl { - public: - QuicheNotificationImpl() = default; - QuicheNotificationImpl(const QuicheNotificationImpl&) = delete; - QuicheNotificationImpl& operator=(const QuicheNotificationImpl&) = delete; - - bool HasBeenNotified() { return notification_.HasBeenNotified(); } - - void Notify() { notification_.Notify(); } - - void WaitForNotification() { notification_.WaitForNotification(); } - - private: - absl::Notification notification_; -}; - -} // namespace quiche - -#endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_MUTEX_IMPL_H_
diff --git a/quiche/quic/core/crypto/crypto_secret_boxer.cc b/quiche/quic/core/crypto/crypto_secret_boxer.cc index b51ce6b..e133a7f 100644 --- a/quiche/quic/core/crypto/crypto_secret_boxer.cc +++ b/quiche/quic/core/crypto/crypto_secret_boxer.cc
@@ -11,11 +11,11 @@ #include <vector> #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "openssl/aead.h" #include "openssl/err.h" #include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/platform/api/quic_logging.h" -#include "quiche/common/platform/api/quiche_mutex.h" namespace quic { @@ -68,7 +68,7 @@ new_state->ctxs.push_back(std::move(ctx)); } - quiche::QuicheWriterMutexLock l(&lock_); + absl::WriterMutexLock l(&lock_); state_ = std::move(new_state); return true; } @@ -95,7 +95,7 @@ size_t bytes_written; { - quiche::QuicheReaderMutexLock l(&lock_); + absl::ReaderMutexLock l(&lock_); if (!EVP_AEAD_CTX_seal(state_->ctxs[0].get(), out, &bytes_written, out_len, nonce, kSIVNonceSize, reinterpret_cast<const uint8_t*>(plaintext.data()), @@ -126,7 +126,7 @@ bool ok = false; { - quiche::QuicheReaderMutexLock l(&lock_); + absl::ReaderMutexLock l(&lock_); for (const bssl::UniquePtr<EVP_AEAD_CTX>& ctx : state_->ctxs) { size_t bytes_written; if (EVP_AEAD_CTX_open(ctx.get(),
diff --git a/quiche/quic/core/crypto/crypto_secret_boxer.h b/quiche/quic/core/crypto/crypto_secret_boxer.h index 5b76891..e3c9119 100644 --- a/quiche/quic/core/crypto/crypto_secret_boxer.h +++ b/quiche/quic/core/crypto/crypto_secret_boxer.h
@@ -10,10 +10,11 @@ #include <string> #include <vector> +#include "absl/base/thread_annotations.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/platform/api/quic_export.h" -#include "quiche/common/platform/api/quiche_mutex.h" namespace quic { @@ -55,11 +56,11 @@ private: struct State; - mutable quiche::QuicheMutex lock_; + mutable absl::Mutex lock_; // state_ is an opaque pointer to whatever additional state the concrete // implementation of CryptoSecretBoxer requires. - std::unique_ptr<State> state_ QUICHE_GUARDED_BY(lock_); + std::unique_ptr<State> state_ ABSL_GUARDED_BY(lock_); }; } // namespace quic
diff --git a/quiche/quic/core/crypto/quic_crypto_server_config.cc b/quiche/quic/core/crypto/quic_crypto_server_config.cc index 6c8d52b..fa85ce1 100644 --- a/quiche/quic/core/crypto/quic_crypto_server_config.cc +++ b/quiche/quic/core/crypto/quic_crypto_server_config.cc
@@ -438,7 +438,7 @@ } { - quiche::QuicheWriterMutexLock locked(&configs_lock_); + absl::WriterMutexLock locked(&configs_lock_); if (configs_.find(config->id) != configs_.end()) { QUIC_LOG(WARNING) << "Failed to add config because another with the same " "server config id already exists: " @@ -501,7 +501,7 @@ QUIC_LOG(INFO) << "Updating configs:"; - quiche::QuicheWriterMutexLock locked(&configs_lock_); + absl::WriterMutexLock locked(&configs_lock_); ConfigMap new_configs; for (const quiche::QuicheReferenceCountedPointer<Config>& config : @@ -552,7 +552,7 @@ } std::vector<std::string> QuicCryptoServerConfig::GetConfigIds() const { - quiche::QuicheReaderMutexLock locked(&configs_lock_); + absl::ReaderMutexLock locked(&configs_lock_); std::vector<std::string> scids; for (auto it = configs_.begin(); it != configs_.end(); ++it) { scids.push_back(it->first); @@ -1123,7 +1123,7 @@ const QuicWallTime& now, absl::string_view requested_scid, quiche::QuicheReferenceCountedPointer<Config> old_primary_config, Configs* configs) const { - quiche::QuicheReaderMutexLock locked(&configs_lock_); + absl::ReaderMutexLock locked(&configs_lock_); if (!primary_config_) { return false; @@ -1359,7 +1359,7 @@ std::string serialized; std::string source_address_token; { - quiche::QuicheReaderMutexLock locked(&configs_lock_); + absl::ReaderMutexLock locked(&configs_lock_); serialized = primary_config_->serialized; source_address_token = NewSourceAddressToken( *primary_config_->source_address_token_boxer, @@ -1717,7 +1717,7 @@ void QuicCryptoServerConfig::AcquirePrimaryConfigChangedCb( std::unique_ptr<PrimaryConfigChangedCallback> cb) { - quiche::QuicheWriterMutexLock locked(&configs_lock_); + absl::WriterMutexLock locked(&configs_lock_); primary_config_changed_cb_ = std::move(cb); } @@ -1758,7 +1758,7 @@ } int QuicCryptoServerConfig::NumberOfConfigs() const { - quiche::QuicheReaderMutexLock locked(&configs_lock_); + absl::ReaderMutexLock locked(&configs_lock_); return configs_.size(); }
diff --git a/quiche/quic/core/crypto/quic_crypto_server_config.h b/quiche/quic/core/crypto/quic_crypto_server_config.h index 30875a6..1692cea 100644 --- a/quiche/quic/core/crypto/quic_crypto_server_config.h +++ b/quiche/quic/core/crypto/quic_crypto_server_config.h
@@ -12,7 +12,9 @@ #include <string> #include <vector> +#include "absl/base/thread_annotations.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "openssl/base.h" #include "quiche/quic/core/crypto/crypto_handshake.h" #include "quiche/quic/core/crypto/crypto_handshake_message.h" @@ -28,7 +30,6 @@ #include "quiche/quic/core/quic_time.h" #include "quiche/quic/platform/api/quic_export.h" #include "quiche/quic/platform/api/quic_socket_address.h" -#include "quiche/common/platform/api/quiche_mutex.h" #include "quiche/common/platform/api/quiche_reference_counted.h" namespace quic { @@ -539,7 +540,7 @@ // Get a ref to the config with a given server config id. quiche::QuicheReferenceCountedPointer<Config> GetConfigWithScid( absl::string_view requested_scid) const - QUICHE_SHARED_LOCKS_REQUIRED(configs_lock_); + ABSL_SHARED_LOCKS_REQUIRED(configs_lock_); // A snapshot of the configs associated with an in-progress handshake. struct QUICHE_EXPORT Configs { @@ -568,7 +569,7 @@ // SelectNewPrimaryConfig reevaluates the primary config based on the // "primary_time" deadlines contained in each. void SelectNewPrimaryConfig(QuicWallTime now) const - QUICHE_EXCLUSIVE_LOCKS_REQUIRED(configs_lock_); + ABSL_EXCLUSIVE_LOCKS_REQUIRED(configs_lock_); // EvaluateClientHello checks |client_hello_state->client_hello| for gross // errors and determines whether it is fresh (i.e. not a replay). The results @@ -843,7 +844,7 @@ // Returns true if the next config promotion should happen now. bool IsNextConfigReady(QuicWallTime now) const - QUICHE_SHARED_LOCKS_REQUIRED(configs_lock_); + ABSL_SHARED_LOCKS_REQUIRED(configs_lock_); // replay_protection_ controls whether the server enforces that handshakes // aren't replays. @@ -858,16 +859,16 @@ // 1) configs_.empty() <-> primary_config_ == nullptr // 2) primary_config_ != nullptr -> primary_config_->is_primary // 3) ∀ c∈configs_, c->is_primary <-> c == primary_config_ - mutable quiche::QuicheMutex configs_lock_; + mutable absl::Mutex configs_lock_; // configs_ contains all active server configs. It's expected that there are // about half-a-dozen configs active at any one time. - ConfigMap configs_ QUICHE_GUARDED_BY(configs_lock_); + ConfigMap configs_ ABSL_GUARDED_BY(configs_lock_); // primary_config_ points to a Config (which is also in |configs_|) which is // the primary config - i.e. the one that we'll give out to new clients. mutable quiche::QuicheReferenceCountedPointer<Config> primary_config_ - QUICHE_GUARDED_BY(configs_lock_); + ABSL_GUARDED_BY(configs_lock_); // fallback_config_ points to a Config (which is also in |configs_|) which is // the fallback config, which will be used if the other configs are unuseable @@ -875,16 +876,16 @@ // // TODO(b/112548056): This is currently always nullptr. quiche::QuicheReferenceCountedPointer<Config> fallback_config_ - QUICHE_GUARDED_BY(configs_lock_); + ABSL_GUARDED_BY(configs_lock_); // next_config_promotion_time_ contains the nearest, future time when an // active config will be promoted to primary. mutable QuicWallTime next_config_promotion_time_ - QUICHE_GUARDED_BY(configs_lock_); + ABSL_GUARDED_BY(configs_lock_); // Callback to invoke when the primary config changes. std::unique_ptr<PrimaryConfigChangedCallback> primary_config_changed_cb_ - QUICHE_GUARDED_BY(configs_lock_); + ABSL_GUARDED_BY(configs_lock_); // Used to protect the source-address tokens that are given to clients. CryptoSecretBoxer source_address_token_boxer_;
diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc index 05715e8..2ee4d33 100644 --- a/quiche/quic/core/http/end_to_end_test.cc +++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -16,6 +16,7 @@ #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/notification.h" #include "absl/time/clock.h" #include "absl/time/time.h" #include "absl/types/span.h" @@ -7742,7 +7743,7 @@ ASSERT_TRUE(Initialize()); const uint32_t server_flow_label = 2; - quiche::QuicheNotification set; + absl::Notification set; server_thread_->Schedule([this, &set]() { QuicConnection* server_connection = GetServerConnection(); if (server_connection != nullptr) {
diff --git a/quiche/quic/core/io/event_loop_connecting_client_socket_test.cc b/quiche/quic/core/io/event_loop_connecting_client_socket_test.cc index f195d9d..f5583b5 100644 --- a/quiche/quic/core/io/event_loop_connecting_client_socket_test.cc +++ b/quiche/quic/core/io/event_loop_connecting_client_socket_test.cc
@@ -15,6 +15,7 @@ #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/notification.h" #include "absl/types/span.h" #include "quiche/quic/core/connecting_client_socket.h" #include "quiche/quic/core/io/event_loop_socket_factory.h" @@ -28,7 +29,6 @@ #include "quiche/quic/test_tools/quic_test_utils.h" #include "quiche/common/platform/api/quiche_logging.h" #include "quiche/common/platform/api/quiche_mem_slice.h" -#include "quiche/common/platform/api/quiche_mutex.h" #include "quiche/common/platform/api/quiche_test.h" #include "quiche/common/platform/api/quiche_test_loopback.h" #include "quiche/common/platform/api/quiche_thread.h" @@ -63,7 +63,7 @@ const SocketBehavior& behavior() const { return behavior_; } - quiche::QuicheNotification& completion_notification() { + absl::Notification& completion_notification() { return completion_notification_; } @@ -71,7 +71,7 @@ const SocketFd server_socket_descriptor_; const SocketBehavior behavior_; - quiche::QuicheNotification completion_notification_; + absl::Notification completion_notification_; }; class TestTcpServerSocketRunner : public TestServerSocketRunner {
diff --git a/quiche/quic/platform/api/quic_mutex.h b/quiche/quic/platform/api/quic_mutex.h deleted file mode 100644 index ac42b5a..0000000 --- a/quiche/quic/platform/api/quic_mutex.h +++ /dev/null
@@ -1,29 +0,0 @@ -// Copyright (c) 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// TODO(b/178613777): Remove this file. - -#ifndef QUICHE_QUIC_PLATFORM_API_QUIC_MUTEX_H_ -#define QUICHE_QUIC_PLATFORM_API_QUIC_MUTEX_H_ - -#include "quiche/common/platform/api/quiche_mutex.h" - -#define QUIC_EXCLUSIVE_LOCKS_REQUIRED QUICHE_EXCLUSIVE_LOCKS_REQUIRED -#define QUIC_LOCKABLE QUICHE_LOCKABLE -#define QUIC_LOCKS_EXCLUDED QUICHE_LOCKS_EXCLUDED -#define QUIC_EXCLUSIVE_LOCK_FUNCTION QUICHE_EXCLUSIVE_LOCK_FUNCTION -#define QUIC_UNLOCK_FUNCTION QUICHE_UNLOCK_FUNCTION -#define QUIC_SHARED_LOCK_FUNCTION QUICHE_SHARED_LOCK_FUNCTION -#define QUIC_SCOPED_LOCKABLE QUICHE_SCOPED_LOCKABLE -#define QUIC_ASSERT_SHARED_LOCK QUICHE_ASSERT_SHARED_LOCK - -namespace quic { - -using QuicMutex = quiche::QuicheMutex; -using QuicWriterMutexLock = quiche::QuicheWriterMutexLock; -using QuicNotification = quiche::QuicheNotification; - -} // namespace quic - -#endif // QUICHE_QUIC_PLATFORM_API_QUIC_MUTEX_H_
diff --git a/quiche/quic/qbone/bonnet/icmp_reachable.cc b/quiche/quic/qbone/bonnet/icmp_reachable.cc index 54002e4..5b6c212 100644 --- a/quiche/quic/qbone/bonnet/icmp_reachable.cc +++ b/quiche/quic/qbone/bonnet/icmp_reachable.cc
@@ -103,7 +103,7 @@ } alarm_->Set(clock_->Now()); - quiche::QuicheWriterMutexLock mu(&header_lock_); + absl::WriterMutexLock mu(&header_lock_); icmp_header_.icmp6_type = ICMP6_ECHO_REQUEST; icmp_header_.icmp6_code = 0; @@ -134,7 +134,7 @@ absl::string_view(buffer, size)); auto* header = reinterpret_cast<const icmp6_hdr*>(&buffer); - quiche::QuicheWriterMutexLock mu(&header_lock_); + absl::WriterMutexLock mu(&header_lock_); if (header->icmp6_data32[0] != icmp_header_.icmp6_data32[0]) { QUIC_VLOG(2) << "Unexpected response. id: " << header->icmp6_id << " seq: " << header->icmp6_seq @@ -159,7 +159,7 @@ } void IcmpReachable::OnAlarm() { - quiche::QuicheWriterMutexLock mu(&header_lock_); + absl::WriterMutexLock mu(&header_lock_); if (end_ < start_) { QUIC_VLOG(1) << "Timed out on sequence: " << icmp_header_.icmp6_seq;
diff --git a/quiche/quic/qbone/bonnet/icmp_reachable.h b/quiche/quic/qbone/bonnet/icmp_reachable.h index d706c9b..89e15aa 100644 --- a/quiche/quic/qbone/bonnet/icmp_reachable.h +++ b/quiche/quic/qbone/bonnet/icmp_reachable.h
@@ -9,7 +9,9 @@ #include <memory> +#include "absl/base/thread_annotations.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "quiche/quic/core/io/quic_event_loop.h" #include "quiche/quic/core/quic_alarm.h" #include "quiche/quic/core/quic_alarm_factory.h" @@ -18,7 +20,6 @@ #include "quiche/quic/platform/api/quic_ip_address.h" #include "quiche/quic/qbone/bonnet/icmp_reachable_interface.h" #include "quiche/quic/qbone/platform/kernel_interface.h" -#include "quiche/common/platform/api/quiche_mutex.h" namespace quic { @@ -79,9 +80,9 @@ // Initializes this reachability probe. Must be called from within the // |epoll_server|'s thread. - bool Init() QUICHE_LOCKS_EXCLUDED(header_lock_) override; + bool Init() ABSL_LOCKS_EXCLUDED(header_lock_) override; - void OnAlarm() QUICHE_LOCKS_EXCLUDED(header_lock_); + void OnAlarm() ABSL_LOCKS_EXCLUDED(header_lock_); static absl::string_view StatusName(Status status); @@ -113,7 +114,7 @@ IcmpReachable* reachable_; }; - bool OnEvent(int fd) QUICHE_LOCKS_EXCLUDED(header_lock_); + bool OnEvent(int fd) ABSL_LOCKS_EXCLUDED(header_lock_); const QuicTime::Delta timeout_; @@ -134,8 +135,8 @@ int send_fd_; int recv_fd_; - quiche::QuicheMutex header_lock_; - icmp6_hdr icmp_header_ QUICHE_GUARDED_BY(header_lock_){}; + absl::Mutex header_lock_; + icmp6_hdr icmp_header_ ABSL_GUARDED_BY(header_lock_){}; QuicTime start_ = QuicTime::Zero(); QuicTime end_ = QuicTime::Zero();
diff --git a/quiche/quic/qbone/qbone_client_test.cc b/quiche/quic/qbone/qbone_client_test.cc index d7ea860..d986477 100644 --- a/quiche/quic/qbone/qbone_client_test.cc +++ b/quiche/quic/qbone/qbone_client_test.cc
@@ -12,6 +12,7 @@ #include <vector> #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "quiche/quic/core/io/quic_default_event_loop.h" #include "quiche/quic/core/io/quic_event_loop.h" #include "quiche/quic/core/quic_alarm_factory.h" @@ -57,17 +58,17 @@ class DataSavingQbonePacketWriter : public QbonePacketWriter { public: void WritePacketToNetwork(const char* packet, size_t size) override { - quiche::QuicheWriterMutexLock lock(&mu_); + absl::WriterMutexLock lock(&mu_); data_.push_back(std::string(packet, size)); } std::vector<std::string> data() { - quiche::QuicheWriterMutexLock lock(&mu_); + absl::WriterMutexLock lock(&mu_); return data_; } private: - quiche::QuicheMutex mu_; + absl::Mutex mu_; std::vector<std::string> data_; };
diff --git a/quiche/quic/test_tools/packet_dropping_test_writer.cc b/quiche/quic/test_tools/packet_dropping_test_writer.cc index a16cda7..5912910 100644 --- a/quiche/quic/test_tools/packet_dropping_test_writer.cc +++ b/quiche/quic/test_tools/packet_dropping_test_writer.cc
@@ -97,7 +97,7 @@ ++num_calls_to_write_; ReleaseOldPackets(); - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); if (passthrough_for_next_n_packets_ > 0) { --passthrough_for_next_n_packets_; return QuicPacketWriterWrapper::WritePacket(buffer, buf_len, self_address, @@ -201,7 +201,7 @@ if (delayed_packets_.empty()) { return QuicTime::Zero(); } - quiche::QuicheReaderMutexLock lock(&config_mutex_); + absl::ReaderMutexLock lock(&config_mutex_); auto iter = delayed_packets_.begin(); // Determine if we should re-order. if (delayed_packets_.size() > 1 && fake_packet_reorder_percentage_ > 0 &&
diff --git a/quiche/quic/test_tools/packet_dropping_test_writer.h b/quiche/quic/test_tools/packet_dropping_test_writer.h index 84bfcfa..6a72795 100644 --- a/quiche/quic/test_tools/packet_dropping_test_writer.h +++ b/quiche/quic/test_tools/packet_dropping_test_writer.h
@@ -10,13 +10,14 @@ #include <memory> #include "absl/base/attributes.h" +#include "absl/base/thread_annotations.h" +#include "absl/synchronization/mutex.h" #include "quiche/quic/core/quic_alarm.h" #include "quiche/quic/core/quic_alarm_factory.h" #include "quiche/quic/core/quic_clock.h" #include "quiche/quic/core/quic_connection.h" #include "quiche/quic/core/quic_packet_writer_wrapper.h" #include "quiche/quic/test_tools/quic_test_utils.h" -#include "quiche/common/platform/api/quiche_mutex.h" namespace quic { namespace test { @@ -80,7 +81,7 @@ // |fake_packet_loss_percentage|, because every dropped package is followed by // a minimum number of successfully written packets. void set_fake_packet_loss_percentage(int32_t fake_packet_loss_percentage) { - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); fake_packet_loss_percentage_ = fake_packet_loss_percentage; } @@ -89,14 +90,14 @@ // simulated error conditions. void set_passthrough_for_next_n_packets( uint32_t passthrough_for_next_n_packets) { - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); passthrough_for_next_n_packets_ = passthrough_for_next_n_packets; } // Simulate dropping the first n packets unconditionally. // Subsequent packets will be lost at fake_packet_loss_percentage_ if set. void set_fake_drop_first_n_packets(int32_t fake_drop_first_n_packets) { - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); fake_drop_first_n_packets_ = fake_drop_first_n_packets; } @@ -105,14 +106,14 @@ void set_fake_blocked_socket_percentage( int32_t fake_blocked_socket_percentage) { QUICHE_DCHECK(clock_); - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); fake_blocked_socket_percentage_ = fake_blocked_socket_percentage; } // The percent of time a packet is simulated as being reordered. void set_fake_reorder_percentage(int32_t fake_packet_reorder_percentage) { QUICHE_DCHECK(clock_); - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); QUICHE_DCHECK(!fake_packet_delay_.IsZero()); fake_packet_reorder_percentage_ = fake_packet_reorder_percentage; } @@ -120,7 +121,7 @@ // The delay before writing this packet. void set_fake_packet_delay(QuicTime::Delta fake_packet_delay) { QUICHE_DCHECK(clock_); - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); fake_packet_delay_ = fake_packet_delay; } @@ -131,7 +132,7 @@ void set_max_bandwidth_and_buffer_size(QuicBandwidth fake_bandwidth, QuicByteCount buffer_size) { QUICHE_DCHECK(clock_); - quiche::QuicheWriterMutexLock lock(&config_mutex_); + absl::WriterMutexLock lock(&config_mutex_); fake_bandwidth_ = fake_bandwidth; buffer_size_ = buffer_size; } @@ -179,17 +180,17 @@ DelayedPacketList delayed_packets_; QuicByteCount cur_buffer_size_; uint64_t num_calls_to_write_; - uint32_t passthrough_for_next_n_packets_ QUICHE_GUARDED_BY(config_mutex_); + uint32_t passthrough_for_next_n_packets_ ABSL_GUARDED_BY(config_mutex_); int32_t num_consecutive_succesful_writes_; - quiche::QuicheMutex config_mutex_; - int32_t fake_packet_loss_percentage_ QUICHE_GUARDED_BY(config_mutex_); - int32_t fake_drop_first_n_packets_ QUICHE_GUARDED_BY(config_mutex_); - int32_t fake_blocked_socket_percentage_ QUICHE_GUARDED_BY(config_mutex_); - int32_t fake_packet_reorder_percentage_ QUICHE_GUARDED_BY(config_mutex_); - QuicTime::Delta fake_packet_delay_ QUICHE_GUARDED_BY(config_mutex_); - QuicBandwidth fake_bandwidth_ QUICHE_GUARDED_BY(config_mutex_); - QuicByteCount buffer_size_ QUICHE_GUARDED_BY(config_mutex_); + absl::Mutex config_mutex_; + int32_t fake_packet_loss_percentage_ ABSL_GUARDED_BY(config_mutex_); + int32_t fake_drop_first_n_packets_ ABSL_GUARDED_BY(config_mutex_); + int32_t fake_blocked_socket_percentage_ ABSL_GUARDED_BY(config_mutex_); + int32_t fake_packet_reorder_percentage_ ABSL_GUARDED_BY(config_mutex_); + QuicTime::Delta fake_packet_delay_ ABSL_GUARDED_BY(config_mutex_); + QuicBandwidth fake_bandwidth_ ABSL_GUARDED_BY(config_mutex_); + QuicByteCount buffer_size_ ABSL_GUARDED_BY(config_mutex_); }; } // namespace test
diff --git a/quiche/quic/test_tools/quic_crypto_server_config_peer.cc b/quiche/quic/test_tools/quic_crypto_server_config_peer.cc index b8a6280..7179ca4 100644 --- a/quiche/quic/test_tools/quic_crypto_server_config_peer.cc +++ b/quiche/quic/test_tools/quic_crypto_server_config_peer.cc
@@ -19,14 +19,14 @@ quiche::QuicheReferenceCountedPointer<QuicCryptoServerConfig::Config> QuicCryptoServerConfigPeer::GetPrimaryConfig() { - quiche::QuicheReaderMutexLock locked(&server_config_->configs_lock_); + absl::ReaderMutexLock locked(&server_config_->configs_lock_); return quiche::QuicheReferenceCountedPointer<QuicCryptoServerConfig::Config>( server_config_->primary_config_); } quiche::QuicheReferenceCountedPointer<QuicCryptoServerConfig::Config> QuicCryptoServerConfigPeer::GetConfig(std::string config_id) { - quiche::QuicheReaderMutexLock locked(&server_config_->configs_lock_); + absl::ReaderMutexLock locked(&server_config_->configs_lock_); if (config_id == "<primary>") { return quiche::QuicheReferenceCountedPointer< QuicCryptoServerConfig::Config>(server_config_->primary_config_); @@ -83,7 +83,7 @@ void QuicCryptoServerConfigPeer::CheckConfigs( std::vector<std::pair<std::string, bool>> expected_ids_and_status) { - quiche::QuicheReaderMutexLock locked(&server_config_->configs_lock_); + absl::ReaderMutexLock locked(&server_config_->configs_lock_); ASSERT_EQ(expected_ids_and_status.size(), server_config_->configs_.size()) << ConfigsDebug(); @@ -132,7 +132,7 @@ } void QuicCryptoServerConfigPeer::SelectNewPrimaryConfig(int seconds) { - quiche::QuicheWriterMutexLock locked(&server_config_->configs_lock_); + absl::WriterMutexLock locked(&server_config_->configs_lock_); server_config_->SelectNewPrimaryConfig( QuicWallTime::FromUNIXSeconds(seconds)); }
diff --git a/quiche/quic/test_tools/quic_crypto_server_config_peer.h b/quiche/quic/test_tools/quic_crypto_server_config_peer.h index fe9f32c..477b0a6 100644 --- a/quiche/quic/test_tools/quic_crypto_server_config_peer.h +++ b/quiche/quic/test_tools/quic_crypto_server_config_peer.h
@@ -5,6 +5,7 @@ #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_CRYPTO_SERVER_CONFIG_PEER_H_ #define QUICHE_QUIC_TEST_TOOLS_QUIC_CRYPTO_SERVER_CONFIG_PEER_H_ +#include "absl/base/thread_annotations.h" #include "absl/strings/string_view.h" #include "quiche/quic/core/crypto/quic_crypto_server_config.h" @@ -65,7 +66,7 @@ // ConfigsDebug returns a std::string that contains debugging information // about the set of Configs loaded in |server_config_| and their status. std::string ConfigsDebug() - QUICHE_SHARED_LOCKS_REQUIRED(server_config_->configs_lock_); + ABSL_SHARED_LOCKS_REQUIRED(server_config_->configs_lock_); void SelectNewPrimaryConfig(int seconds);
diff --git a/quiche/quic/test_tools/quic_test_server.cc b/quiche/quic/test_tools/quic_test_server.cc index 9ef1368..09795f7 100644 --- a/quiche/quic/test_tools/quic_test_server.cc +++ b/quiche/quic/test_tools/quic_test_server.cc
@@ -9,6 +9,7 @@ #include "absl/memory/memory.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "quiche/quic/core/connection_id_generator.h" #include "quiche/quic/core/io/quic_default_event_loop.h" #include "quiche/quic/core/quic_default_connection_helper.h" @@ -94,7 +95,7 @@ const ParsedQuicVersion& version, const ParsedClientHello& /*parsed_chlo*/, ConnectionIdGeneratorInterface& connection_id_generator) override { - quiche::QuicheReaderMutexLock lock(&factory_lock_); + absl::ReaderMutexLock lock(&factory_lock_); // The QuicServerSessionBase takes ownership of |connection| below. QuicConnection* connection = new QuicConnection( id, self_address, peer_address, helper(), alarm_factory(), writer(), @@ -130,7 +131,7 @@ } void SetSessionFactory(QuicTestServer::SessionFactory* factory) { - quiche::QuicheWriterMutexLock lock(&factory_lock_); + absl::WriterMutexLock lock(&factory_lock_); QUICHE_DCHECK(session_factory_ == nullptr); QUICHE_DCHECK(stream_factory_ == nullptr); QUICHE_DCHECK(crypto_stream_factory_ == nullptr); @@ -138,21 +139,21 @@ } void SetStreamFactory(QuicTestServer::StreamFactory* factory) { - quiche::QuicheWriterMutexLock lock(&factory_lock_); + absl::WriterMutexLock lock(&factory_lock_); QUICHE_DCHECK(session_factory_ == nullptr); QUICHE_DCHECK(stream_factory_ == nullptr); stream_factory_ = factory; } void SetCryptoStreamFactory(QuicTestServer::CryptoStreamFactory* factory) { - quiche::QuicheWriterMutexLock lock(&factory_lock_); + absl::WriterMutexLock lock(&factory_lock_); QUICHE_DCHECK(session_factory_ == nullptr); QUICHE_DCHECK(crypto_stream_factory_ == nullptr); crypto_stream_factory_ = factory; } private: - quiche::QuicheMutex factory_lock_; + absl::Mutex factory_lock_; QuicTestServer::SessionFactory* session_factory_; // Not owned. QuicTestServer::StreamFactory* stream_factory_; // Not owned. QuicTestServer::CryptoStreamFactory* crypto_stream_factory_; // Not owned.
diff --git a/quiche/quic/test_tools/quic_test_utils.h b/quiche/quic/test_tools/quic_test_utils.h index f2fe5a5..90d9be4 100644 --- a/quiche/quic/test_tools/quic_test_utils.h +++ b/quiche/quic/test_tools/quic_test_utils.h
@@ -17,6 +17,7 @@ #include "absl/strings/ascii.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "quiche/quic/core/congestion_control/loss_detection_interface.h" #include "quiche/quic/core/congestion_control/send_algorithm_interface.h" #include "quiche/quic/core/crypto/transport_parameters.h" @@ -2082,7 +2083,7 @@ const QuicSocketAddress& peer_address, PerPacketOptions* options, const QuicPacketWriterParams& params) override { - quiche::QuicheReaderMutexLock lock(&mutex_); + absl::ReaderMutexLock lock(&mutex_); QUIC_LOG(ERROR) << "DroppingPacketsWithSpecificDestinationWriter::" "WritePacket with peer address " << peer_address.ToString() << " and peer_address_to_drop_ " @@ -2098,12 +2099,12 @@ } void set_peer_address_to_drop(const QuicSocketAddress& peer_address) { - quiche::QuicheWriterMutexLock lock(&mutex_); + absl::WriterMutexLock lock(&mutex_); peer_address_to_drop_ = peer_address; } private: - quiche::QuicheMutex mutex_; + absl::Mutex mutex_; QuicSocketAddress peer_address_to_drop_ ABSL_GUARDED_BY(mutex_); };
diff --git a/quiche/quic/test_tools/server_thread.cc b/quiche/quic/test_tools/server_thread.cc index dfa1098..c80bff8 100644 --- a/quiche/quic/test_tools/server_thread.cc +++ b/quiche/quic/test_tools/server_thread.cc
@@ -7,12 +7,13 @@ #include <memory> #include <utility> +#include "absl/synchronization/mutex.h" +#include "absl/synchronization/notification.h" #include "quiche/quic/core/quic_default_clock.h" #include "quiche/quic/core/quic_dispatcher.h" #include "quiche/quic/test_tools/crypto_test_utils.h" #include "quiche/quic/test_tools/quic_dispatcher_peer.h" #include "quiche/quic/test_tools/quic_server_peer.h" -#include "quiche/common/platform/api/quiche_mutex.h" #include "quiche/common/quiche_callbacks.h" namespace quic { @@ -37,7 +38,7 @@ return; } - quiche::QuicheWriterMutexLock lock(&port_lock_); + absl::WriterMutexLock lock(&port_lock_); port_ = server_->port(); initialized_ = true; @@ -62,20 +63,20 @@ } int ServerThread::GetPort() { - quiche::QuicheReaderMutexLock lock(&port_lock_); + absl::ReaderMutexLock lock(&port_lock_); int rc = port_; return rc; } void ServerThread::Schedule(quiche::SingleUseCallback<void()> action) { QUICHE_DCHECK(!quit_.HasBeenNotified()); - quiche::QuicheWriterMutexLock lock(&scheduled_actions_lock_); + absl::WriterMutexLock lock(&scheduled_actions_lock_); scheduled_actions_.push_back(std::move(action)); } void ServerThread::ScheduleAndWaitForCompletion( quiche::SingleUseCallback<void()> action) { - quiche::QuicheNotification action_done; + absl::Notification action_done; Schedule([&] { std::move(action)(); action_done.Notify(); @@ -92,7 +93,7 @@ QuicTime::Delta timeout) { const QuicTime deadline = clock_->Now() + timeout; while (clock_->Now() < deadline) { - quiche::QuicheNotification done_checking; + absl::Notification done_checking; bool should_terminate = false; Schedule([&] { should_terminate = termination_predicate(); @@ -146,7 +147,7 @@ void ServerThread::ExecuteScheduledActions() { quiche::QuicheCircularDeque<quiche::SingleUseCallback<void()>> actions; { - quiche::QuicheWriterMutexLock lock(&scheduled_actions_lock_); + absl::WriterMutexLock lock(&scheduled_actions_lock_); actions.swap(scheduled_actions_); } while (!actions.empty()) {
diff --git a/quiche/quic/test_tools/server_thread.h b/quiche/quic/test_tools/server_thread.h index b3d0f8d..3b55dd9 100644 --- a/quiche/quic/test_tools/server_thread.h +++ b/quiche/quic/test_tools/server_thread.h
@@ -7,11 +7,13 @@ #include <memory> +#include "absl/base/thread_annotations.h" +#include "absl/synchronization/mutex.h" +#include "absl/synchronization/notification.h" #include "quiche/quic/core/quic_config.h" #include "quiche/quic/platform/api/quic_socket_address.h" #include "quiche/quic/platform/api/quic_thread.h" #include "quiche/quic/tools/quic_server.h" -#include "quiche/common/platform/api/quiche_mutex.h" #include "quiche/common/quiche_callbacks.h" namespace quic { @@ -74,25 +76,24 @@ void MaybeNotifyOfHandshakeConfirmation(); void ExecuteScheduledActions(); - quiche::QuicheNotification - confirmed_; // Notified when the first handshake is confirmed. - quiche::QuicheNotification pause_; // Notified when the server should pause. - quiche::QuicheNotification paused_; // Notitied when the server has paused - quiche::QuicheNotification - resume_; // Notified when the server should resume. - quiche::QuicheNotification quit_; // Notified when the server should quit. + absl::Notification + confirmed_; // Notified when the first handshake is confirmed. + absl::Notification pause_; // Notified when the server should pause. + absl::Notification paused_; // Notitied when the server has paused + absl::Notification resume_; // Notified when the server should resume. + absl::Notification quit_; // Notified when the server should quit. std::unique_ptr<QuicServer> server_; QuicClock* clock_; QuicSocketAddress address_; - mutable quiche::QuicheMutex port_lock_; - int port_ QUICHE_GUARDED_BY(port_lock_); + mutable absl::Mutex port_lock_; + int port_ ABSL_GUARDED_BY(port_lock_); bool initialized_; - quiche::QuicheMutex scheduled_actions_lock_; + absl::Mutex scheduled_actions_lock_; quiche::QuicheCircularDeque<quiche::SingleUseCallback<void()>> - scheduled_actions_ QUICHE_GUARDED_BY(scheduled_actions_lock_); + scheduled_actions_ ABSL_GUARDED_BY(scheduled_actions_lock_); }; } // namespace test
diff --git a/quiche/quic/tools/quic_memory_cache_backend.cc b/quiche/quic/tools/quic_memory_cache_backend.cc index 92c25e0..5290636 100644 --- a/quiche/quic/tools/quic_memory_cache_backend.cc +++ b/quiche/quic/tools/quic_memory_cache_backend.cc
@@ -14,6 +14,7 @@ #include "absl/strings/numbers.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "quiche/quic/core/http/spdy_utils.h" #include "quiche/quic/platform/api/quic_bug_tracker.h" #include "quiche/quic/platform/api/quic_logging.h" @@ -130,7 +131,7 @@ const QuicBackendResponse* QuicMemoryCacheBackend::GetResponse( absl::string_view host, absl::string_view path) const { - quiche::QuicheWriterMutexLock lock(&response_mutex_); + absl::WriterMutexLock lock(&response_mutex_); auto it = responses_.find(GetKey(host, path)); if (it == responses_.end()) { @@ -166,7 +167,7 @@ } void QuicMemoryCacheBackend::AddDefaultResponse(QuicBackendResponse* response) { - quiche::QuicheWriterMutexLock lock(&response_mutex_); + absl::WriterMutexLock lock(&response_mutex_); default_response_.reset(response); } @@ -193,7 +194,7 @@ bool QuicMemoryCacheBackend::SetResponseDelay(absl::string_view host, absl::string_view path, QuicTime::Delta delay) { - quiche::QuicheWriterMutexLock lock(&response_mutex_); + absl::WriterMutexLock lock(&response_mutex_); auto it = responses_.find(GetKey(host, path)); if (it == responses_.end()) return false; @@ -271,7 +272,7 @@ } void QuicMemoryCacheBackend::GenerateDynamicResponses() { - quiche::QuicheWriterMutexLock lock(&response_mutex_); + absl::WriterMutexLock lock(&response_mutex_); // Add a generate bytes response. quiche::HttpHeaderBlock response_headers; response_headers[":status"] = "200"; @@ -362,7 +363,7 @@ QuicMemoryCacheBackend::~QuicMemoryCacheBackend() { { - quiche::QuicheWriterMutexLock lock(&response_mutex_); + absl::WriterMutexLock lock(&response_mutex_); responses_.clear(); } } @@ -372,7 +373,7 @@ SpecialResponseType response_type, HttpHeaderBlock response_headers, absl::string_view response_body, HttpHeaderBlock response_trailers, const std::vector<quiche::HttpHeaderBlock>& early_hints) { - quiche::QuicheWriterMutexLock lock(&response_mutex_); + absl::WriterMutexLock lock(&response_mutex_); QUICHE_DCHECK(!host.empty()) << "Host must be populated, e.g. \"www.google.com\"";
diff --git a/quiche/quic/tools/quic_memory_cache_backend.h b/quiche/quic/tools/quic_memory_cache_backend.h index 33c7f8a..409290b 100644 --- a/quiche/quic/tools/quic_memory_cache_backend.h +++ b/quiche/quic/tools/quic_memory_cache_backend.h
@@ -10,14 +10,15 @@ #include <memory> #include <vector> +#include "absl/base/thread_annotations.h" #include "absl/container/flat_hash_map.h" #include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" #include "quiche/http2/core/spdy_framer.h" #include "quiche/quic/core/http/spdy_utils.h" #include "quiche/quic/tools/quic_backend_response.h" #include "quiche/quic/tools/quic_simple_server_backend.h" #include "quiche/common/http/http_header_block.h" -#include "quiche/common/platform/api/quiche_mutex.h" namespace quic { @@ -153,19 +154,19 @@ // Cached responses. absl::flat_hash_map<std::string, std::unique_ptr<QuicBackendResponse>> - responses_ QUICHE_GUARDED_BY(response_mutex_); + responses_ ABSL_GUARDED_BY(response_mutex_); // The default response for cache misses, if set. std::unique_ptr<QuicBackendResponse> default_response_ - QUICHE_GUARDED_BY(response_mutex_); + ABSL_GUARDED_BY(response_mutex_); // The generate bytes response, if set. std::unique_ptr<QuicBackendResponse> generate_bytes_response_ - QUICHE_GUARDED_BY(response_mutex_); + ABSL_GUARDED_BY(response_mutex_); // Protects against concurrent access from test threads setting responses, and // server threads accessing those responses. - mutable quiche::QuicheMutex response_mutex_; + mutable absl::Mutex response_mutex_; bool cache_initialized_; bool enable_webtransport_ = false;