From 59a4f83de26cca3fda9acc3489a81ee25508472f Mon Sep 17 00:00:00 2001 From: hai007 Date: Fri, 30 Oct 2020 14:10:14 -0700 Subject: [PATCH] Roll forward to cl/339936269 Signed-off-by: hai007 --- cpp/core/internal/client_proxy.cc | 23 ++++++++++++----------- cpp/core/internal/client_proxy.h | 1 + 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/cpp/core/internal/client_proxy.cc b/cpp/core/internal/client_proxy.cc index 93081562..0ab6a155 100644 --- a/cpp/core/internal/client_proxy.cc +++ b/cpp/core/internal/client_proxy.cc @@ -56,8 +56,6 @@ void ClientProxy::StartedAdvertising( const ConnectionListener& listener, absl::Span mediums) { MutexLock lock(&mutex_); - - if (connections_.empty()) local_endpoint_id_.clear(); advertising_info_ = {service_id, listener}; } @@ -67,7 +65,7 @@ void ClientProxy::StoppedAdvertising() { if (IsAdvertising()) { advertising_info_.Clear(); } - if (connections_.empty()) local_endpoint_id_.clear(); + ResetLocalEndpointIdIfNeeded(); } bool ClientProxy::IsAdvertising() const { @@ -83,10 +81,8 @@ std::string ClientProxy::GetAdvertisingServiceId() const { std::string ClientProxy::GetServiceId() const { MutexLock lock(&mutex_); - if (IsAdvertising()) - return advertising_info_.service_id; - if (IsDiscovering()) - return discovery_info_.service_id; + if (IsAdvertising()) return advertising_info_.service_id; + if (IsDiscovering()) return discovery_info_.service_id; return "idle_service_id"; } @@ -95,8 +91,6 @@ void ClientProxy::StartedDiscovery( const DiscoveryListener& listener, absl::Span mediums) { MutexLock lock(&mutex_); - - if (connections_.empty()) local_endpoint_id_.clear(); discovery_info_ = DiscoveryInfo{service_id, listener}; } @@ -107,7 +101,7 @@ void ClientProxy::StoppedDiscovery() { discovered_endpoint_ids_.clear(); discovery_info_.Clear(); } - if (connections_.empty()) local_endpoint_id_.clear(); + ResetLocalEndpointIdIfNeeded(); } bool ClientProxy::IsDiscoveringServiceId(const std::string& service_id) const { @@ -252,7 +246,7 @@ void ClientProxy::OnDisconnected(const std::string& endpoint_id, bool notify) { item->connection_listener.disconnected_cb({endpoint_id}); } connections_.erase(endpoint_id); - if (connections_.empty()) local_endpoint_id_.clear(); + ResetLocalEndpointIdIfNeeded(); } } @@ -502,6 +496,13 @@ void ClientProxy::RemoveAllEndpoints() { local_endpoint_id_.clear(); } +void ClientProxy::ResetLocalEndpointIdIfNeeded() { + MutexLock lock(&mutex_); + if (connections_.empty() && !IsAdvertising() && !IsDiscovering()) { + local_endpoint_id_.clear(); + } +} + bool ClientProxy::ConnectionStatusesContains( const std::string& endpoint_id, Connection::Status status_to_match) const { const Connection* item = LookupConnection(endpoint_id); diff --git a/cpp/core/internal/client_proxy.h b/cpp/core/internal/client_proxy.h index 6bc8ebc5..5559b8f9 100644 --- a/cpp/core/internal/client_proxy.h +++ b/cpp/core/internal/client_proxy.h @@ -182,6 +182,7 @@ class ClientProxy final { }; void RemoveAllEndpoints(); + void ResetLocalEndpointIdIfNeeded(); bool ConnectionStatusesContains(const std::string& endpoint_id, Connection::Status status_to_match) const; void AppendConnectionStatus(const std::string& endpoint_id,