diff --git a/service-t/src/com/android/server/NsdService.java b/service-t/src/com/android/server/NsdService.java index 9ba49d2e5296d0ef473adac06a2c496672174e8b..c045eafe58bca7040d0e10294beea1c352450f49 100644 --- a/service-t/src/com/android/server/NsdService.java +++ b/service-t/src/com/android/server/NsdService.java @@ -92,6 +92,7 @@ import com.android.metrics.NetworkNsdReportedMetrics; import com.android.modules.utils.build.SdkLevel; import com.android.net.module.util.CollectionUtils; import com.android.net.module.util.DeviceConfigUtils; +import com.android.net.module.util.HandlerUtils; import com.android.net.module.util.InetAddressUtils; import com.android.net.module.util.PermissionUtils; import com.android.net.module.util.SharedLog; @@ -2510,6 +2511,14 @@ public class NsdService extends INsdManager.Stub { pw.increaseIndent(); mServiceLogs.reverseDump(pw); pw.decreaseIndent(); + + //Dump DiscoveryManager + pw.println(); + pw.println("DiscoveryManager:"); + pw.increaseIndent(); + HandlerUtils.runWithScissorsForDump( + mNsdStateMachine.getHandler(), () -> mMdnsDiscoveryManager.dump(pw), 10_000); + pw.decreaseIndent(); } private abstract static class ClientRequest { diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java b/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java index 1d6039c05ab5baf4f03c20531860ccd2321a158d..21b706996c303523f7fe8b71fcc9819e13f86ab0 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java @@ -34,6 +34,7 @@ import com.android.net.module.util.SharedLog; import com.android.server.connectivity.mdns.util.MdnsUtils; import java.io.IOException; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -363,4 +364,18 @@ public class MdnsDiscoveryManager implements MdnsSocketClientBase.Callback { executorProvider.newServiceTypeClientSchedulerExecutor(), socketKey, sharedLog.forSubComponent(tag), looper, serviceCache); } + + /** + * Dump DiscoveryManager state. + */ + public void dump(PrintWriter pw) { + discoveryExecutor.checkAndRunOnHandlerThread(() -> { + pw.println(); + // Dump ServiceTypeClients + for (MdnsServiceTypeClient serviceTypeClient + : perSocketServiceTypeClients.getAllMdnsServiceTypeClient()) { + serviceTypeClient.dump(pw); + } + }); + } } \ No newline at end of file diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java index e222fcfdb890eaa393a28aad6d894e60a15de7b7..33b5ea493bb559f99cb05e8d80f2187cbcbf0404 100644 --- a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java +++ b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java @@ -35,6 +35,7 @@ import com.android.net.module.util.CollectionUtils; import com.android.net.module.util.SharedLog; import com.android.server.connectivity.mdns.util.MdnsUtils; +import java.io.PrintWriter; import java.net.Inet4Address; import java.net.Inet6Address; import java.util.ArrayList; @@ -756,4 +757,13 @@ public class MdnsServiceTypeClient { args.sessionId, timeToNextTasksWithBackoffInMs)); return timeToNextTasksWithBackoffInMs; } + + /** + * Dump ServiceTypeClient state. + */ + public void dump(PrintWriter pw) { + ensureRunningOnHandlerThread(handler); + pw.println("ServiceTypeClient: Type{" + serviceType + "} " + socketKey + " with " + + listeners.size() + " listeners."); + } } \ No newline at end of file