mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 22:56:12 -04:00
Migrate to AnyInvocable in DiscoveryListener
PiperOrigin-RevId: 571077933
This commit is contained in:
committed by
Copybara-Service
parent
dfd3de80cf
commit
56acecdffa
@@ -95,9 +95,6 @@ void StartDiscovery(connections::Core *pCore, const char *service_id,
|
||||
if (pCore == nullptr) {
|
||||
return;
|
||||
}
|
||||
connections::DiscoveryListener discoveryListener =
|
||||
std::move(*listener.GetImpl());
|
||||
|
||||
connections::DiscoveryOptions discovery_options;
|
||||
|
||||
if (discovery_options_w.strategy == StrategyW::kNone)
|
||||
@@ -125,7 +122,8 @@ void StartDiscovery(connections::Core *pCore, const char *service_id,
|
||||
discovery_options_w.allowed.wifi_hotspot;
|
||||
discovery_options.allowed.web_rtc = discovery_options_w.allowed.web_rtc;
|
||||
|
||||
pCore->StartDiscovery(service_id, discovery_options, discoveryListener,
|
||||
pCore->StartDiscovery(service_id, discovery_options,
|
||||
std::move(*listener.GetImpl()),
|
||||
std::move(*callback.GetImpl()));
|
||||
}
|
||||
|
||||
|
||||
+15
-12
@@ -102,8 +102,8 @@ void Core::StartDiscovery(absl::string_view service_id,
|
||||
CheckServiceId(service_id);
|
||||
CHECK(discovery_options.strategy.IsValid());
|
||||
|
||||
router_->StartDiscovery(&client_, service_id, discovery_options, listener,
|
||||
std::move(callback));
|
||||
router_->StartDiscovery(&client_, service_id, discovery_options,
|
||||
std::move(listener), std::move(callback));
|
||||
}
|
||||
|
||||
void Core::InjectEndpoint(absl::string_view service_id,
|
||||
@@ -302,23 +302,26 @@ void Core::StartDiscoveryV3(absl::string_view service_id,
|
||||
ResultCallback callback) {
|
||||
DiscoveryListener old_listener = {
|
||||
.endpoint_found_cb =
|
||||
[&listener](const std::string& endpoint_id,
|
||||
const ByteArray& endpoint_info,
|
||||
const std::string& service_id) {
|
||||
[endpoint_found_cb = std::move(listener.endpoint_found_cb)](
|
||||
const std::string& endpoint_id, const ByteArray& endpoint_info,
|
||||
const std::string& service_id) mutable {
|
||||
auto remote_device = v3::ConnectionsDevice(
|
||||
endpoint_id, endpoint_info.AsStringView(), {});
|
||||
listener.endpoint_found_cb(remote_device, service_id);
|
||||
endpoint_found_cb(remote_device, service_id);
|
||||
},
|
||||
.endpoint_lost_cb =
|
||||
[&listener](const std::string& endpoint_id) {
|
||||
[endpoint_lost_cb = std::move(listener.endpoint_lost_cb)](
|
||||
const std::string& endpoint_id) mutable {
|
||||
auto remote_device = v3::ConnectionsDevice(endpoint_id, "", {});
|
||||
listener.endpoint_lost_cb(remote_device);
|
||||
endpoint_lost_cb(remote_device);
|
||||
},
|
||||
.endpoint_distance_changed_cb =
|
||||
[&listener](const std::string& endpoint_id,
|
||||
DistanceInfo distance_info) {
|
||||
[endpoint_distance_changed_cb =
|
||||
std::move(listener.endpoint_distance_changed_cb)](
|
||||
const std::string& endpoint_id,
|
||||
DistanceInfo distance_info) mutable {
|
||||
auto remote = v3::ConnectionsDevice(endpoint_id, "", {});
|
||||
listener.endpoint_distance_changed_cb(remote, distance_info);
|
||||
endpoint_distance_changed_cb(remote, distance_info);
|
||||
},
|
||||
};
|
||||
DiscoveryOptions old_discovery_options = {
|
||||
@@ -333,7 +336,7 @@ void Core::StartDiscoveryV3(absl::string_view service_id,
|
||||
discovery_options.power_level == PowerLevel::kLowPower,
|
||||
};
|
||||
// TODO(b/291295755): Deeper refactor to use v3 options throughout.
|
||||
StartDiscovery(service_id, old_discovery_options, old_listener,
|
||||
StartDiscovery(service_id, old_discovery_options, std::move(old_listener),
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
|
||||
@@ -158,8 +158,8 @@ TEST(CoreV3Test, TestDiscoveryOptionsConversionWorks) {
|
||||
});
|
||||
EXPECT_CALL(mock, StartDiscovery)
|
||||
.WillOnce([](ClientProxy*, absl::string_view,
|
||||
const DiscoveryOptions& options,
|
||||
const DiscoveryListener& info, ResultCallback) {
|
||||
const DiscoveryOptions& options, DiscoveryListener,
|
||||
ResultCallback) {
|
||||
EXPECT_EQ(options.strategy, Strategy::kP2pCluster);
|
||||
EXPECT_FALSE(options.low_power);
|
||||
EXPECT_TRUE(options.auto_upgrade_bandwidth);
|
||||
@@ -411,12 +411,12 @@ TEST(CoreV3Test, TestCallbackWrapWorksStartDiscoveryV3) {
|
||||
MockServiceControllerRouter mock;
|
||||
EXPECT_CALL(mock, StartDiscovery)
|
||||
.WillOnce([&](ClientProxy*, absl::string_view, const DiscoveryOptions&,
|
||||
const DiscoveryListener& info, const ResultCallback&) {
|
||||
DiscoveryListener listener, const ResultCallback&) {
|
||||
// call all callbacks to make sure it all gets called correctly.
|
||||
NEARBY_LOGS(INFO) << "StartDiscovery called";
|
||||
info.endpoint_distance_changed_cb("FAKE", {});
|
||||
info.endpoint_found_cb("FAKE", ByteArray(), "");
|
||||
info.endpoint_lost_cb("FAKE");
|
||||
listener.endpoint_distance_changed_cb("FAKE", {});
|
||||
listener.endpoint_found_cb("FAKE", ByteArray(), "");
|
||||
listener.endpoint_lost_cb("FAKE");
|
||||
});
|
||||
EXPECT_CALL(mock, StopAllEndpoints)
|
||||
.WillOnce([&](ClientProxy* client, ResultCallback callback) {
|
||||
|
||||
@@ -22,18 +22,20 @@
|
||||
#include <vector>
|
||||
|
||||
#include "securegcm/ukey2_handshake.h"
|
||||
#include "absl/base/thread_annotations.h"
|
||||
#include "absl/container/flat_hash_set.h"
|
||||
#include "absl/strings/escaping.h"
|
||||
#include "absl/time/time.h"
|
||||
#include "absl/types/span.h"
|
||||
#include "connections/advertising_options.h"
|
||||
#include "connections/connection_options.h"
|
||||
#include "connections/implementation/endpoint_channel_manager.h"
|
||||
#include "connections/implementation/client_proxy.h"
|
||||
#include "connections/implementation/endpoint_channel_manager.h"
|
||||
#include "connections/implementation/flags/nearby_connections_feature_flags.h"
|
||||
#include "connections/implementation/mediums/utils.h"
|
||||
#include "connections/implementation/offline_frames.h"
|
||||
#include "connections/implementation/proto/offline_wire_formats.pb.h"
|
||||
#include "connections/listeners.h"
|
||||
#include "connections/medium_selector.h"
|
||||
#include "connections/status.h"
|
||||
#include "connections/v3/connection_listening_options.h"
|
||||
@@ -353,7 +355,7 @@ BooleanMediumSelector BasePcpHandler::ComputeIntersectionOfSupportedMediums(
|
||||
Status BasePcpHandler::StartDiscovery(ClientProxy* client,
|
||||
const std::string& service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener) {
|
||||
DiscoveryListener listener) {
|
||||
Future<Status> response;
|
||||
DiscoveryOptions stripped_discovery_options = discovery_options;
|
||||
StripOutUnavailableMediums(stripped_discovery_options);
|
||||
@@ -362,9 +364,9 @@ Status BasePcpHandler::StartDiscovery(ClientProxy* client,
|
||||
stripped_discovery_options);
|
||||
RunOnPcpHandlerThread(
|
||||
"start-discovery",
|
||||
[this, client, service_id, stripped_discovery_options, &listener,
|
||||
&response]() RUN_ON_PCP_HANDLER_THREAD()
|
||||
ABSL_LOCKS_EXCLUDED(discovered_endpoint_mutex_) {
|
||||
[this, client, service_id, stripped_discovery_options,
|
||||
listener = std::move(listener), &response]() RUN_ON_PCP_HANDLER_THREAD()
|
||||
ABSL_LOCKS_EXCLUDED(discovered_endpoint_mutex_) mutable {
|
||||
// Ask the implementation to attempt to start discovery.
|
||||
auto result = StartDiscoveryImpl(client, service_id,
|
||||
stripped_discovery_options);
|
||||
@@ -379,9 +381,9 @@ Status BasePcpHandler::StartDiscovery(ClientProxy* client,
|
||||
MutexLock lock(&discovered_endpoint_mutex_);
|
||||
discovered_endpoints_.clear();
|
||||
}
|
||||
client->StartedDiscovery(service_id, GetStrategy(), listener,
|
||||
absl::MakeSpan(result.mediums),
|
||||
stripped_discovery_options);
|
||||
client->StartedDiscovery(
|
||||
service_id, GetStrategy(), std::move(listener),
|
||||
absl::MakeSpan(result.mediums), stripped_discovery_options);
|
||||
response.Set({Status::kSuccess});
|
||||
});
|
||||
return WaitForResult(absl::StrCat("StartDiscovery(", service_id, ")"),
|
||||
@@ -1316,8 +1318,8 @@ void BasePcpHandler::OnIncomingFrame(
|
||||
client->SetRemoteSafeToDisconnectVersion(
|
||||
endpoint_id, connection_response.safe_to_disconnect_version());
|
||||
}
|
||||
channel_manager_->UpdateSafeToDisconnectForEndpoint(endpoint_id,
|
||||
client->IsSafeToDisconnectEnabled(endpoint_id));
|
||||
channel_manager_->UpdateSafeToDisconnectForEndpoint(
|
||||
endpoint_id, client->IsSafeToDisconnectEnabled(endpoint_id));
|
||||
EvaluateConnectionResult(client, endpoint_id,
|
||||
/* can_close_immediately= */ true);
|
||||
|
||||
@@ -1335,21 +1337,20 @@ void BasePcpHandler::OnEndpointDisconnect(ClientProxy* client,
|
||||
barrier.CountDown();
|
||||
return;
|
||||
}
|
||||
RunOnPcpHandlerThread("on-endpoint-disconnect",
|
||||
[this, client, endpoint_id, barrier, reason]()
|
||||
RUN_ON_PCP_HANDLER_THREAD() mutable {
|
||||
auto item = pending_alarms_.find(endpoint_id);
|
||||
if (item != pending_alarms_.end()) {
|
||||
auto& alarm = item->second;
|
||||
alarm->Cancel();
|
||||
pending_alarms_.erase(item);
|
||||
}
|
||||
ProcessPreConnectionResultFailure(
|
||||
client, endpoint_id,
|
||||
/* should_call_disconnect_endpoint= */ false,
|
||||
reason);
|
||||
barrier.CountDown();
|
||||
});
|
||||
RunOnPcpHandlerThread(
|
||||
"on-endpoint-disconnect", [this, client, endpoint_id, barrier,
|
||||
reason]() RUN_ON_PCP_HANDLER_THREAD() mutable {
|
||||
auto item = pending_alarms_.find(endpoint_id);
|
||||
if (item != pending_alarms_.end()) {
|
||||
auto& alarm = item->second;
|
||||
alarm->Cancel();
|
||||
pending_alarms_.erase(item);
|
||||
}
|
||||
ProcessPreConnectionResultFailure(
|
||||
client, endpoint_id,
|
||||
/* should_call_disconnect_endpoint= */ false, reason);
|
||||
barrier.CountDown();
|
||||
});
|
||||
}
|
||||
|
||||
BluetoothDevice BasePcpHandler::GetRemoteBluetoothDevice(
|
||||
|
||||
@@ -106,7 +106,7 @@ class BasePcpHandler : public PcpHandler,
|
||||
// DiscoveryListener will get called in case of any event.
|
||||
Status StartDiscovery(ClientProxy* client, const std::string& service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener) override;
|
||||
DiscoveryListener listener) override;
|
||||
|
||||
// Stops Discovery if it is active, and changes CLientProxy state,
|
||||
// otherwise does nothing.
|
||||
|
||||
@@ -471,7 +471,7 @@ class BasePcpHandlerTest
|
||||
pcp_handler->GetMediumsFromSelector(discovery_options.allowed),
|
||||
}));
|
||||
EXPECT_EQ(pcp_handler->StartDiscovery(client, service_id, discovery_options,
|
||||
discovery_listener_),
|
||||
GetDiscoveryListener()),
|
||||
Status{Status::kSuccess});
|
||||
EXPECT_TRUE(client->IsDiscovering());
|
||||
for (const auto& discovered_medium :
|
||||
@@ -812,14 +812,17 @@ class BasePcpHandlerTest
|
||||
.bandwidth_changed_cb =
|
||||
mock_connection_listener_.bandwidth_changed_cb.AsStdFunction(),
|
||||
};
|
||||
DiscoveryListener discovery_listener_{
|
||||
.endpoint_found_cb =
|
||||
mock_discovery_listener_.endpoint_found_cb.AsStdFunction(),
|
||||
.endpoint_lost_cb =
|
||||
mock_discovery_listener_.endpoint_lost_cb.AsStdFunction(),
|
||||
.endpoint_distance_changed_cb =
|
||||
mock_discovery_listener_.endpoint_distance_changed_cb.AsStdFunction(),
|
||||
};
|
||||
DiscoveryListener GetDiscoveryListener() {
|
||||
return DiscoveryListener{
|
||||
.endpoint_found_cb =
|
||||
mock_discovery_listener_.endpoint_found_cb.AsStdFunction(),
|
||||
.endpoint_lost_cb =
|
||||
mock_discovery_listener_.endpoint_lost_cb.AsStdFunction(),
|
||||
.endpoint_distance_changed_cb =
|
||||
mock_discovery_listener_.endpoint_distance_changed_cb
|
||||
.AsStdFunction(),
|
||||
};
|
||||
}
|
||||
SetSafeToDisconnect set_safe_to_disconnect_{true};
|
||||
MediumEnvironment& env_ = MediumEnvironment::Instance();
|
||||
NiceMock<MockNearbyDevice> mock_device_;
|
||||
@@ -902,7 +905,7 @@ TEST_P(BasePcpHandlerTest, StartDiscoveryFails) {
|
||||
.mediums = {},
|
||||
}));
|
||||
EXPECT_EQ(pcp_handler.StartDiscovery(&client, "service", discovery_options,
|
||||
discovery_listener_),
|
||||
GetDiscoveryListener()),
|
||||
Status{Status::kError});
|
||||
bwu.Shutdown();
|
||||
env_.Stop();
|
||||
@@ -985,7 +988,7 @@ TEST_F(BasePcpHandlerTest, WifiMediumFailFallBackToBT) {
|
||||
}));
|
||||
|
||||
EXPECT_EQ(pcp_handler.StartDiscovery(&client, service_id, discovery_options,
|
||||
discovery_listener_),
|
||||
GetDiscoveryListener()),
|
||||
Status{Status::kSuccess});
|
||||
EXPECT_TRUE(client.IsDiscovering());
|
||||
|
||||
@@ -1566,7 +1569,7 @@ TEST_F(BasePcpHandlerTest, InjectEndpoint) {
|
||||
.mediums = allowed.GetMediums(true),
|
||||
}));
|
||||
EXPECT_EQ(pcp_handler.StartDiscovery(&client, service_id, discovery_options,
|
||||
discovery_listener_),
|
||||
GetDiscoveryListener()),
|
||||
Status{Status::kSuccess});
|
||||
EXPECT_TRUE(client.IsDiscovering());
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "absl/strings/escaping.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "connections/implementation/flags/nearby_connections_feature_flags.h"
|
||||
#include "connections/listeners.h"
|
||||
#include "connections/v3/bandwidth_info.h"
|
||||
#include "connections/v3/connection_listening_options.h"
|
||||
#include "connections/v3/connections_device_provider.h"
|
||||
@@ -282,11 +283,11 @@ ConnectionListener ClientProxy::GetAdvertisingOrIncomingConnectionListener() {
|
||||
|
||||
void ClientProxy::StartedDiscovery(
|
||||
const std::string& service_id, Strategy strategy,
|
||||
const DiscoveryListener& listener,
|
||||
DiscoveryListener listener,
|
||||
absl::Span<location::nearby::proto::connections::Medium> mediums,
|
||||
const DiscoveryOptions& discovery_options) {
|
||||
MutexLock lock(&mutex_);
|
||||
discovery_info_ = DiscoveryInfo{service_id, listener};
|
||||
discovery_info_ = DiscoveryInfo{service_id, std::move(listener)};
|
||||
discovery_options_ = discovery_options;
|
||||
|
||||
const std::vector<location::nearby::proto::connections::Medium> medium_vector(
|
||||
@@ -856,7 +857,6 @@ bool ClientProxy::IsPayloadReceivedAckEnabled(absl::string_view endpoint_id) {
|
||||
.min_nc_version_supports_payload_received_ack);
|
||||
}
|
||||
|
||||
|
||||
void ClientProxy::CancelAllEndpoints() {
|
||||
for (const auto& item : cancellation_flags_) {
|
||||
CancellationFlag* cancellation_flag = item.second.get();
|
||||
|
||||
@@ -110,7 +110,7 @@ class ClientProxy final {
|
||||
// Marks this client as discovering with the given callback.
|
||||
void StartedDiscovery(
|
||||
const std::string& service_id, Strategy strategy,
|
||||
const DiscoveryListener& discovery_listener,
|
||||
DiscoveryListener discovery_listener,
|
||||
absl::Span<location::nearby::proto::connections::Medium> mediums,
|
||||
const DiscoveryOptions& discovery_options = DiscoveryOptions{});
|
||||
// Marks this client as not discovering at all.
|
||||
|
||||
@@ -210,7 +210,7 @@ class ClientProxyTest : public ::testing::TestWithParam<FeatureFlags::Flags> {
|
||||
.info = ByteArray{"discovery endpoint name"},
|
||||
.id = client->GetLocalEndpointId(),
|
||||
};
|
||||
client->StartedDiscovery(service_id_, strategy_, listener,
|
||||
client->StartedDiscovery(service_id_, strategy_, std::move(listener),
|
||||
absl::MakeSpan(mediums_));
|
||||
return endpoint;
|
||||
}
|
||||
@@ -363,10 +363,12 @@ class ClientProxyTest : public ::testing::TestWithParam<FeatureFlags::Flags> {
|
||||
.bandwidth_changed_cb =
|
||||
mock_discovery_connection_.bandwidth_changed_cb.AsStdFunction(),
|
||||
};
|
||||
DiscoveryListener discovery_listener_{
|
||||
.endpoint_found_cb = mock_discovery_.endpoint_found_cb.AsStdFunction(),
|
||||
.endpoint_lost_cb = mock_discovery_.endpoint_lost_cb.AsStdFunction(),
|
||||
};
|
||||
DiscoveryListener GetDiscoveryListener() {
|
||||
return DiscoveryListener{
|
||||
.endpoint_found_cb = mock_discovery_.endpoint_found_cb.AsStdFunction(),
|
||||
.endpoint_lost_cb = mock_discovery_.endpoint_lost_cb.AsStdFunction(),
|
||||
};
|
||||
}
|
||||
ConnectionOptions connection_options_;
|
||||
AdvertisingOptions advertising_options_;
|
||||
DiscoveryOptions discovery_options_;
|
||||
@@ -379,7 +381,7 @@ TEST_P(ClientProxyTest, CanCancelEndpoint) {
|
||||
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
|
||||
@@ -415,7 +417,7 @@ TEST_P(ClientProxyTest, CanCancelAllEndpoints) {
|
||||
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
|
||||
@@ -452,7 +454,7 @@ TEST_P(ClientProxyTest, CanCancelAllEndpointsWithDifferentEndpoint) {
|
||||
ConnectionListener advertising_connection_listener_3;
|
||||
ClientProxy client3;
|
||||
|
||||
StartDiscovery(&client1_, discovery_listener_);
|
||||
StartDiscovery(&client1_, GetDiscoveryListener());
|
||||
Endpoint advertising_endpoint_2 =
|
||||
StartAdvertising(&client2_, advertising_connection_listener_2);
|
||||
Endpoint advertising_endpoint_3 =
|
||||
@@ -558,14 +560,14 @@ TEST_F(ClientProxyTest, StartedDiscoveryChangesStateFromIdle) {
|
||||
TEST_F(ClientProxyTest, OnEndpointFoundFiresNotificationInDiscovery) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
}
|
||||
|
||||
TEST_F(ClientProxyTest, OnEndpointLostFiresNotificationInDiscovery) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryEndpointLost(&client2_, advertising_endpoint);
|
||||
}
|
||||
@@ -573,7 +575,7 @@ TEST_F(ClientProxyTest, OnEndpointLostFiresNotificationInDiscovery) {
|
||||
TEST_F(ClientProxyTest, OnConnectionInitiatedFiresNotificationInDiscovery) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
}
|
||||
@@ -581,7 +583,7 @@ TEST_F(ClientProxyTest, OnConnectionInitiatedFiresNotificationInDiscovery) {
|
||||
TEST_F(ClientProxyTest, OnBandwidthChangedFiresNotificationInDiscovery) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionLocalAccepted(&client2_, advertising_endpoint);
|
||||
@@ -593,7 +595,7 @@ TEST_F(ClientProxyTest, OnBandwidthChangedFiresNotificationInDiscovery) {
|
||||
TEST_F(ClientProxyTest, OnDisconnectedFiresNotificationInDiscovery) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionDisconnected(&client2_, advertising_endpoint);
|
||||
@@ -602,7 +604,7 @@ TEST_F(ClientProxyTest, OnDisconnectedFiresNotificationInDiscovery) {
|
||||
TEST_F(ClientProxyTest, LocalEndpointAcceptedConnectionChangesState) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionLocalAccepted(&client2_, advertising_endpoint);
|
||||
@@ -611,7 +613,7 @@ TEST_F(ClientProxyTest, LocalEndpointAcceptedConnectionChangesState) {
|
||||
TEST_F(ClientProxyTest, LocalEndpointRejectedConnectionChangesState) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionLocalRejected(&client2_, advertising_endpoint);
|
||||
@@ -620,7 +622,7 @@ TEST_F(ClientProxyTest, LocalEndpointRejectedConnectionChangesState) {
|
||||
TEST_F(ClientProxyTest, RemoteEndpointAcceptedConnectionChangesState) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionRemoteAccepted(&client2_, advertising_endpoint);
|
||||
@@ -629,7 +631,7 @@ TEST_F(ClientProxyTest, RemoteEndpointAcceptedConnectionChangesState) {
|
||||
TEST_F(ClientProxyTest, RemoteEndpointRejectedConnectionChangesState) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionRemoteRejected(&client2_, advertising_endpoint);
|
||||
@@ -638,7 +640,7 @@ TEST_F(ClientProxyTest, RemoteEndpointRejectedConnectionChangesState) {
|
||||
TEST_F(ClientProxyTest, OnPayloadChangesState) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionLocalAccepted(&client2_, advertising_endpoint);
|
||||
@@ -650,7 +652,7 @@ TEST_F(ClientProxyTest, OnPayloadChangesState) {
|
||||
TEST_F(ClientProxyTest, OnPayloadProgressChangesState) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionLocalAccepted(&client2_, advertising_endpoint);
|
||||
@@ -770,7 +772,7 @@ TEST_F(ClientProxyTest, EndpointIdRotateWhenStartDiscovery) {
|
||||
&client1_, advertising_connection_listener_, advertising_options);
|
||||
|
||||
StopAdvertising(&client1_);
|
||||
StartDiscovery(&client1_, discovery_listener_);
|
||||
StartDiscovery(&client1_, GetDiscoveryListener());
|
||||
|
||||
Endpoint advertising_endpoint_2 = StartAdvertising(
|
||||
&client1_, advertising_connection_listener_, advertising_options);
|
||||
@@ -835,7 +837,7 @@ TEST_F(ClientProxyTest, NotLogSessionForStoppedAdvertisingWithConnection) {
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
OnAdvertisingConnectionInitiated(&client1_, advertising_endpoint);
|
||||
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
|
||||
@@ -874,7 +876,7 @@ TEST_F(ClientProxyTest, NotLogSessionForStoppedDiscoveryWithConnection) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
|
||||
// Before
|
||||
@@ -894,7 +896,7 @@ TEST_F(ClientProxyTest,
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
|
||||
// Before
|
||||
EXPECT_FALSE(client2_.IsAdvertising()); // No Advertising
|
||||
@@ -911,7 +913,7 @@ TEST_F(ClientProxyTest,
|
||||
TEST_F(ClientProxyTest, LogSessionOnDisconnectedWithOneConnection) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
|
||||
@@ -950,7 +952,7 @@ TEST_F(ClientProxyTest, NotLogSessionOnDisconnectedWhenMoreThanOneConnection) {
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
Endpoint advertising_endpoint_2 =
|
||||
StartAdvertising(&client2_, advertising_connection_listener_);
|
||||
StartDiscovery(&client3, discovery_listener_);
|
||||
StartDiscovery(&client3, GetDiscoveryListener());
|
||||
|
||||
OnDiscoveryEndpointFound(&client3, advertising_endpoint_1);
|
||||
OnDiscoveryConnectionInitiated(&client3, advertising_endpoint_1);
|
||||
@@ -976,7 +978,7 @@ TEST_F(ClientProxyTest,
|
||||
NotLogSessionOnDisconnectedForDiscoveringWithOnlyOneConnection) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
|
||||
@@ -995,7 +997,7 @@ TEST_F(ClientProxyTest,
|
||||
TEST_F(ClientProxyTest, LogSessionForResetClientProxy) {
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(&client1_, advertising_connection_listener_);
|
||||
StartDiscovery(&client2_, discovery_listener_);
|
||||
StartDiscovery(&client2_, GetDiscoveryListener());
|
||||
OnDiscoveryEndpointFound(&client2_, advertising_endpoint);
|
||||
OnDiscoveryConnectionInitiated(&client2_, advertising_endpoint);
|
||||
|
||||
@@ -1039,7 +1041,7 @@ TEST_F(ClientProxyTest, SetRemoteInfoCorrect) {
|
||||
std::int32_t nearby_connections_version = 2;
|
||||
client1_.SetRemoteOsInfo(advertising_endpoint.id, os_info);
|
||||
client1_.SetRemoteSafeToDisconnectVersion(advertising_endpoint.id,
|
||||
nearby_connections_version);
|
||||
nearby_connections_version);
|
||||
|
||||
ASSERT_TRUE(client1_.GetRemoteOsInfo(advertising_endpoint.id).has_value());
|
||||
EXPECT_EQ(client1_.GetRemoteOsInfo(advertising_endpoint.id).value().type(),
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
#include "connections/implementation/service_controller.h"
|
||||
#include "connections/listeners.h"
|
||||
#include "connections/v3/connection_listening_options.h"
|
||||
#include "internal/interop/device.h"
|
||||
|
||||
@@ -47,7 +48,7 @@ class MockServiceController : public ServiceController {
|
||||
MOCK_METHOD(Status, StartDiscovery,
|
||||
(ClientProxy * client, const std::string& service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener),
|
||||
DiscoveryListener listener),
|
||||
(override));
|
||||
|
||||
MOCK_METHOD(void, StopDiscovery, (ClientProxy * client), (override));
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
#include "connections/implementation/service_controller_router.h"
|
||||
#include "connections/listeners.h"
|
||||
|
||||
namespace nearby {
|
||||
namespace connections {
|
||||
@@ -35,7 +36,7 @@ class MockServiceControllerRouter : public ServiceControllerRouter {
|
||||
MOCK_METHOD(void, StartDiscovery,
|
||||
(ClientProxy * client, absl::string_view service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener, ResultCallback callback),
|
||||
DiscoveryListener listener, ResultCallback callback),
|
||||
(override));
|
||||
|
||||
MOCK_METHOD(void, StopDiscovery,
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/str_join.h"
|
||||
#include "connections/discovery_options.h"
|
||||
#include "connections/listeners.h"
|
||||
#include "internal/interop/device.h"
|
||||
|
||||
namespace nearby {
|
||||
@@ -54,13 +56,12 @@ void OfflineServiceController::StopAdvertising(ClientProxy* client) {
|
||||
|
||||
Status OfflineServiceController::StartDiscovery(
|
||||
ClientProxy* client, const std::string& service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener) {
|
||||
const DiscoveryOptions& discovery_options, DiscoveryListener listener) {
|
||||
if (stop_) return {Status::kOutOfOrderApiCall};
|
||||
NEARBY_LOGS(INFO) << "Client " << client->GetClientId()
|
||||
<< " requested discovery to start.";
|
||||
return pcp_manager_.StartDiscovery(client, service_id, discovery_options,
|
||||
listener);
|
||||
std::move(listener));
|
||||
}
|
||||
|
||||
void OfflineServiceController::StopDiscovery(ClientProxy* client) {
|
||||
|
||||
@@ -49,7 +49,7 @@ class OfflineServiceController : public ServiceController {
|
||||
|
||||
Status StartDiscovery(ClientProxy* client, const std::string& service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener) override;
|
||||
DiscoveryListener listener) override;
|
||||
void StopDiscovery(ClientProxy* client) override;
|
||||
|
||||
void InjectEndpoint(ClientProxy* client, const std::string& service_id,
|
||||
|
||||
@@ -83,7 +83,7 @@ class PcpHandler {
|
||||
virtual Status StartDiscovery(ClientProxy* client,
|
||||
const std::string& service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener) = 0;
|
||||
DiscoveryListener listener) = 0;
|
||||
|
||||
// If Discovery is active, stop it, and change CLientProxy state,
|
||||
// otherwise do nothing.
|
||||
|
||||
@@ -74,7 +74,7 @@ class ServiceController {
|
||||
virtual Status StartDiscovery(ClientProxy* client,
|
||||
const std::string& service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener) = 0;
|
||||
DiscoveryListener listener) = 0;
|
||||
virtual void StopDiscovery(ClientProxy* client) = 0;
|
||||
|
||||
virtual void InjectEndpoint(ClientProxy* client,
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <utility>
|
||||
|
||||
#include "absl/memory/memory.h"
|
||||
#include "connections/discovery_options.h"
|
||||
#include "connections/implementation/client_proxy.h"
|
||||
#include "connections/implementation/offline_service_controller.h"
|
||||
#include "connections/listeners.h"
|
||||
@@ -127,19 +128,20 @@ void ServiceControllerRouter::StopAdvertising(ClientProxy* client,
|
||||
|
||||
void ServiceControllerRouter::StartDiscovery(
|
||||
ClientProxy* client, absl::string_view service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener, ResultCallback callback) {
|
||||
const DiscoveryOptions& discovery_options, DiscoveryListener listener,
|
||||
ResultCallback callback) {
|
||||
RouteToServiceController(
|
||||
"scr-start-discovery",
|
||||
[this, client, service_id = std::string(service_id), discovery_options,
|
||||
listener, callback = std::move(callback)]() mutable {
|
||||
listener = std::move(listener),
|
||||
callback = std::move(callback)]() mutable {
|
||||
if (client->IsDiscovering()) {
|
||||
callback({Status::kAlreadyDiscovering});
|
||||
return;
|
||||
}
|
||||
|
||||
callback(GetServiceController()->StartDiscovery(
|
||||
client, service_id, discovery_options, listener));
|
||||
client, service_id, discovery_options, std::move(listener)));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ class ServiceControllerRouter {
|
||||
|
||||
virtual void StartDiscovery(ClientProxy* client, absl::string_view service_id,
|
||||
const DiscoveryOptions& discovery_options,
|
||||
const DiscoveryListener& listener,
|
||||
DiscoveryListener listener,
|
||||
ResultCallback callback);
|
||||
|
||||
virtual void StopDiscovery(ClientProxy* client, ResultCallback callback);
|
||||
|
||||
@@ -104,20 +104,19 @@ class ServiceControllerRouterTest : public testing::Test {
|
||||
|
||||
void StartDiscovery(ClientProxy* client, std::string service_id,
|
||||
DiscoveryOptions discovery_options,
|
||||
const DiscoveryListener& listener,
|
||||
ResultCallback callback) {
|
||||
DiscoveryListener listener, ResultCallback callback) {
|
||||
EXPECT_CALL(*mock_, StartDiscovery)
|
||||
.WillOnce(Return(Status{Status::kSuccess}));
|
||||
{
|
||||
MutexLock lock(&mutex_);
|
||||
complete_ = false;
|
||||
router_.StartDiscovery(client, kServiceId, discovery_options, listener,
|
||||
router_.StartDiscovery(client, kServiceId, discovery_options, {},
|
||||
std::move(callback));
|
||||
while (!complete_) cond_.Wait();
|
||||
EXPECT_EQ(result_, Status{Status::kSuccess});
|
||||
}
|
||||
client->StartedDiscovery(service_id, discovery_options.strategy, listener,
|
||||
absl::MakeSpan(mediums_));
|
||||
client->StartedDiscovery(service_id, discovery_options.strategy,
|
||||
std::move(listener), absl::MakeSpan(mediums_));
|
||||
EXPECT_TRUE(client->IsDiscovering());
|
||||
}
|
||||
|
||||
@@ -185,8 +184,7 @@ class ServiceControllerRouterTest : public testing::Test {
|
||||
while (!complete_) cond_.Wait();
|
||||
EXPECT_EQ(result_, Status{Status::kSuccess});
|
||||
}
|
||||
client->LocalEndpointAcceptedConnection(endpoint_id,
|
||||
{});
|
||||
client->LocalEndpointAcceptedConnection(endpoint_id, {});
|
||||
client->RemoteEndpointAcceptedConnection(endpoint_id);
|
||||
EXPECT_TRUE(client->IsConnectionAccepted(endpoint_id));
|
||||
client->OnConnectionAccepted(endpoint_id);
|
||||
@@ -506,8 +504,6 @@ class ServiceControllerRouterTest : public testing::Test {
|
||||
.listener = ConnectionListener(),
|
||||
};
|
||||
|
||||
DiscoveryListener discovery_listener_;
|
||||
|
||||
Mutex mutex_;
|
||||
ConditionVariable cond_{&mutex_};
|
||||
Status result_ ABSL_GUARDED_BY(mutex_) = {Status::kError};
|
||||
@@ -561,7 +557,7 @@ TEST_F(ServiceControllerRouterTest, StopAdvertisingCalled) {
|
||||
}
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, StartDiscoveryCalled) {
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -571,7 +567,7 @@ TEST_F(ServiceControllerRouterTest, StartDiscoveryCalled) {
|
||||
}
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, StopDiscoveryCalled) {
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -587,7 +583,7 @@ TEST_F(ServiceControllerRouterTest, StopDiscoveryCalled) {
|
||||
}
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, InjectEndpointCalled) {
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -611,7 +607,7 @@ TEST_F(ServiceControllerRouterTest, InjectEndpointCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, RequestConnectionCalled) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -629,7 +625,7 @@ TEST_F(ServiceControllerRouterTest, RequestConnectionCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, AcceptConnectionCalled) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -655,7 +651,7 @@ TEST_F(ServiceControllerRouterTest, AcceptConnectionCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, RejectConnectionCalled) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -681,7 +677,7 @@ TEST_F(ServiceControllerRouterTest, RejectConnectionCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, InitiateBandwidthUpgradeCalled) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -714,7 +710,7 @@ TEST_F(ServiceControllerRouterTest, InitiateBandwidthUpgradeCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, SendPayloadCalled) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -748,7 +744,7 @@ TEST_F(ServiceControllerRouterTest, SendPayloadCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, CancelPayloadCalled) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -783,7 +779,7 @@ TEST_F(ServiceControllerRouterTest, CancelPayloadCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, DisconnectFromEndpointCalled) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -816,7 +812,7 @@ TEST_F(ServiceControllerRouterTest, DisconnectFromEndpointCalled) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, RequestConnectionCalledV3) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -870,7 +866,7 @@ TEST_F(ServiceControllerRouterTest, RequestConnectionCalledV3) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, RequestConnectionV3FakeDevice) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -923,7 +919,7 @@ TEST_F(ServiceControllerRouterTest, RequestConnectionV3FakeDevice) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, RequestConnectionV3TwiceFails) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -967,7 +963,7 @@ TEST_F(ServiceControllerRouterTest, RequestConnectionV3TwiceFails) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, AcceptConnectionCalledV3) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -1001,7 +997,7 @@ TEST_F(ServiceControllerRouterTest, AcceptConnectionCalledV3) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, RejectConnectionCalledV3) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -1035,7 +1031,7 @@ TEST_F(ServiceControllerRouterTest, RejectConnectionCalledV3) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, InitiateBandwidthUpgradeCalledV3) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -1076,7 +1072,7 @@ TEST_F(ServiceControllerRouterTest, InitiateBandwidthUpgradeCalledV3) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, SendPayloadCalledV3) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -1118,7 +1114,7 @@ TEST_F(ServiceControllerRouterTest, SendPayloadCalledV3) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, DisconnectFromDeviceCalledV3) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
@@ -1159,7 +1155,7 @@ TEST_F(ServiceControllerRouterTest, DisconnectFromDeviceCalledV3) {
|
||||
|
||||
TEST_F(ServiceControllerRouterTest, CancelPayloadV3Called) {
|
||||
// Either Advertising, or Discovery should be ongoing.
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, discovery_listener_,
|
||||
StartDiscovery(&client_, kServiceId, kDiscoveryOptions, DiscoveryListener{},
|
||||
[this](Status status) {
|
||||
MutexLock lock(&mutex_);
|
||||
result_ = status;
|
||||
|
||||
@@ -136,9 +136,9 @@ struct DiscoveryListener {
|
||||
// endpoint_id - The ID of the remote endpoint that was discovered.
|
||||
// endpoint_info - The info of the remote endpoint representd by ByteArray.
|
||||
// service_id - The ID of the service advertised by the remote endpoint.
|
||||
std::function<void(const std::string& endpoint_id,
|
||||
const ByteArray& endpoint_info,
|
||||
const std::string& service_id)>
|
||||
absl::AnyInvocable<void(const std::string& endpoint_id,
|
||||
const ByteArray& endpoint_info,
|
||||
const std::string& service_id)>
|
||||
endpoint_found_cb =
|
||||
[](const std::string&, const ByteArray&, const std::string&) {};
|
||||
|
||||
@@ -147,7 +147,7 @@ struct DiscoveryListener {
|
||||
// #onEndpointFound(String, DiscoveredEndpointInfo)}.
|
||||
//
|
||||
// endpoint_id - The ID of the remote endpoint that was lost.
|
||||
std::function<void(const std::string& endpoint_id)> endpoint_lost_cb =
|
||||
absl::AnyInvocable<void(const std::string& endpoint_id)> endpoint_lost_cb =
|
||||
[](const std::string&) {};
|
||||
|
||||
// Called when a remote endpoint is found with an updated distance.
|
||||
@@ -155,7 +155,7 @@ struct DiscoveryListener {
|
||||
// arguments:
|
||||
// endpoint_id - The ID of the remote endpoint that was lost.
|
||||
// info - The distance info, encoded as enum value.
|
||||
std::function<void(const std::string& endpoint_id, DistanceInfo info)>
|
||||
absl::AnyInvocable<void(const std::string& endpoint_id, DistanceInfo info)>
|
||||
endpoint_distance_changed_cb = [](const std::string&, DistanceInfo) {};
|
||||
};
|
||||
|
||||
|
||||
@@ -199,13 +199,14 @@ GNCStatus GNCStatusFromCppStatus(Status status) {
|
||||
DiscoveryOptions discovery_options = [discoveryOptions toCpp];
|
||||
|
||||
DiscoveryListener listener;
|
||||
listener.endpoint_found_cb = ^(const std::string &endpoint_id, const ByteArray &endpoint_info,
|
||||
const std::string &service_id) {
|
||||
listener.endpoint_found_cb = [delegate](const std::string &endpoint_id,
|
||||
const ByteArray &endpoint_info,
|
||||
const std::string &service_id) {
|
||||
NSString *endpointID = @(endpoint_id.c_str());
|
||||
NSData *info = [NSData dataWithBytes:endpoint_info.data() length:endpoint_info.size()];
|
||||
[delegate foundEndpoint:endpointID withEndpointInfo:info];
|
||||
};
|
||||
listener.endpoint_lost_cb = ^(const std::string &endpoint_id) {
|
||||
listener.endpoint_lost_cb = [delegate](const std::string &endpoint_id) {
|
||||
NSString *endpointID = @(endpoint_id.c_str());
|
||||
[delegate lostEndpoint:endpointID];
|
||||
};
|
||||
@@ -290,30 +291,30 @@ GNCStatus GNCStatusFromCppStatus(Status status) {
|
||||
GNCPayload *gncPayload = [GNCPayload fromCpp:std::move(payload)];
|
||||
[delegate receivedPayload:gncPayload fromEndpoint:endpointID];
|
||||
};
|
||||
listener.payload_progress_cb =
|
||||
[delegate](absl::string_view endpoint_id, const PayloadProgressInfo &info) {
|
||||
NSString *endpointID = @(std::string(endpoint_id).c_str());
|
||||
GNCPayloadStatus status;
|
||||
switch (info.status) {
|
||||
case PayloadProgressInfo::Status::kSuccess:
|
||||
status = GNCPayloadStatusSuccess;
|
||||
break;
|
||||
case PayloadProgressInfo::Status::kFailure:
|
||||
status = GNCPayloadStatusFailure;
|
||||
break;
|
||||
case PayloadProgressInfo::Status::kInProgress:
|
||||
status = GNCPayloadStatusInProgress;
|
||||
break;
|
||||
case PayloadProgressInfo::Status::kCanceled:
|
||||
status = GNCPayloadStatusCanceled;
|
||||
break;
|
||||
}
|
||||
[delegate receivedProgressUpdateForPayload:info.payload_id
|
||||
withStatus:status
|
||||
fromEndpoint:endpointID
|
||||
bytesTransfered:info.bytes_transferred
|
||||
totalBytes:info.total_bytes];
|
||||
};
|
||||
listener.payload_progress_cb = [delegate](absl::string_view endpoint_id,
|
||||
const PayloadProgressInfo &info) {
|
||||
NSString *endpointID = @(std::string(endpoint_id).c_str());
|
||||
GNCPayloadStatus status;
|
||||
switch (info.status) {
|
||||
case PayloadProgressInfo::Status::kSuccess:
|
||||
status = GNCPayloadStatusSuccess;
|
||||
break;
|
||||
case PayloadProgressInfo::Status::kFailure:
|
||||
status = GNCPayloadStatusFailure;
|
||||
break;
|
||||
case PayloadProgressInfo::Status::kInProgress:
|
||||
status = GNCPayloadStatusInProgress;
|
||||
break;
|
||||
case PayloadProgressInfo::Status::kCanceled:
|
||||
status = GNCPayloadStatusCanceled;
|
||||
break;
|
||||
}
|
||||
[delegate receivedProgressUpdateForPayload:info.payload_id
|
||||
withStatus:status
|
||||
fromEndpoint:endpointID
|
||||
bytesTransfered:info.bytes_transferred
|
||||
totalBytes:info.total_bytes];
|
||||
};
|
||||
|
||||
ResultListener result = [completionHandler](Status status) {
|
||||
NSError *err = NSErrorFromCppStatus(status);
|
||||
|
||||
Reference in New Issue
Block a user