21
21
import android .net .nsd .NsdManager ;
22
22
import android .net .nsd .NsdServiceInfo ;
23
23
import android .net .wifi .WifiManager .MulticastLock ;
24
- import android .os .Handler ;
25
24
import android .util .Log ;
26
25
import androidx .annotation .Nullable ;
27
26
import java .util .concurrent .Executors ;
@@ -38,9 +37,8 @@ class NsdServiceFinderAndResolver implements NsdManager.DiscoveryListener {
38
37
private final long callbackHandle ;
39
38
private final long contextHandle ;
40
39
private final ChipMdnsCallback chipMdnsCallback ;
41
- private final Runnable timeoutRunnable ;
42
40
private final MulticastLock multicastLock ;
43
- private final Handler mainThreadHandler ;
41
+ private final ScheduledFuture <?> resolveTimeoutExecutor ;
44
42
45
43
@ Nullable
46
44
private final NsdManagerServiceResolver .NsdManagerResolverAvailState nsdManagerResolverAvailState ;
@@ -53,18 +51,16 @@ public NsdServiceFinderAndResolver(
53
51
final long callbackHandle ,
54
52
final long contextHandle ,
55
53
final ChipMdnsCallback chipMdnsCallback ,
56
- final Runnable timeoutRunnable ,
57
54
final MulticastLock multicastLock ,
58
- final Handler mainThreadHandler ,
55
+ final ScheduledFuture <?> resolveTimeoutExecutor ,
59
56
final NsdManagerServiceResolver .NsdManagerResolverAvailState nsdManagerResolverAvailState ) {
60
57
this .nsdManager = nsdManager ;
61
58
this .targetServiceInfo = targetServiceInfo ;
62
59
this .callbackHandle = callbackHandle ;
63
60
this .contextHandle = contextHandle ;
64
61
this .chipMdnsCallback = chipMdnsCallback ;
65
- this .timeoutRunnable = timeoutRunnable ;
66
62
this .multicastLock = multicastLock ;
67
- this .mainThreadHandler = mainThreadHandler ;
63
+ this .resolveTimeoutExecutor = resolveTimeoutExecutor ;
68
64
this .nsdManagerResolverAvailState = nsdManagerResolverAvailState ;
69
65
}
70
66
@@ -101,16 +97,9 @@ public void onServiceFound(NsdServiceInfo service) {
101
97
102
98
if (stopDiscoveryRunnable .cancel (false )) {
103
99
nsdManager .stopServiceDiscovery (this );
104
- if (multicastLock .isHeld ()) {
105
- multicastLock .release ();
106
- }
107
100
}
108
101
109
- if (nsdManagerResolverAvailState != null ) {
110
- nsdManagerResolverAvailState .acquireResolver ();
111
- }
112
-
113
- resolveService (service , callbackHandle , contextHandle , chipMdnsCallback , timeoutRunnable );
102
+ resolveService (service , callbackHandle , contextHandle , chipMdnsCallback );
114
103
} else {
115
104
Log .d (TAG , "onServiceFound: found service not a target for resolution, ignoring " + service );
116
105
}
@@ -120,8 +109,7 @@ private void resolveService(
120
109
NsdServiceInfo serviceInfo ,
121
110
final long callbackHandle ,
122
111
final long contextHandle ,
123
- final ChipMdnsCallback chipMdnsCallback ,
124
- Runnable timeoutRunnable ) {
112
+ final ChipMdnsCallback chipMdnsCallback ) {
125
113
this .nsdManager .resolveService (
126
114
serviceInfo ,
127
115
new NsdManager .ResolveListener () {
@@ -152,7 +140,7 @@ public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
152
140
nsdManagerResolverAvailState .signalFree ();
153
141
}
154
142
}
155
- mainThreadHandler . removeCallbacks ( timeoutRunnable );
143
+ resolveTimeoutExecutor . cancel ( false );
156
144
}
157
145
158
146
@ Override
@@ -188,7 +176,7 @@ public void onServiceResolved(NsdServiceInfo serviceInfo) {
188
176
nsdManagerResolverAvailState .signalFree ();
189
177
}
190
178
}
191
- mainThreadHandler . removeCallbacks ( timeoutRunnable );
179
+ resolveTimeoutExecutor . cancel ( false );
192
180
}
193
181
});
194
182
}
0 commit comments