@@ -22,9 +22,12 @@ local SonosRestApi = require "api.rest"
22
22
--- @class SonosConnection
23
23
--- @field public driver SonosDriver reference to the Edge Driver
24
24
--- @field public device SonosDevice the player for this connection
25
- --- @field private _self_listener_uuid string
26
- --- @field private _coord_listener_uuid string
27
- --- @field private _initialized boolean
25
+ --- @field package _self_listener_uuid string
26
+ --- @field package _coord_listener_uuid string
27
+ --- @field package _initialized boolean
28
+ --- @field package on_message fun (... )?
29
+ --- @field package on_error fun (... )?
30
+ --- @field package on_close fun (... )?
28
31
local SonosConnection = {}
29
32
SonosConnection .__index = SonosConnection
30
33
@@ -175,7 +178,7 @@ local function _spawn_reconnect_task(sonos_conn)
175
178
cosock .spawn (function ()
176
179
local backoff = backoff_builder (60 , 1 , 0.1 )
177
180
while not sonos_conn :is_running () do
178
- if sonos_conn .driver .waiting_for_token and token_receive_handle then
181
+ if sonos_conn .driver .is_waiting_for_token () and token_receive_handle then
179
182
local token , channel_error = token_receive_handle :receive ()
180
183
if not token then
181
184
log .warn (string.format (" Error requesting token: %s" , channel_error ))
@@ -264,7 +267,7 @@ function SonosConnection.new(driver, device)
264
267
end
265
268
local group = household .groups [header .groupId ] or { playerIds = {} }
266
269
for _ , player_id in ipairs (group .playerIds ) do
267
- local device_for_player = self .driver . _player_id_to_device [ player_id ]
270
+ local device_for_player = self .driver : device_for_player_id ( player_id )
268
271
--- we've seen situations where these messages can be processed while a device
269
272
--- is being deleted so we check for the presence of emit event as a proxy for
270
273
--- whether or not this device is currently capable of emitting events.
@@ -286,7 +289,7 @@ function SonosConnection.new(driver, device)
286
289
end
287
290
local group = household .groups [header .groupId ] or { playerIds = {} }
288
291
for _ , player_id in ipairs (group .playerIds ) do
289
- local device_for_player = self .driver . _player_id_to_device [ player_id ]
292
+ local device_for_player = self .driver : device_for_player_id ( player_id )
290
293
--- we've seen situations where these messages can be processed while a device
291
294
--- is being deleted so we check for the presence of emit event as a proxy for
292
295
--- whether or not this device is currently capable of emitting events.
@@ -307,7 +310,7 @@ function SonosConnection.new(driver, device)
307
310
end
308
311
local group = household .groups [header .groupId ] or { playerIds = {} }
309
312
for _ , player_id in ipairs (group .playerIds ) do
310
- local device_for_player = self .driver . _player_id_to_device [ player_id ]
313
+ local device_for_player = self .driver : device_for_player_id ( player_id )
311
314
--- we've seen situations where these messages can be processed while a device
312
315
--- is being deleted so we check for the presence of emit event as a proxy for
313
316
--- whether or not this device is currently capable of emitting events.
@@ -355,7 +358,7 @@ function SonosConnection.new(driver, device)
355
358
self .driver .sonos :update_household_favorites (header .householdId , new_favorites )
356
359
357
360
for _ , player_id in ipairs (group .playerIds ) do
358
- local device_for_player = self .driver . _player_id_to_device [ player_id ]
361
+ local device_for_player = self .driver : device_for_player_id ( player_id )
359
362
--- we've seen situations where these messages can be processed while a device
360
363
--- is being deleted so we check for the presence of emit event as a proxy for
361
364
--- whether or not this device is currently capable of emitting events.
@@ -479,12 +482,11 @@ function SonosConnection:start()
479
482
-- once we know what a forbidden/unauthorized error will look like.
480
483
local connection_successful = true
481
484
if not connection_successful then
482
- if not self .driver .waiting_for_token then
485
+ if not self .driver .is_waiting_for_token () then
483
486
local err = self .driver :get_oauth_token ()
484
487
if err then
485
488
log .warn (string.format (" notice: get_oauth_token -> %s" , err ))
486
489
end
487
- self .driver .waiting_for_token = true
488
490
self .on_close ()
489
491
end
490
492
return false
0 commit comments