20
20
import android .net .nsd .NsdManager ;
21
21
import android .net .nsd .NsdServiceInfo ;
22
22
import android .util .Log ;
23
+ import chip .platform .NsdManagerServiceResolver ;
23
24
import java .util .List ;
24
25
25
26
public class NsdDiscoveryListener implements NsdManager .DiscoveryListener {
@@ -31,20 +32,23 @@ public class NsdDiscoveryListener implements NsdManager.DiscoveryListener {
31
32
private final List <VideoPlayer > preCommissionedVideoPlayers ;
32
33
private final SuccessCallback <DiscoveredNodeData > successCallback ;
33
34
private final FailureCallback failureCallback ;
35
+ private final NsdManagerServiceResolver .NsdManagerResolverAvailState nsdManagerResolverAvailState ;
34
36
35
37
public NsdDiscoveryListener (
36
38
NsdManager nsdManager ,
37
39
String targetServiceType ,
38
40
List <Long > deviceTypeFilter ,
39
41
List <VideoPlayer > preCommissionedVideoPlayers ,
40
42
SuccessCallback <DiscoveredNodeData > successCallback ,
41
- FailureCallback failureCallback ) {
43
+ FailureCallback failureCallback ,
44
+ NsdManagerServiceResolver .NsdManagerResolverAvailState nsdManagerResolverAvailState ) {
42
45
this .nsdManager = nsdManager ;
43
46
this .targetServiceType = targetServiceType ;
44
47
this .deviceTypeFilter = deviceTypeFilter ;
45
48
this .preCommissionedVideoPlayers = preCommissionedVideoPlayers ;
46
49
this .successCallback = successCallback ;
47
50
this .failureCallback = failureCallback ;
51
+ this .nsdManagerResolverAvailState = nsdManagerResolverAvailState ;
48
52
}
49
53
50
54
@ Override
@@ -56,14 +60,18 @@ public void onDiscoveryStarted(String regType) {
56
60
public void onServiceFound (NsdServiceInfo service ) {
57
61
Log .d (TAG , "Service discovery success. " + service );
58
62
if (service .getServiceType ().equals (targetServiceType )) {
63
+ if (nsdManagerResolverAvailState != null ) {
64
+ nsdManagerResolverAvailState .acquireResolver ();
65
+ }
59
66
nsdManager .resolveService (
60
67
service ,
61
68
new NsdResolveListener (
62
69
nsdManager ,
63
70
deviceTypeFilter ,
64
71
preCommissionedVideoPlayers ,
65
72
successCallback ,
66
- failureCallback ));
73
+ failureCallback ,
74
+ nsdManagerResolverAvailState ));
67
75
} else {
68
76
Log .d (TAG , "Ignoring discovered service: " + service .toString ());
69
77
}
@@ -79,6 +87,9 @@ public void onServiceLost(NsdServiceInfo service) {
79
87
@ Override
80
88
public void onDiscoveryStopped (String serviceType ) {
81
89
Log .i (TAG , "Discovery stopped: " + serviceType );
90
+ if (nsdManagerResolverAvailState != null ) {
91
+ nsdManagerResolverAvailState .signalFree ();
92
+ }
82
93
}
83
94
84
95
@ Override
@@ -93,6 +104,9 @@ public void onStartDiscoveryFailed(String serviceType, int errorCode) {
93
104
@ Override
94
105
public void onStopDiscoveryFailed (String serviceType , int errorCode ) {
95
106
Log .e (TAG , "Discovery failed to stop: Error code:" + errorCode );
107
+ if (nsdManagerResolverAvailState != null ) {
108
+ nsdManagerResolverAvailState .signalFree ();
109
+ }
96
110
failureCallback .handle (
97
111
new MatterError (
98
112
3 , "NsdDiscoveryListener Discovery failed to stop: Nsd Error code:" + errorCode ));
0 commit comments