Skip to content

Commit

Permalink
Move payload tracker callback to service thread.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 694644790
  • Loading branch information
ftsui authored and copybara-github committed Nov 8, 2024
1 parent 63c8486 commit 13d5f70
Show file tree
Hide file tree
Showing 8 changed files with 116 additions and 161 deletions.
31 changes: 15 additions & 16 deletions sharing/fake_nearby_connections_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,16 @@ FakeNearbyConnectionsManager::FakeNearbyConnectionsManager() = default;
FakeNearbyConnectionsManager::~FakeNearbyConnectionsManager() = default;

void FakeNearbyConnectionsManager::Shutdown() {
NL_DCHECK(!IsAdvertising());
NL_DCHECK(!IsDiscovering());
DCHECK(!IsAdvertising());
DCHECK(!IsDiscovering());
is_shutdown_ = true;
}

void FakeNearbyConnectionsManager::StartAdvertising(
std::vector<uint8_t> endpoint_info, IncomingConnectionListener* listener,
PowerLevel power_level, DataUsage data_usage, bool use_stable_endpoint_id,
ConnectionsCallback callback) {
NL_DCHECK(!IsAdvertising());
DCHECK(!IsAdvertising());
is_shutdown_ = false;
{
absl::MutexLock lock(&listener_mutex_);
Expand All @@ -74,8 +74,8 @@ void FakeNearbyConnectionsManager::StartAdvertising(

void FakeNearbyConnectionsManager::StopAdvertising(
ConnectionsCallback callback) {
NL_DCHECK(IsAdvertising());
NL_DCHECK(!is_shutdown());
DCHECK(IsAdvertising());
DCHECK(!is_shutdown());
{
absl::MutexLock lock(&listener_mutex_);
advertising_listener_ = nullptr;
Expand All @@ -101,8 +101,8 @@ void FakeNearbyConnectionsManager::StartDiscovery(
}

void FakeNearbyConnectionsManager::StopDiscovery() {
NL_DCHECK(IsDiscovering());
NL_DCHECK(!is_shutdown());
DCHECK(IsDiscovering());
DCHECK(!is_shutdown());
absl::MutexLock lock(&listener_mutex_);
discovery_listener_ = nullptr;
}
Expand All @@ -112,36 +112,36 @@ void FakeNearbyConnectionsManager::Connect(
std::optional<std::vector<uint8_t>> bluetooth_mac_address,
DataUsage data_usage, TransportType transport_type,
NearbyConnectionCallback callback) {
NL_DCHECK(!is_shutdown());
DCHECK(!is_shutdown());
connected_data_usage_ = data_usage;
transport_type_ = transport_type;
connection_endpoint_infos_.emplace(endpoint_id, std::move(endpoint_info));
std::move(callback)(connection_, Status::kUnknown);
}

void FakeNearbyConnectionsManager::Disconnect(absl::string_view endpoint_id) {
NL_DCHECK(!is_shutdown());
DCHECK(!is_shutdown());
connection_endpoint_infos_.erase(std::string(endpoint_id));
}

void FakeNearbyConnectionsManager::Send(
absl::string_view endpoint_id, std::unique_ptr<Payload> payload,
std::weak_ptr<PayloadStatusListener> listener) {
NL_DCHECK(!is_shutdown());
DCHECK(!is_shutdown());
if (send_payload_callback_)
send_payload_callback_(std::move(payload), listener);
}

void FakeNearbyConnectionsManager::RegisterPayloadStatusListener(
int64_t payload_id, std::weak_ptr<PayloadStatusListener> listener) {
NL_DCHECK(!is_shutdown());
DCHECK(!is_shutdown());

payload_status_listeners_[payload_id] = listener;
}

const Payload* FakeNearbyConnectionsManager::GetIncomingPayload(
int64_t payload_id) const {
NL_DCHECK(!is_shutdown());
DCHECK(!is_shutdown());
absl::MutexLock lock(&incoming_payloads_mutex_);
auto it = incoming_payloads_.find(payload_id);
if (it == incoming_payloads_.end()) return nullptr;
Expand All @@ -150,7 +150,7 @@ const Payload* FakeNearbyConnectionsManager::GetIncomingPayload(
}

void FakeNearbyConnectionsManager::Cancel(int64_t payload_id) {
NL_DCHECK(!is_shutdown());
DCHECK(!is_shutdown());
std::weak_ptr<PayloadStatusListener> listener =
GetRegisteredPayloadStatusListener(payload_id);
if (auto weak_listener = listener.lock()) {
Expand All @@ -159,8 +159,7 @@ void FakeNearbyConnectionsManager::Cancel(int64_t payload_id) {
status_update->status = PayloadStatus::kCanceled;
status_update->total_bytes = 0;
status_update->bytes_transferred = 0;
weak_listener->OnStatusUpdate(std::move(status_update),
/*upgraded_medium=*/std::nullopt);
weak_listener->OnStatusUpdate(std::move(status_update));
payload_status_listeners_.erase(payload_id);
}

Expand All @@ -176,7 +175,7 @@ void FakeNearbyConnectionsManager::ClearIncomingPayloads() {
std::optional<std::vector<uint8_t>>
FakeNearbyConnectionsManager::GetRawAuthenticationToken(
absl::string_view endpoint_id) {
NL_DCHECK(!is_shutdown());
DCHECK(!is_shutdown());

auto iter = endpoint_auth_tokens_.find(std::string(endpoint_id));
if (iter != endpoint_auth_tokens_.end()) return iter->second;
Expand Down
7 changes: 2 additions & 5 deletions sharing/nearby_connections_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,8 @@ class NearbyConnectionsManager {
return weak_from_this();
}

// Note: `upgraded_medium` is passed in for use in metrics, and it is
// absl::nullopt if the bandwidth has not upgraded yet or if the upgrade
// status is not known.
virtual void OnStatusUpdate(std::unique_ptr<PayloadTransferUpdate> update,
std::optional<Medium> upgraded_medium) = 0;
virtual void OnStatusUpdate(
std::unique_ptr<PayloadTransferUpdate> update) = 0;
};

// Converts the status to a logging-friendly string.
Expand Down
Loading

0 comments on commit 13d5f70

Please sign in to comment.