@@ -29,7 +29,7 @@ enum Signal {
2929pub struct BluetoothAdapter {
3030 base : Base < Resource > ,
3131 rx : Receiver < Signal > ,
32- conn : Option < zbus :: blocking :: Connection > ,
32+ proxy : Option < Adapter1ProxyBlocking < ' static > > ,
3333
3434 #[ allow( dead_code) ]
3535 #[ var( get = get_dbus_path) ]
@@ -125,11 +125,22 @@ impl BluetoothAdapter {
125125 // Create a connection to DBus
126126 let conn = get_dbus_system_blocking ( ) . ok ( ) ;
127127
128+ // Return a proxy instance to the adapter
129+ let proxy = if let Some ( conn) = conn. as_ref ( ) {
130+ let path: String = path. clone ( ) . into ( ) ;
131+ Adapter1ProxyBlocking :: builder ( conn)
132+ . path ( path)
133+ . ok ( )
134+ . and_then ( |builder| builder. build ( ) . ok ( ) )
135+ } else {
136+ None
137+ } ;
138+
128139 // Accept a base of type Base<Resource> and directly forward it.
129140 Self {
130141 base,
131142 rx,
132- conn ,
143+ proxy ,
133144 dbus_path : path,
134145 address : Default :: default ( ) ,
135146 address_type : Default :: default ( ) ,
@@ -153,19 +164,6 @@ impl BluetoothAdapter {
153164 } )
154165 }
155166
156- /// Return a proxy instance to the adapter
157- fn get_proxy ( & self ) -> Option < Adapter1ProxyBlocking > {
158- if let Some ( conn) = self . conn . as_ref ( ) {
159- let path: String = self . dbus_path . clone ( ) . into ( ) ;
160- Adapter1ProxyBlocking :: builder ( conn)
161- . path ( path)
162- . ok ( )
163- . and_then ( |builder| builder. build ( ) . ok ( ) )
164- } else {
165- None
166- }
167- }
168-
169167 /// Get or create a [BluetoothAdapter] with the given DBus path. If an instance
170168 /// already exists with the given path, then it will be loaded from the resource
171169 /// cache.
@@ -199,31 +197,31 @@ impl BluetoothAdapter {
199197
200198 #[ func]
201199 pub fn get_address ( & self ) -> GString {
202- let Some ( proxy) = self . get_proxy ( ) else {
200+ let Some ( proxy) = self . proxy . as_ref ( ) else {
203201 return Default :: default ( ) ;
204202 } ;
205203 proxy. address ( ) . unwrap_or_default ( ) . into ( )
206204 }
207205
208206 #[ func]
209207 pub fn get_address_type ( & self ) -> GString {
210- let Some ( proxy) = self . get_proxy ( ) else {
208+ let Some ( proxy) = self . proxy . as_ref ( ) else {
211209 return Default :: default ( ) ;
212210 } ;
213211 proxy. address_type ( ) . unwrap_or_default ( ) . into ( )
214212 }
215213
216214 #[ func]
217215 pub fn get_alias ( & self ) -> GString {
218- let Some ( proxy) = self . get_proxy ( ) else {
216+ let Some ( proxy) = self . proxy . as_ref ( ) else {
219217 return Default :: default ( ) ;
220218 } ;
221219 proxy. alias ( ) . unwrap_or_default ( ) . into ( )
222220 }
223221
224222 #[ func]
225223 pub fn set_alias ( & self , value : GString ) {
226- let Some ( proxy) = self . get_proxy ( ) else {
224+ let Some ( proxy) = self . proxy . as_ref ( ) else {
227225 return Default :: default ( ) ;
228226 } ;
229227 proxy
@@ -233,55 +231,55 @@ impl BluetoothAdapter {
233231
234232 #[ func]
235233 pub fn get_class ( & self ) -> u32 {
236- let Some ( proxy) = self . get_proxy ( ) else {
234+ let Some ( proxy) = self . proxy . as_ref ( ) else {
237235 return Default :: default ( ) ;
238236 } ;
239237 proxy. class ( ) . unwrap_or_default ( )
240238 }
241239
242240 #[ func]
243241 pub fn get_discoverable ( & self ) -> bool {
244- let Some ( proxy) = self . get_proxy ( ) else {
242+ let Some ( proxy) = self . proxy . as_ref ( ) else {
245243 return Default :: default ( ) ;
246244 } ;
247245 proxy. discoverable ( ) . unwrap_or_default ( )
248246 }
249247
250248 #[ func]
251249 pub fn set_discoverable ( & self , value : bool ) {
252- let Some ( proxy) = self . get_proxy ( ) else {
250+ let Some ( proxy) = self . proxy . as_ref ( ) else {
253251 return Default :: default ( ) ;
254252 } ;
255253 proxy. set_discoverable ( value) . unwrap_or_default ( )
256254 }
257255
258256 #[ func]
259257 pub fn get_discoverable_timeout ( & self ) -> u32 {
260- let Some ( proxy) = self . get_proxy ( ) else {
258+ let Some ( proxy) = self . proxy . as_ref ( ) else {
261259 return Default :: default ( ) ;
262260 } ;
263261 proxy. discoverable_timeout ( ) . unwrap_or_default ( )
264262 }
265263
266264 #[ func]
267265 pub fn set_discoverable_timeout ( & self , value : u32 ) {
268- let Some ( proxy) = self . get_proxy ( ) else {
266+ let Some ( proxy) = self . proxy . as_ref ( ) else {
269267 return Default :: default ( ) ;
270268 } ;
271269 proxy. set_discoverable_timeout ( value) . unwrap_or_default ( )
272270 }
273271
274272 #[ func]
275273 pub fn get_discovering ( & self ) -> bool {
276- let Some ( proxy) = self . get_proxy ( ) else {
274+ let Some ( proxy) = self . proxy . as_ref ( ) else {
277275 return Default :: default ( ) ;
278276 } ;
279277 proxy. discovering ( ) . unwrap_or_default ( )
280278 }
281279
282280 #[ func]
283281 pub fn get_experimental_features ( & self ) -> PackedStringArray {
284- let Some ( proxy) = self . get_proxy ( ) else {
282+ let Some ( proxy) = self . proxy . as_ref ( ) else {
285283 return Default :: default ( ) ;
286284 } ;
287285 let values: Vec < GString > = proxy
@@ -295,87 +293,87 @@ impl BluetoothAdapter {
295293
296294 #[ func]
297295 pub fn get_manufacturer ( & self ) -> u16 {
298- let Some ( proxy) = self . get_proxy ( ) else {
296+ let Some ( proxy) = self . proxy . as_ref ( ) else {
299297 return Default :: default ( ) ;
300298 } ;
301299 proxy. manufacturer ( ) . unwrap_or_default ( )
302300 }
303301
304302 #[ func]
305303 pub fn get_modalias ( & self ) -> GString {
306- let Some ( proxy) = self . get_proxy ( ) else {
304+ let Some ( proxy) = self . proxy . as_ref ( ) else {
307305 return Default :: default ( ) ;
308306 } ;
309307 proxy. modalias ( ) . unwrap_or_default ( ) . into ( )
310308 }
311309
312310 #[ func]
313311 pub fn get_name ( & self ) -> GString {
314- let Some ( proxy) = self . get_proxy ( ) else {
312+ let Some ( proxy) = self . proxy . as_ref ( ) else {
315313 return Default :: default ( ) ;
316314 } ;
317315 proxy. name ( ) . unwrap_or_default ( ) . into ( )
318316 }
319317
320318 #[ func]
321319 pub fn get_pairable ( & self ) -> bool {
322- let Some ( proxy) = self . get_proxy ( ) else {
320+ let Some ( proxy) = self . proxy . as_ref ( ) else {
323321 return Default :: default ( ) ;
324322 } ;
325323 proxy. pairable ( ) . unwrap_or_default ( )
326324 }
327325
328326 #[ func]
329327 pub fn set_pairable ( & self , value : bool ) {
330- let Some ( proxy) = self . get_proxy ( ) else {
328+ let Some ( proxy) = self . proxy . as_ref ( ) else {
331329 return Default :: default ( ) ;
332330 } ;
333331 proxy. set_pairable ( value) . unwrap_or_default ( )
334332 }
335333
336334 #[ func]
337335 pub fn get_pairable_timeout ( & self ) -> u32 {
338- let Some ( proxy) = self . get_proxy ( ) else {
336+ let Some ( proxy) = self . proxy . as_ref ( ) else {
339337 return Default :: default ( ) ;
340338 } ;
341339 proxy. pairable_timeout ( ) . unwrap_or_default ( )
342340 }
343341
344342 #[ func]
345343 pub fn set_pairable_timeout ( & self , value : u32 ) {
346- let Some ( proxy) = self . get_proxy ( ) else {
344+ let Some ( proxy) = self . proxy . as_ref ( ) else {
347345 return Default :: default ( ) ;
348346 } ;
349347 proxy. set_pairable_timeout ( value) . unwrap_or_default ( )
350348 }
351349
352350 #[ func]
353351 pub fn get_power_state ( & self ) -> GString {
354- let Some ( proxy) = self . get_proxy ( ) else {
352+ let Some ( proxy) = self . proxy . as_ref ( ) else {
355353 return Default :: default ( ) ;
356354 } ;
357355 proxy. power_state ( ) . unwrap_or_default ( ) . into ( )
358356 }
359357
360358 #[ func]
361359 pub fn get_powered ( & self ) -> bool {
362- let Some ( proxy) = self . get_proxy ( ) else {
360+ let Some ( proxy) = self . proxy . as_ref ( ) else {
363361 return Default :: default ( ) ;
364362 } ;
365363 proxy. powered ( ) . unwrap_or_default ( )
366364 }
367365
368366 #[ func]
369367 pub fn set_powered ( & self , value : bool ) {
370- let Some ( proxy) = self . get_proxy ( ) else {
368+ let Some ( proxy) = self . proxy . as_ref ( ) else {
371369 return Default :: default ( ) ;
372370 } ;
373371 proxy. set_powered ( value) . unwrap_or_default ( )
374372 }
375373
376374 #[ func]
377375 pub fn get_roles ( & self ) -> PackedStringArray {
378- let Some ( proxy) = self . get_proxy ( ) else {
376+ let Some ( proxy) = self . proxy . as_ref ( ) else {
379377 return Default :: default ( ) ;
380378 } ;
381379 let values: Vec < GString > = proxy
@@ -389,7 +387,7 @@ impl BluetoothAdapter {
389387
390388 #[ func]
391389 pub fn get_uuids ( & self ) -> PackedStringArray {
392- let Some ( proxy) = self . get_proxy ( ) else {
390+ let Some ( proxy) = self . proxy . as_ref ( ) else {
393391 return Default :: default ( ) ;
394392 } ;
395393 let values: Vec < GString > = proxy
@@ -403,15 +401,15 @@ impl BluetoothAdapter {
403401
404402 #[ func]
405403 pub fn get_version ( & self ) -> u8 {
406- let Some ( proxy) = self . get_proxy ( ) else {
404+ let Some ( proxy) = self . proxy . as_ref ( ) else {
407405 return Default :: default ( ) ;
408406 } ;
409407 proxy. version ( ) . unwrap_or_default ( )
410408 }
411409
412410 #[ func]
413411 pub fn get_discovery_filters ( & self ) -> PackedStringArray {
414- let Some ( proxy) = self . get_proxy ( ) else {
412+ let Some ( proxy) = self . proxy . as_ref ( ) else {
415413 return Default :: default ( ) ;
416414 } ;
417415 let filters: Vec < GString > = proxy
@@ -425,7 +423,7 @@ impl BluetoothAdapter {
425423
426424 #[ func]
427425 pub fn remove_device ( & self , device : Gd < BluetoothDevice > ) {
428- let Some ( proxy) = self . get_proxy ( ) else {
426+ let Some ( proxy) = self . proxy . as_ref ( ) else {
429427 return ;
430428 } ;
431429 let path = device. bind ( ) . get_dbus_path ( ) . to_string ( ) ;
@@ -435,15 +433,15 @@ impl BluetoothAdapter {
435433
436434 #[ func]
437435 pub fn start_discovery ( & self ) {
438- let Some ( proxy) = self . get_proxy ( ) else {
436+ let Some ( proxy) = self . proxy . as_ref ( ) else {
439437 return ;
440438 } ;
441439 proxy. start_discovery ( ) . unwrap_or_default ( )
442440 }
443441
444442 #[ func]
445443 pub fn stop_discovery ( & self ) {
446- let Some ( proxy) = self . get_proxy ( ) else {
444+ let Some ( proxy) = self . proxy . as_ref ( ) else {
447445 return ;
448446 } ;
449447 proxy. stop_discovery ( ) . unwrap_or_default ( )
0 commit comments