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, private void handleOnResponseReceived(@NonNull MdnsPacket packet, int interfaceIndex,
@Nullable Network network) { @Nullable Network network) {
for (MdnsServiceTypeClient serviceTypeClient for (MdnsServiceTypeClient serviceTypeClient
: perNetworkServiceTypeClients.getByNetwork(network)) { : getMdnsServiceTypeClient(network)) {
serviceTypeClient.processResponse(packet, interfaceIndex, 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 @Override
public void onFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode, public void onFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode,
@Nullable Network network) { @Nullable Network network) {
@@ -266,7 +274,7 @@ public class MdnsDiscoveryManager implements MdnsSocketClientBase.Callback {
private void handleOnFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode, private void handleOnFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode,
@Nullable Network network) { @Nullable Network network) {
for (MdnsServiceTypeClient serviceTypeClient for (MdnsServiceTypeClient serviceTypeClient
: perNetworkServiceTypeClients.getByNetwork(network)) { : getMdnsServiceTypeClient(network)) {
serviceTypeClient.onFailedToParseMdnsResponse(receivedPacketNumber, errorCode); serviceTypeClient.onFailedToParseMdnsResponse(receivedPacketNumber, errorCode);
} }
} }

View File

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

View File

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

View File

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

View File

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