Fix data race problem caused by a simulated_clock

PiperOrigin-RevId: 525540869
This commit is contained in:
hai007
2023-04-19 13:49:53 -07:00
committed by Copybara-Service
parent 7f227a5205
commit b80a710fb0
2 changed files with 7 additions and 2 deletions
+6 -1
View File
@@ -50,6 +50,7 @@ void MediumEnvironment::Start(EnvironmentConfig config) {
NEARBY_LOGS(INFO) << "MediumEnvironment::Start()";
config_ = std::move(config);
if (config_.use_simulated_clock) {
MutexLock lock(&mutex_);
simulated_clock_ = std::make_unique<FakeClock>();
}
Reset();
@@ -60,8 +61,11 @@ void MediumEnvironment::Stop() {
if (enabled_.exchange(false)) {
NEARBY_LOGS(INFO) << "MediumEnvironment::Stop()";
Sync(false);
if (config_.use_simulated_clock) {
MutexLock lock(&mutex_);
simulated_clock_.reset();
}
config_ = {};
simulated_clock_.reset();
}
}
@@ -1205,6 +1209,7 @@ void MediumEnvironment::SetFeatureFlags(const FeatureFlags::Flags& flags) {
}
absl::optional<FakeClock*> MediumEnvironment::GetSimulatedClock() {
MutexLock lock(&mutex_);
if (simulated_clock_) {
return absl::optional<FakeClock*>(simulated_clock_.get());
}
+1 -1
View File
@@ -511,7 +511,7 @@ class MediumEnvironment {
bool use_valid_peer_connection_ = true;
absl::Duration peer_connection_latency_ = absl::ZeroDuration();
std::unique_ptr<FakeClock> simulated_clock_;
std::unique_ptr<FakeClock> simulated_clock_ ABSL_GUARDED_BY(mutex_);
};
} // namespace nearby