Author: titmuss
Date: Fri Jul  4 05:58:07 2008
New Revision: 2662

URL: http://svn.slimdevices.com?rev=2662&root=Jive&view=rev
Log:
Bug: 5378
Description:
Added a SlimServer:userRequest() method. This tracks the number of outstanding 
user requests, only if user requests are 
outstanding will the connection error screen displayed, and wake on lan packets 
be sent. This fixes the problem of SC being 
woken at the wrong time.


Modified:
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/InfoBrowser/InfoBrowserApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupAppletInstaller/SetupAppletInstallerApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupNetTest/SetupNetTestApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/SetupSoundEffectsApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SqueezeNetworkPIN/SqueezeNetworkPINApplet.lua
    7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/Comet.lua
    7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua
    7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
    7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua
    
7.1/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -327,7 +327,7 @@
                end
        end
 
-       server:request(playerRegisterSink, nil, cmd)
+       server:userRequest(playerRegisterSink, nil, cmd)
 end
 
 

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/InfoBrowser/InfoBrowserApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/InfoBrowser/InfoBrowserApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/InfoBrowser/InfoBrowserApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/InfoBrowser/InfoBrowserApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -71,7 +71,7 @@
 -- request for items
 function request(self, index, start, window, widget, list, prevmenu, locked)
 
-       self.server:request(
+       self.server:userRequest(
                function(chunk, err)
                        if err then
                                log:debug(err)
@@ -111,7 +111,7 @@
                                                           local newmenu = 
SimpleMenu("menu", newlist)
                                                           
newwindow:addWidget(newmenu)
                                                           widget:lock()
-                                                          
self:request(entry.id, 0, newwindow, newmenu, newlist, widget, true)
+                                                          
self:userRequest(entry.id, 0, newwindow, newmenu, newlist, widget, true)
                                                   end
                        }
                elseif entry.description then
@@ -138,7 +138,7 @@
                                                window:bumpRight()
                                        end
                                        -- fetch next item and update index on 
previous menu to match
-                                       self:request(pre .. "." .. tostring(c), 
0, window, widget, list, prevmenu)
+                                       self:userRequest(pre .. "." .. 
tostring(c), 0, window, widget, list, prevmenu)
                                        prevmenu:setSelectedIndex(c+1)
                                        return EVENT_CONSUME
                                end)
@@ -150,7 +150,7 @@
                widget:setItems(list)
                local pre, c = _split(id)
                if c < result.count - 1 then
-                       self:request(pre, c + 1, window, widget, list, prevmenu)
+                       self:userRequest(pre, c + 1, window, widget, list, 
prevmenu)
                end
        end
 end

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupAppletInstaller/SetupAppletInstallerApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupAppletInstaller/SetupAppletInstallerApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupAppletInstaller/SetupAppletInstallerApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupAppletInstaller/SetupAppletInstallerApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -77,7 +77,7 @@
 
        -- ask about its applets
        if self.server then
