Merge "Matches all MdnsServiceTypeClient if using MdnsSocketClient" am: c2baf9403a am: bd3e3ec1b7

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2606592

Change-Id: I85cf532d83174f2bc23b5bae293afe546574f384
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Yuyang Huang
2023-05-31 11:59:57 +00:00
committed by Automerger Merge Worker
5 changed files with 24 additions and 2 deletions

View File

@@ -251,11 +251,19 @@ public class MdnsDiscoveryManager implements MdnsSocketClientBase.Callback {
private void handleOnResponseReceived(@NonNull MdnsPacket packet, int interfaceIndex,
@Nullable Network network) {
for (MdnsServiceTypeClient serviceTypeClient
: perNetworkServiceTypeClients.getByNetwork(network)) {
: getMdnsServiceTypeClient(network)) {
serviceTypeClient.processResponse(packet, interfaceIndex, network);
}
}
private List<MdnsServiceTypeClient> getMdnsServiceTypeClient(@Nullable Network network) {
if (socketClient.supportsRequestingSpecificNetworks()) {
return perNetworkServiceTypeClients.getByNetwork(network);
} else {
return perNetworkServiceTypeClients.getByNetwork(null);
}
}
@Override
public void onFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode,
@Nullable Network network) {
@@ -266,7 +274,7 @@ public class MdnsDiscoveryManager implements MdnsSocketClientBase.Callback {
private void handleOnFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode,
@Nullable Network network) {
for (MdnsServiceTypeClient serviceTypeClient
: perNetworkServiceTypeClients.getByNetwork(network)) {
: getMdnsServiceTypeClient(network)) {
serviceTypeClient.onFailedToParseMdnsResponse(receivedPacketNumber, errorCode);
}
}

View File

@@ -210,6 +210,11 @@ public class MdnsMultinetworkSocketClient implements MdnsSocketClientBase {
return mHandler.getLooper();
}
@Override
public boolean supportsRequestingSpecificNetworks() {
return true;
}
private void sendMdnsPacket(@NonNull DatagramPacket packet, @Nullable Network targetNetwork) {
final boolean isIpv6 = ((InetSocketAddress) packet.getSocketAddress()).getAddress()
instanceof Inet6Address;

View File

@@ -238,6 +238,11 @@ public class MdnsSocketClient implements MdnsSocketClientBase {
socketCreationCallback.onSocketCreated(null);
}
@Override
public boolean supportsRequestingSpecificNetworks() {
return false;
}
private void sendMdnsPacket(DatagramPacket packet, Queue<DatagramPacket> packetQueueToUse) {
if (shouldStopSocketLoop && !MdnsConfigs.allowAddMdnsPacketAfterDiscoveryStops()) {
LOGGER.w("sendMdnsPacket() is called after discovery already stopped");

View File

@@ -67,6 +67,9 @@ public interface MdnsSocketClientBase {
return null;
}
/** Returns whether the socket client support requesting per network */
boolean supportsRequestingSpecificNetworks();
/*** Callback for mdns response */
interface Callback {
/*** Receive a mdns response */

View File

@@ -99,6 +99,7 @@ public class MdnsDiscoveryManagerTests {
thread.start();
handler = new Handler(thread.getLooper());
doReturn(thread.getLooper()).when(socketClient).getLooper();
doReturn(true).when(socketClient).supportsRequestingSpecificNetworks();
discoveryManager = new MdnsDiscoveryManager(executorProvider, socketClient,
sharedLog) {
@Override