=== SqueezeboxJiveApplet.lua ================================================================== --- SqueezeboxJiveApplet.lua (revision 21063) +++ SqueezeboxJiveApplet.lua (local) @@ -282,26 +282,55 @@ function notify_playerCurrent(self, player) + + local server + if player then + self.player = player + self.server = player:getSlimServer() + else + return + end + + if self.clockTimer then + log:warn('removing SC/SN clock sync timer for player: ', player:getId()) + self.clockTimer:stop() + end + local sink = function(chunk, err) if err then log:warn(err) return end + log:warn('setting clock to SC/SN time: ', chunk.data.date) self:setDate(chunk.data.date) - -- FIXME schedule updates from server - end + end - if player then - player.slimServer.comet:request(sink, - player:getId(), - { 'date' } - ) - end + + self.server.comet:request(sink, + player:getId(), + { 'date' } + ) + + -- start a recurring timer for synching to SC/SN + --self.clockTimer = Timer(6000000, -- 1 hour + self.clockTimer = Timer(10000, -- 10 seconds for testing + function() + log:warn('in the timer callback') + if self.player and self.server then + self.server.comet:request(sink, + self.player:getId(), + { 'date' } + ) + end + end + false) + --self.clockTimer:start() + self.clockTimer:start() + end - function setDate(self, date) -- matches date format 2007-09-08T20:40:42+00:00 local CCYY, MM, DD, hh, mm, ss, TZ = string.match(date, "(%d%d%d%d)%-(%d%d)%-(%d%d)T(%d%d):(%d%d):(%d%d)([-+]%d%d:%d%d)")