-               self.server:request(
+               self.server:userRequest(
                        function(chunk, err)
                                if err then
                                        log:debug(err)

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupLanguage/SetupLanguageApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -168,7 +168,7 @@
        if player then
                local server = player:getSlimServer()
                if server then
-                        server:request(nil, player:getId(), { 'menu', 0, 100 })
+                        server:userRequest(nil, player:getId(), { 'menu', 0, 
100 })
                end
        end
 

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupNetTest/SetupNetTestApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupNetTest/SetupNetTestApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupNetTest/SetupNetTestApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupNetTest/SetupNetTestApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -167,7 +167,7 @@
 
 -- request status
 function requestStatus(self, sink)
-       self.server:request(
+       self.server:userRequest(
                function(chunk, err)
                        if err then
                                log:debug(err)
@@ -213,14 +213,14 @@
 
 
 function startTest(self, rate)
-       self.server:request(nil, self.player:getId(), { 'nettest', 'start', 
rate })
+       self.server:userRequest(nil, self.player:getId(), { 'nettest', 'start', 
rate })
        self.timer.callback()
        self.timer:restart()
 end
 
 
 function stopTest(self)
-       self.server:request(nil, self.player:getId(), { 'nettest', 'stop' })
+       self.server:userRequest(nil, self.player:getId(), { 'nettest', 'stop' })
 end
 
 

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/SetupSoundEffectsApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/SetupSoundEffectsApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/SetupSoundEffectsApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/SetupSoundEffectsApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -209,7 +209,7 @@
        -- look for any server based sounds
        if self.server then
                log:info("found server - requesting sounds list")
-               self.server:request(
+               self.server:userRequest(
                        function(chunk, err)
                                if err then
                                        log:debug(err)

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -175,7 +175,7 @@
        -- look for any server based wallpapers
        if self.server then
                log:info("found server - requesting wallpapers list")
-               self.server:request(
+               self.server:userRequest(
                        function(chunk, err)
                                if err then
                                        log:debug(err)

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -426,7 +426,7 @@
        end
 
        -- send the command
-       _server:request(sink, playerid, request)
+       _server:userRequest(sink, playerid, request)
 end
 
 -- for a given step, rerun the json request that created that slimbrowser menu
@@ -446,7 +446,7 @@
                return
        end
 
-       _server:request(step.sink, playerid, step.jsonAction)
+       _server:userRequest(step.sink, playerid, step.jsonAction)
 
 end
 
@@ -1025,6 +1025,8 @@
 
        local from, qty = step.db:missing(step.menu:isAccelerated())
        if from then
+               -- note, this is not a userRequest as the playlist is
+               -- updated when the playlist changes
                _server:request(
                                step.sink,
                                _player:getId(),
@@ -2193,7 +2195,7 @@
 
        -- showtime for the player
        _server.comet:startBatch()
-       _server:request(sink, _playerId, { 'menu', 0, 100 })
+       _server:userRequest(sink, _playerId, { 'menu', 0, 100 })
        _player:onStage()
        _requestStatus()
        _server.comet:endBatch()
@@ -2260,19 +2262,19 @@
 end
 
 
-function notify_serverDisconnected(self, server, numPendingRequests)
-
+function notify_serverDisconnected(self, server, numUserRequests)
        if _server ~= server then
                return
        end
 
        iconbar:setServerError("ERROR")
 
-       if numPendingRequests == 0 or self.serverErrorWindow then
+       if numUserRequests == 0 or self.serverErrorWindow then
                return
        end
 
        -- attempt to reconnect, this may send WOL
+       server:wakeOnLan()
        server:connect()
 
        -- popup
@@ -2308,6 +2310,7 @@
        menu:addItem({
                             text = self:string("SLIMBROWSER_TRY_AGAIN"),
                             callback = function()
+                                               server:wakeOnLan()
                                                server:connect()
                                                
appletManager:callService("setCurrentPlayer", player)
                                        end,

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SqueezeNetworkPIN/SqueezeNetworkPINApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SqueezeNetworkPIN/SqueezeNetworkPINApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SqueezeNetworkPIN/SqueezeNetworkPINApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SqueezeNetworkPIN/SqueezeNetworkPINApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -126,7 +126,7 @@
        -- make sure the server is connected
        server:connect()
 
-       server:request( checkLinkedSink, nil, cmd )
+       server:userRequest( checkLinkedSink, nil, cmd )
 end
 
 

Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/Comet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/Comet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/Comet.lua (original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/Comet.lua Fri Jul  4 
05:58:07 2008
@@ -115,7 +115,7 @@
 Notifications:
 
  cometConnected(self)
- cometDisconnected(self, numPendingRequests)
+ cometDisconnected(self)
 
 =cut
 --]]
@@ -467,7 +467,7 @@
        -- Send immediately unless we're batching queries
        if self.state ~= CONNECTED or self.batch ~= 0 then
                if self.state ~= CONNECTED then
-                       self.jnt:notify('cometDisconnected', self, 
#self.pending_reqs + #self.sent_reqs)
+                       self.jnt:notify('cometDisconnected', self)
                end
 
                return id
@@ -549,7 +549,7 @@
                self.chttp:close()
                self.rhttp:close()
 
-               self.jnt:notify('cometDisconnected', self, #self.pending_reqs + 
#self.sent_reqs)
+               self.jnt:notify('cometDisconnected', self)
        end
 end
 

Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua 
(original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/net/NetworkThread.lua Fri 
Jul  4 05:58:07 2008
@@ -246,7 +246,7 @@
        for i=1, select('#', ...) do
                a[i] = tostring(select(i, ...))
        end
-       log:info("NOTIFY ", event, ": ", table.concat(a, ", "))
+       log:info("NOTIFY: ", event, "(", table.concat(a, ", "), ")")
        
        local method = "notify_" .. event
        

Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua (original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/Player.lua Fri Jul  4 
05:58:07 2008
@@ -667,7 +667,7 @@
        log:debug("Player:call():")
 --     log:debug(cmd)
 
-       local reqid = self.slimServer:request(
+       local reqid = self.slimServer:userRequest(
                _getSink(self, cmd),
                self.id,
                cmd
@@ -683,7 +683,7 @@
        log:debug("Player:send():")
 --     log:debug(cmd)
 
-       self.slimServer:request(
+       self.slimServer:userRequest(
                nil,
                self.id,
                cmd

Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua 
(original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/slim/SlimServer.lua Fri 
Jul  4 05:58:07 2008
@@ -23,7 +23,7 @@
  serverNew (performed by SlimServers)
  serverDelete (performed by SlimServers)
  serverConnected(self)
- serverDisconnected(self, numPendingRequests)
+ serverDisconnected(self, numUserRequests)
 
 =head1 FUNCTIONS
 
@@ -288,6 +288,9 @@
                -- 'connected' = connected
                netstate = 'disconnected',
 
+               -- number of user activated requests
+               numUserRequests = 0,
+
                -- artwork state below here
 
                -- artwork http pool, initially not connected
@@ -427,6 +430,19 @@
 end
 
 
+function wakeOnLan(self)
+       if not self.mac or self:isSqueezeNetwork() then
+               return
+       end
+
+       log:info("Sending WOL to ", self.mac)
+
+       -- send WOL packet to SqueezeCenter
+       local wol = WakeOnLan(self.jnt)
+       wol:wakeOnLan(self.mac)
+end
+
+
 -- connect to SqueezeCenter
 function connect(self)
        if self.netstate == 'connected' or self.netstate == 'connecting' then
@@ -439,12 +455,6 @@
        assert(self.artworkPool)
 
        self.netstate = 'connecting'
-
-       if self.mac and not self:isSqueezeNetwork() then
-               -- send WOL packet to SqueezeCenter
-               local wol = WakeOnLan(self.jnt)
-               wol:wakeOnLan(self.mac)
-       end
 
        -- artwork pool connects on demand
        self.comet:connect()
@@ -498,7 +508,7 @@
 end
 
 -- comet is disconnected from SC
-function notify_cometDisconnected(self, comet, numPendingRequests)
+function notify_cometDisconnected(self, comet)
        if self.comet ~= comet then
                return
        end
@@ -510,7 +520,7 @@
        end
 
        -- always send the notification
-       self.jnt:notify('serverDisconnected', self, numPendingRequests)
+       self.jnt:notify('serverDisconnected', self, self.numUserRequests)
 end
 
 
@@ -982,6 +992,29 @@
 
 -- Proxies
 
+
+-- user request. if not connected to SC, this will try to reconnect and also
+-- sends WOL
+function userRequest(self, func, ...)
+       if self.netstate ~= 'connected' then
+               self:wakeOnLan()
+               self:connect()
+       end
+
+       self.numUserRequests = self.numUserRequests + 1
+
+       self.comet:request(
+               function(...)
+                       self.numUserRequests = self.numUserRequests - 1
+                       if func then
+                               func(...)
+                       end
+               end,
+               ...)
+end
+
+
+-- background request
 function request(self, ...)
        self.comet:request(...)
 end

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua?rev=2662&root=Jive&r1=2661&r2=2662&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 Fri Jul  4 05:58:07 2008
@@ -287,23 +287,25 @@
                              self:setDate(chunk.data.date)
                     end
  
-       self.server:request(sink,
-                       player:getId(),
-                       { 'date' }
-       )
-
-       -- start a recurring timer for synching to SC/SN
-       self.clockTimer = Timer(6000000, -- 1 hour
-                               function()
-                                       if self.player and self.server then
-                                               self.server:request(sink,
-                                                       self.player:getId(),
-                                                       { 'date' }
-                                               )
-                                       end
-                               end,
-                              false)
-       self.clockTimer:start()
+       -- this is a background request
+       -- FIXME this should be a subscription
+       self.server:request(sink,
+                           player:getId(),
+                           { 'date' }
+                   )
+
+       -- start a recurring timer for synching to SC/SN
+       self.clockTimer = Timer(6000000, -- 1 hour
+               function()
+                       if self.player and self.server then
+                               self.server:request(sink,
+                                                   self.player:getId(),
+                                                   { 'date' }
+                                           )
+                       end
+               end,
+               false)
+       self.clockTimer:start()
 end
 
 

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins

Reply via email to