mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 14:46:12 -04:00
Add Bluetooth Multiplex and WiFiLan Multiplex flags for better control.
PiperOrigin-RevId: 720337637
This commit is contained in:
@@ -1221,7 +1221,16 @@ std::int32_t ClientProxy::GetLocalMultiplexSocketBitmask() const {
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplex)) {
|
||||
std::int32_t multiplex_bitmask =
|
||||
kBtMultiplexEnabled | kWifiLanMultiplexEnabled;
|
||||
(NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexBluetooth)
|
||||
? kBtMultiplexEnabled
|
||||
: 0) |
|
||||
(NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan)
|
||||
? kWifiLanMultiplexEnabled
|
||||
: 0);
|
||||
NEARBY_LOGS(INFO) << "ClientProxy [GetLocalMultiplexSocketBitmask]: "
|
||||
<< multiplex_bitmask;
|
||||
return multiplex_bitmask;
|
||||
|
||||
@@ -1564,18 +1564,43 @@ TEST_F(ClientProxyTest, TestMultiplexSocketBitmask) {
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex,
|
||||
true);
|
||||
EXPECT_EQ(client1()->GetLocalMultiplexSocketBitmask(),
|
||||
ClientProxy::kBtMultiplexEnabled |
|
||||
ClientProxy::kWifiLanMultiplexEnabled);
|
||||
EXPECT_EQ(client1()->GetLocalMultiplexSocketBitmask(), 0);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexBluetooth,
|
||||
true);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan,
|
||||
true);
|
||||
EXPECT_EQ(
|
||||
client1()->GetLocalMultiplexSocketBitmask(),
|
||||
ClientProxy::kBtMultiplexEnabled | ClientProxy::kWifiLanMultiplexEnabled);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex,
|
||||
false);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexBluetooth,
|
||||
false);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(ClientProxyTest, TestRemoteMultiplexSocketBitmask) {
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex,
|
||||
true);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexBluetooth,
|
||||
true);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan,
|
||||
true);
|
||||
Endpoint advertising_endpoint =
|
||||
StartAdvertising(client1(), advertising_connection_listener_);
|
||||
OnAdvertisingConnectionInitiated(client1(), advertising_endpoint);
|
||||
@@ -1593,12 +1618,20 @@ TEST_F(ClientProxyTest, TestRemoteMultiplexSocketBitmask) {
|
||||
EXPECT_TRUE(client1()->IsMultiplexSocketSupported(advertising_endpoint.id,
|
||||
Medium::BLUETOOTH));
|
||||
EXPECT_TRUE(client1()->IsMultiplexSocketSupported(advertising_endpoint.id,
|
||||
Medium::WIFI_LAN));
|
||||
Medium::WIFI_LAN));
|
||||
EXPECT_FALSE(client1()->IsMultiplexSocketSupported(advertising_endpoint.id,
|
||||
Medium::WIFI_AWARE));
|
||||
Medium::WIFI_AWARE));
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex,
|
||||
false);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexBluetooth,
|
||||
false);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan,
|
||||
false);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -50,6 +50,12 @@ constexpr auto kEnableInstantOnLost =
|
||||
// When true, enable multiplexing in NC.
|
||||
constexpr auto kEnableMultiplex =
|
||||
flags::Flag<bool>(kConfigPackage, "45647946", false);
|
||||
// When true, enable multiplexing in NC for Bluetooth.
|
||||
constexpr auto kEnableMultiplexBluetooth =
|
||||
flags::Flag<bool>(kConfigPackage, "45676646", false);
|
||||
// When true, enable multiplexing in NC for WifiLan.
|
||||
constexpr auto kEnableMultiplexWifiLan =
|
||||
flags::Flag<bool>(kConfigPackage, "45676647", false);
|
||||
// Enable/Disable payload manager to skip chunk update.
|
||||
constexpr auto kEnablePayloadManagerToSkipChunkUpdate =
|
||||
flags::Flag<bool>(kConfigPackage, "45415729", true);
|
||||
|
||||
@@ -64,8 +64,13 @@ BluetoothClassic::BluetoothClassic(
|
||||
: radio_(radio),
|
||||
adapter_(radio_.GetBluetoothAdapter()),
|
||||
medium_(std::move(medium)) {
|
||||
is_multiplex_enabled_ = NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex);
|
||||
is_multiplex_enabled_ =
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplex) &&
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexBluetooth);
|
||||
}
|
||||
|
||||
BluetoothClassic::~BluetoothClassic() {
|
||||
|
||||
@@ -148,7 +148,8 @@ MultiplexSocket* MultiplexSocket::CreateIncomingSocket(
|
||||
return multiplex_incoming_socket;
|
||||
}
|
||||
NEARBY_LOGS(INFO) << "CreateIncomingSocket with serviceId=" << service_id
|
||||
<< ", serviceIdHashSalt=" << kFakeSalt;
|
||||
<< ", serviceIdHashSalt=" << kFakeSalt << " for medium="
|
||||
<< Medium_Name(physical_socket->GetMedium());
|
||||
|
||||
multiplex_incoming_socket->CreateFirstVirtualSocket(service_id,
|
||||
(std::string)kFakeSalt);
|
||||
@@ -194,7 +195,9 @@ MultiplexSocket* MultiplexSocket::CreateOutgoingSocket(
|
||||
return multiplex_outgoing_socket;
|
||||
}
|
||||
NEARBY_LOGS(INFO) << "CreateOutgoingSocket with serviceId=" << service_id
|
||||
<< ", serviceIdHashSalt=" << service_id_hash_salt;
|
||||
<< ", serviceIdHashSalt=" << service_id_hash_salt
|
||||
<< " for medium="
|
||||
<< Medium_Name(physical_socket->GetMedium());
|
||||
|
||||
multiplex_outgoing_socket->CreateFirstVirtualSocket(service_id,
|
||||
service_id_hash_salt);
|
||||
|
||||
@@ -208,7 +208,10 @@ class WifiLan {
|
||||
|
||||
// Whether the multiplex feature is enabled.
|
||||
bool is_multiplex_enabled_ = NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex);
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex) &&
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan);
|
||||
|
||||
// A map of IpAddress -> MultiplexSocket.
|
||||
absl::flat_hash_map<std::string, mediums::multiplex::MultiplexSocket*>
|
||||
|
||||
@@ -120,6 +120,13 @@ TEST_P(WifiLanTest, CanConnectWithMultiplex) {
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex,
|
||||
true);
|
||||
bool is_multiplex_enabled_wifi_lan = NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan,
|
||||
true);
|
||||
FeatureFlags feature_flags = GetParam();
|
||||
env_.SetFeatureFlags(feature_flags);
|
||||
env_.Start();
|
||||
@@ -179,6 +186,10 @@ TEST_P(WifiLanTest, CanConnectWithMultiplex) {
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::kEnableMultiplex,
|
||||
is_multiplex_enabled);
|
||||
NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableMultiplexWifiLan,
|
||||
is_multiplex_enabled_wifi_lan);
|
||||
}
|
||||
|
||||
TEST_P(WifiLanTest, CanCancelConnect) {
|
||||
|
||||
Reference in New Issue
Block a user